Start at your desk. Steer from your phone.
gmux runs coding agents — and any long-running command — in persistent sessions across your machines, aggregated into one live dashboard. Watch every agent, attach a full terminal to any session from any device, and get notified the moment one needs you.
No Electron, no desktop app, no tmux underneath. Two small Go binaries and a web UI.
![]() |
![]() |
brew install gmuxapp/tap/gmux # macOS
curl -sSfL https://gmux.app/install.sh | sh # LinuxOr download a binary from GitHub Releases.
gmux -- pi # launch a coding agent
gmux -- npm run dev # or any long-running command
gmux -d -- make build # detached; prints the session id
gmux open # open the dashboardThe daemon starts automatically on first use; there's nothing else to set up. Click a session to attach a live terminal — xterm.js, the same emulator that powers VS Code. Getting started →
- Agents report their own state — pi, Claude Code, and Codex get a small hook injected at launch and report their conversation, title, and active/idle state themselves. No output scraping. Integrations →
- Built for orchestration — a machine-oriented CLI (
gmux agent,gmux wait,gmux ls --json, tmux-compatiblesend-keys) with stable exit codes, so scripts and agents can drive other agents. Orchestrating agents → - Full terminal, anywhere — persisted scrollback that replays on reconnect, flicker-free session switching, find-in-terminal, and a phone UI that's actually usable. Using the UI →
- Sessions outlive processes — exit codes and terminal history stick around; agent conversations resume, other commands re-run. Sessions →
- Multi-machine — connect hosts with token-authenticated peering and see every machine's sessions in one sidebar; devcontainers are discovered automatically. Multi-machine →
- Remote access built in —
gmux remoteserves the dashboard over your tailnet with HTTPS, no ports to open. Remote access → - Editor tabs —
gmux edit <file>works as$EDITOR, sogit commitinside a session opens a managed tab and blocks until you're done.
gmux composes into scripts and agent workflows:
id=$(gmux agent prompt --new --no-wait 'refactor the auth module') # launch, capture the id
gmux wait "$id" # block until the turn ends, print the exchange report
gmux tail -n 50 "$id" # read the plain-text terminal tailSee Orchestrating agents and the CLI reference.
Full documentation lives at gmux.app: architecture, configuration, security model, devcontainers, running in Docker, changelog, and more.
Questions, feedback, show & tell: Discord · GitHub Issues
pnpm install # JS dependencies
pnpm dev # start all services with watch/HMRSee CONTRIBUTING.md for prerequisites, workspace layout, and how the pieces fit together.
MIT

