A typed CLI, SQLite-backed persistence, project workspaces, vendored TPM,
and a glassy Bootstrap 5 web UI — all wired into one
dmux command. No daemon. No magic. No replacement for tmux.
dmux is the missing control plane: it doesn't replace tmux, it makes the daily friction disappear.
dmux save captures every
session/window/pane (cwd, command, layout). dmux restore
rebuilds them — even after a crash.
.dmux/layout.json per repo root. Walk in, restore, get the
same layout you left.
~/.tmux.conf is a wall of set -g @plugin.#{status-left:…} for you and writes it back to
plugins.tmux.
/api/v1/sessions, /api/v1/plugins/source,
snapshots, layouts — all curl-able.
Built on libtmux, Typer, and Flask. Type-checked, tested, and small enough to read in an afternoon.
List, create, attach, rename, kill from one CLI. Smart attach uses
switch-client inside tmux, attach outside.
dmux save snapshots every session/window/pane to SQLite
under ~/.local/share/dmux/. Survives reboots.
.dmux/layout.json per repo root. Walk into a project, restore,
get the same windows and panes you left behind.
dmux pick jumps to any session, window, or pane via stdlib
difflib. No fzf, no extra binaries.
Bootstrap 5, dark/light theme with no-flash init, glassmorphic topbar, live pane mosaic, fuzzy filter. Ships under 1 MB.
TPM is vendored. dmux plugins bootstrap writes
~/.config/dmux/plugins.tmux and hooks
~/.tmux.conf for you.
Segment-table editor for Freed-Wu/tmux-status-bar. Builds JIT
#{status-left:…} templates and writes them back live.
Every UI action is a documented endpoint under /api/v1/.
Build dashboards, hooks, or shell scripts on top.
Mypy-clean public surface (py.typed) and a 32-test smoke
suite covering CLI, API, plugin manager, and snapshots.
dmux ui --open launches a Bootstrap 5 dashboard on
127.0.0.1. Sticky glassmorphic topbar with an animated live
pulse. Sidebar with fuzzy filter and per-session counts. Pane mosaic with
hover lift and corner status dots. Dedicated theme toggle, persisted
across reloads.
plugins.tmux editor (CodeMirror)The CLI is the source of truth — the web UI just calls the same primitives.
curl-able.The web UI doesn't have any private hooks — it talks to the same documented endpoints you can. Build dashboards, hooks, or shell scripts on top.
{"name": "work"}.
plugins.tmux & tmux.conf, then refresh-client (TPM-style live reload).
Python 3.10+ and tmux 3.2+. macOS or Linux. PyPI release lands soon — for now install from source.
It's the cheapest way to fund more work. Got an idea, a bug, or a plugin request? Open an issue — discussions stay short and friendly.