Skip to content
tmux-ide

CLI reference

The supported tmux-ide commands and flags in 2.9.0-beta.18

This page follows the public surface printed by tmux-ide --help in 2.9.0-beta.18. --json is available on the scripting commands that explicitly list it below; interactive commands do not emit JSON.

Open tmux-ide

CommandWhat it does
tmux-ideOpen 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 --detachableHost the app in _tmux-ide-app; Ctrl+Q detaches and the viewer survives
tmux-ide app --hostedAlias for --detachable
tmux-ide team [--json]Open the classic fleet cockpit, or print fleet state as JSON
tmux-ide --teamForce the classic fleet cockpit for a bare invocation

app.detachable in ~/.tmux-ide/config.json makes detachable mode the default.

Sessions and recovery

CommandWhat 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

CommandWhat it does
tmux-ide setupOpen the interactive setup wizard
tmux-ide setup --editOpen the config tree editor
tmux-ide settingsOpen 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] --writeWrite 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

CommandWhat it does
tmux-ide integration install claudeInstall Claude Code lifecycle hooks and refresh the bundled Claude skill
tmux-ide integration install opencodeInstall 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.

Claude integration status distinguishes registration, script freshness and user-settings readiness from runtime delivery. Check /hooks in the affected Claude session, then use tmux-ide agent explain <pane> --json on that machine to inspect its actual state stamp. Project or managed settings may override user settings. Repair preserves unrelated hooks and an explicit disableAllHooks preference. Permission/input notifications report blocked; idle notifications do not override a completed turn.

Adopt ordinary tmux sessions

CommandWhat it does
tmux-ide adopt <session>Add tmux-ide's server-side status bar and agent tracking
tmux-ide adopt --allAdopt 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 cheatsheetPrint 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.

Saved SSH machines

CommandWhat it does
tmux-ide machines ls [--json]List saved machine profiles
tmux-ide machines export [--json]Print the portable profile registry
tmux-ide machines import <file> [--write] [--json]Preview an add-only import, then save explicitly with --write
tmux-ide machines add <alias> [--write] [--json]Preview or save an SSH target
tmux-ide machines start <alias> [--write] [--json]Preview or explicitly start the already-installed remote daemon

Profiles do not grant SSH access or copy credentials. Review aliases on the receiving computer before applying an import. An ordinary SSH connection expects the remote daemon to be running; package installation remains explicit.

Worktrees

CommandWhat 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

CommandWhat 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

CommandWhat it does
tmux-ide update [--dry-run] [--json]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

Prerelease installs follow the beta channel; stable installs follow latest. Automatic updates require a verified npm, pnpm or Bun global installation and a matching active package-manager destination. Homebrew, Yarn, npx, development checkouts and unknown origins receive instructions for their installation method. A dry run reports the plan without installing or synchronizing skills.

Daemon and server entry points

These are integration surfaces for process hosts, not the normal way to open the app.

CommandWhat it does
tmux-ide --headless [--port <N>] [--json]Own the canonical daemon in the foreground without opening tmux or a TUI
tmux-ide daemon reserve-supervisor <id> [--json]Explicitly reserve a stopped daemon namespace before installing a supervisor
tmux-ide --headless --supervised <id>Run the foreground owner only with a matching preinstalled reservation
tmux-ide daemon release-supervisor <id> --yes [--json]Release the reservation after removing the service and proving its owners stopped
tmux-ide daemon restart [--json]Reset the existing daemon runtime in its supervising process; preserve tmux panes
tmux-ide daemon info [--json]Identity, supervisor and actual log destination of the daemon; labels stale logs
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

FlagMeaning
-h, --helpPrint built-in help
-v, --versionPrint the installed version
--verboseLog tmux commands; TMUX_IDE_DEBUG=1 is equivalent
--jsonRequest structured output where the command lists JSON support
--headlessRun only the canonical daemon in this process

Command-specific flags are documented with their command above.

Restart versus upgrade

tmux-ide daemon restart --json replaces the runtime generation inside the existing daemon process. It preserves the listening configuration, process PID and tmux sessions, and verifies the replacement identity. It does not load newly installed code. A missing daemon is an error.

tmux-ide restart instead stops and relaunches a tmux session, including its pane commands.

Identity and log provenance

tmux-ide daemon info --json reports the current daemon instance id, version, pid and liveness, how it was launched (manual, launchd, systemd or embedded in a host) and where its stdout/stderr actually go. The destination is stamped into the daemon record by the running process at startup, so the report does not guess from file names. Any other log-like file discovered under the state home is listed with its last write time and the pid it mentions, labeled historical or unattributed; only the live destination is current. The report never contains the auth token. tmux-ide doctor shows the same summary as one row.

Upgrade the local daemon

tmux-ide update --daemon starts or upgrades the local daemon to the installed version, preserving tmux sessions. Add --if-running to leave fresh installs idle, and --json for structured status. This command does not update a remote machine; install the beta there or run the command in its shell.