A terminal multiplexer provides separation between where a shell is running and where the shell is accessed. Each shell can be running on a different computer, but to the developer it does not matter where each shell is being executed.
For example, a developer could have many shells running within a terminal, like the following screenshot.
The above terminal window is using the tmux terminal multiplexer implementation with two windows and three panes.
Developers gain greater control over the usage of their shells by working with a terminal multiplexer.
Shells are typically executed locally on a computer but terminal multiplexers allow one or more virtual shells to be run within a single terminal. Shells can also be left running within the multiplexer and attached to again from a different machine.
Terminal multiplexers are used by developers to run many virtual shells within a single terminal. These shells can be run via a mix of local, remote, containerized and virtualized resources. The shells can also be persisted and moved while running from one computer to another.
Many terminal multiplexer implementations exist, including:
byobu
Pymux (source code) is a terminal multiplexer implementation written in Python that clones the functionality of tmux. Like tmux and Screen, Pymux makes it easier for programmers to use many shells within a single terminal window during development.
Terminal multiplexers provides a wonderful overview of the subject, including the history of various implementations and why you would want to use one for development.
Terminal multiplexer commands is a comparison of equivalent key command in the two most popular implementations, tmux and screen.
Byobu vs. GNU Screen vs. tmux — usefulness and transferability of skills gives solid answers on this (now closed) question of the usefulness of the major terminal multiplexer implementations.