network-manager runs as root and does the network configuration, based on instructions coming over a D-Bus API. Clients nmcli, nmtui, nm-applet, nm-connection-editor, and the KDE and Gnome desktop clients. The configuration as well as hooks can be done through dispatcher scripts. Also plugins are possible, e.g. VPN.
Configuration is stored in text files that are read in by distro-specific backends, e.g. /etc/network/interfaces. nmcli allows you to configure network-manager from scripts, or interactively with a libedit interface. nmtui is a menu-driven text interface using newt.
Passwords e.g. for WPA can be stored system-wide or on request. On request means that NM issues a D-Bus request to get the password. nmtui and nmcli support this way of providing the password.
Dispatcher scripts are an easy way to hook into changes of the network. Since 1.0 they are also run for