termdock_

panes that outlive the terminal

termdock

Split a terminal into panes, run several shells side by side, then walk away — the session keeps running and you pick it up later, from another terminal or another machine. Written from scratch in Go: its own ptys, its own VT100 emulator, no tmux and no screen underneath.

Latest release CI status Downloads MIT license

Why termdock

The everyday work of a multiplexer — splitting, switching, detaching, coming back — done without a plugin manager, a config file you have to write first, or anything else installed alongside it.

Detach and it keeps going

The session lives in a daemon, not in your terminal. Close the window, drop the SSH link, reboot your laptop — reattach and everything is where you left it.

Nothing underneath

Not a wrapper around tmux. It drives the pseudo-terminals itself and emulates VT100 with scrollback for every pane, in one static binary.

Batteries included

Eleven colour themes, a git segment, pane logging, session persistence — compiled in. tmux wants a plugin manager and four plugins for the same list.

Configure it while it runs

Every setting is editable from inside a live session and takes effect immediately — saved back to your config only when you ask.

Beyond splitting a terminal

Things tmux either doesn't do, or needs a plugin for — here they're just a keypress away.

Fuzzy jump picker
Ctrl-B w. Type to filter every window and pane in the session, with a live minimap of the one you're about to jump to — so you pick by what's in a pane, not by remembering its number.
Live pane overview
Ctrl-B g. Every pane in the whole session at once, as a grid of live thumbnails. Arrow to one and press enter, or just click it.
Survives a reboot
Layout and each pane's working directory are snapshotted continuously and rebuilt next launch — no plugin. A session that ends on purpose cleans up after itself; only a crash leaves one to recover.
Floating popup
Ctrl-B P. A scratch terminal over whatever you were looking at. Hiding it doesn't kill it — the shell inside carries on, and comes back exactly as you left it.
Reopen a closed pane
Ctrl-B Z. Brings back the pane you just closed — same window, same working directory — however it went: x, or an exit typed into the wrong one. In tmux a closed pane is simply gone.
Name your panes
Ctrl-B . Six panes all called "bash" tell you nothing. Give one a name and it wins over the process name, shows up in the jump picker, and survives a crash.
Type into the panes you choose
Ctrl-B y, or space in the overview to pick exactly which. tmux's synchronize-panes is all-or-nothing over a window — the pane you need to keep out has to be moved elsewhere first.
Saved layouts
termdock layout save dev / apply dev. Windows, splits, ratios, names and each pane's directory, rebuilt on demand — the job people currently leave for tmuxinator and a YAML file.
Crash recovery that remembers
Layout, working directories and the last 200 lines of each pane, snapshotted continuously. You reopen looking at the stack trace you were reading. tmux needs tmux-resurrect for the layout alone, and even that brings back nothing of the contents.

Each of these is explained properly in the manual — getting started, shell integration, working in it all day, configuration, remote & sharing, every key — or keep the one-page cheatsheet next to you.

In action

Splitting, the live overview, the settings screen, a theme changed mid-session, search across scrollbacks, the popup, the jump picker — then detaching and picking it straight back up.

A termdock session: three named panes, a failed command's exit status shown on its pane title, the session retheme'd live from a command prompt, the settings screen, every pane previewed at once, the jump picker's live minimap, every command the session has run with how it ended, the same commands on a shared timeline, zooming one pane, closing a pane and taking it back, then detaching with the work still running

Dracula theme, git branch in the status bar. Everything shown is a keypress from a fresh install.

Installation

Native packages for linux, archives for macOS, both amd64 and arm64 — built and published straight from the tag.

# Debian, Ubuntu, Mint — grab the asset from the latest release
$ sudo apt install ./termdock_<version>_linux_amd64.deb

Filenames carry the version — copy the exact link from the latest release. Then run termdock; Ctrl-B ? lists every key there is. The packages also drop a commented example config at /usr/share/doc/termdock/termdock.conf.example — though you never have to write one by hand.

Every key, one prefix

Everything sits behind Ctrl-B, as in tmux. The full reference is in the app at any time with Ctrl-B ? — and it's generated from your actual bindings, so it stays true if you rebind anything.

KeysWhat happens
Ctrl-B ?The whole keybinding reference — start here
Ctrl-B v / sSplit the pane side by side, or stacked
Ctrl-B ←↓↑→Move the focus; keep pressing arrows to keep going
Ctrl-B zZoom the active pane full screen, and back
Ctrl-B cNew window
Ctrl-B wFuzzy-jump to any window or pane, with a preview
Ctrl-B gLive overview of every pane in the session
Ctrl-B /Search every pane's scrollback at once
Ctrl-B [Copy-mode: scroll, select, yank to the system clipboard
Ctrl-B CSettings — change any of them live
Ctrl-B PThe floating popup terminal
Ctrl-B SSwitch to another session without detaching
Ctrl-B uPick a URL or path off the screen, straight to the clipboard
Ctrl-B dDetach — the session carries on without you

Coming back later is termdock ls to see what's still running, then termdock attach -t main.