nomograph/muxr

Tmux session manager for AI coding workflows

One command to open a session, one keybind to switch between them. Organizes work into verticals and remotes. Saves and restores across reboots.

cargo install muxr
sessions
verticals + remotes
local dirs + SSH hosts
persistence
save/restore
survives reboots
isolation
server per context
no cross-contamination
language
Rust
MIT licensed
The thesis

Terminal sessions should be organized, not accumulated.

You work across multiple projects. Each one needs its own terminal session with the right working directory and the right tool running. Tabs pile up. You cd around. You lose track. When you reboot, everything is gone. muxr makes sessions declarative: where they live, what tool runs in them, how they're grouped.

How it works

One config file declares your session topology. Verticals are local directory trees. Remotes are SSH hosts. Each session knows its working directory and default tool.

Verticals

Group sessions by directory tree. muxr work api opens a session in ~/projects/work/api. The vertical name is the prefix, the session name is the subdirectory.

Remotes

SSH hosts as first-class sessions. muxr remote lab opens a session that connects to your configured host. Same TUI switcher, same save/restore.

Save and restore

muxr save snapshots all active sessions. muxr restore brings them all back after a reboot. No manual reconstruction.

Server isolation

Run separate tmux servers per context. Demo recordings, CI scripts, and production sessions never interfere with each other. MUXR_TMUX_SERVER=demo for isolation.

Pre-create hooks

Run commands when a session is created. rune sync on session start ensures skills are current before the agent begins work. Hooks are per-vertical.

TUI switcher

muxr switch opens a picker across all sessions, all verticals, all remotes. One keybind in your tmux config. No more hunting for the right tab.

Commands

muxr initcreate config
muxr <vertical> <name>open session
muxr switchTUI picker
muxr savesnapshot all sessions
muxr restorebring them all back
muxr lslist active sessions
muxr kill <session>close a session
muxr statustmux server health