CLI reference
The supported tmux-ide commands and flags in 2.9.0-beta.8
This page follows the public surface printed by tmux-ide --help in
2.9.0-beta.8. --json is available on the scripting commands that explicitly
list it below; interactive commands do not emit JSON.
Open tmux-ide
| Command | What it does |
|---|---|
tmux-ide | Open the visual app when no workspace config is present; launch the project layout when one is present |
tmux-ide <path> | Open or launch from a particular directory |
tmux-ide start [path] | Explicitly launch the declarative project layout |
tmux-ide app [session] | Open Home, or bypass Home and open a live session |
tmux-ide app --detachable | Host the app in _tmux-ide-app; Ctrl+Q detaches and the viewer survives |
tmux-ide app --hosted | Alias for --detachable |
tmux-ide team [--json] | Open the classic fleet cockpit, or print fleet state as JSON |
tmux-ide --team | Force the classic fleet cockpit for a bare invocation |
app.detachable in ~/.tmux-ide/config.json makes detachable mode the default.
Sessions and recovery
| Command | What it does |
|---|---|
tmux-ide init [--template <name>] [--json] | Scaffold .tmux-ide/workspace.yml; auto-detect the stack unless a template is named |
tmux-ide stop [session] [--json] | Kill the resolved project session or the named session |
tmux-ide restart [session] [--json] | Stop and relaunch the session |
tmux-ide attach [session] [--json] | Reattach to a running session |
tmux-ide ls [--json] | List tmux sessions |
tmux-ide status [session] [--json] | Show session status |
tmux-ide restore [--dry-run] [--run-commands] [--resume-agents] [--json] | Rebuild the fleet from the last snapshot |
Restore does not replay recorded commands unless --run-commands is present.
--resume-agents uses captured conversation IDs and each supported agent's
native resume command. See Restore & resume.
Inspect and edit a workspace
| Command | What it does |
|---|---|
tmux-ide setup | Open the interactive setup wizard |
tmux-ide setup --edit | Open the config tree editor |
tmux-ide settings | Open the standalone config manager |
tmux-ide inspect [path] [--json] | Show the effective config and live runtime state |
tmux-ide doctor [--json] | Check the local installation and requirements |
tmux-ide validate [path] [--json] | Validate the resolved workspace config |
tmux-ide detect [path] [--json] | Detect the project stack and show a suggested layout |
tmux-ide detect [path] --write | Write the detected layout to .tmux-ide/workspace.yml |
tmux-ide migrate [path] --dry-run [--json] | Preview migration from legacy ide.yml |
tmux-ide migrate [path] --write [--json] | Create .tmux-ide/workspace.yml from ide.yml |
tmux-ide config [--json] | Print the resolved launch projection |
tmux-ide config set <path> <value> | Set a workspace value by dot path |
tmux-ide config add-pane --row <N> --title <T> [--command <C>] [--size <percent>] | Add a pane |
tmux-ide config remove-pane --row <N> --pane <M> | Remove a pane |
tmux-ide config add-row [--size <percent>] | Add a row containing a shell pane |
Row and pane indexes are zero-based. Config mutations preserve WorkspaceConfigV1 and refuse legacy-only fields rather than silently losing them.
Agent awareness and coordination
| Command | What it does |
|---|---|
tmux-ide integration install claude | Install Claude Code lifecycle hooks and refresh the bundled Claude skill |
tmux-ide integration install opencode | Install session-ID capture for future opencode sessions |
tmux-ide integration uninstall <claude|opencode> | Remove only tmux-ide's integration entries |
tmux-ide integration status [--json] | Show discovered agents, integration state, and resume-ID capture |
tmux-ide agent explain <pane|session> [--json] | Explain exactly how an agent state was classified |
tmux-ide send <target> <message> [--no-enter] [--json] | Type into a pane selected by ID, title, semantic name, or supported legacy role |
tmux-ide send --to <target> <message> [--no-enter] [--json] | Equivalent explicit target form |
tmux-ide events [--follow] [--json] | Read recent agent-state transitions or follow them |
tmux-ide events --follow --socket[=<path>] | Follow pushed events from a running control server |
tmux-ide wait agent-status <session> --status <state> [--timeout <ms>] [--json] | Wait for a session status; exit 0 on match and 1 on timeout |
tmux-ide wait output <pane|session> --match <regex> [--timeout <ms>] [--json] | Wait until visible pane output matches |
tmux-ide serve [socket-path] | Run the foreground, owner-only local NDJSON control socket |
serve defaults to ~/.tmux-ide/control.sock. The wait commands use it when
requested and otherwise fall back to direct polling.
Adopt ordinary tmux sessions
| Command | What it does |
|---|---|
tmux-ide adopt <session> | Add tmux-ide's server-side status bar and agent tracking |
tmux-ide adopt --all | Adopt every live non-internal session |
tmux-ide unadopt <session> | Remove tmux-ide chrome without killing the session |
tmux-ide switcher [--client <name>] | Open the compact session picker |
tmux-ide cheatsheet | Print the complete key sheet |
tmux-ide menu [--client <name>] | Open the contextual tmux actions menu |
tmux-ide popup <explorer|changes|config> | Open a widget in a tmux popup |
tmux-ide sidebar-toggle [--session <name>] | Toggle the app navigation column |
See The dock & keys for the matching tmux bindings.
Worktrees
| Command | What it does |
|---|---|
tmux-ide worktree create <branch> [--from <ref>] [--dir <path>] [--no-session] | Add a worktree and, by default, open an adopted session in it |
tmux-ide worktree open <branch> | Open or switch to the worktree's session |
tmux-ide worktree list [--json] | Join git worktrees with their live session status |
tmux-ide worktree remove <branch> [--force] | Remove the worktree, then kill only its derived session |
Removal refuses a dirty worktree unless --force is explicit.
Rich pane content
| Command | What it does |
|---|---|
tmux-ide show <file> | Select Markdown or raster-image rendering from the file type |
tmux-ide widget markdown [file] | Render Markdown from a file or stdin |
tmux-ide widget image <file> | Render PNG, JPEG, GIF, WebP, or AVIF content |
tmux-ide widget card [file] | Render the structured card JSON contract from a file or stdin |
File-backed widgets refresh when their source changes. Ctrl+C restores the
ordinary terminal surface.
Updates
| Command | What it does |
|---|---|
tmux-ide update [--dry-run] | Update according to the detected install method, or print the plan |
tmux-ide update --tui-binary [--json] | Download and verify the matching compiled OpenTUI runtime |
tmux-ide update --manifests [--json] | Refresh the agent-detection manifest pack; local overrides still win |
tmux-ide skill-sync [--json] | Refresh the managed Claude Code skill in ~/.claude/skills/tmux-ide |
Daemon and server entry points
These are integration surfaces for process hosts, not the normal way to open the app.
| Command | What it does |
|---|---|
tmux-ide --headless [--port <N>] [--json] | Own the canonical daemon in the foreground without opening tmux or a TUI |
tmux-ide command-center [--port <N>] | Start the command-center HTTP API (default port 4000) |
tmux-ide server [--port <N>] | Deprecated loopback-only PTY server; use --headless |
The headless owner publishes ~/.tmux-ide/daemon.json with owner-only
permissions. A host should wait until both /identity matches that record and
/health reports a compatible protocol before considering the child ready.
Stop it with SIGINT or SIGTERM; do not wrap it in a second daemonizer.
Global flags
| Flag | Meaning |
|---|---|
-h, --help | Print built-in help |
-v, --version | Print the installed version |
--verbose | Log tmux commands; TMUX_IDE_DEBUG=1 is equivalent |
--json | Request structured output where the command lists JSON support |
--headless | Run only the canonical daemon in this process |
Command-specific flags are documented with their command above.