The tuimote CLI talks to the running server. It follows a
tuimote <subject> <verb> shape; every command and flag
below is also available as --help on the command itself. This page
is generated from the CLI's own command tree, so it always matches the binary
it shipped with.
Accepted by every command:
--pretty--humantuimote sessionTalk to other agent sessions, and drive individual ones
Send messages, read screens, start/stop, attach, and ask questions.
tuimote session lsList sessions as a compact table
Filter with --running, --agent, --cwd. --json (or --pretty) dumps the raw array instead.
--agent <AGENT>--cwd <CWD>--running--json--pretty/--human (which also pretty-print it)tuimote session startStart a new session, or resume one with --session
tuimote session start --cwd DIR --agent claude [-m "first message"] [--pin]
--cwd <CWD>--agent <AGENT>--session <SESSION>-m, --message <MESSAGE>--pintuimote session stopKill a session's tmux pane
<SESSION>tuimote session archiveArchive a session (soft delete — recover it from `stash`)
Pass a <slug> shorthand, or the explicit --agent/--session[/--cwd].
[SLUG]--agent <AGENT>--session <SESSION>--cwd <CWD>tuimote session deleteDelete a session permanently
Pass a <slug> shorthand, or the explicit --agent/--session[/--cwd].
[SLUG]--agent <AGENT>--session <SESSION>--cwd <CWD>tuimote session copyConvert a session to a different harness. [experimental]
tuimote session copy <slug> --to codex
[SLUG]--cwd <CWD>--session <SESSION>--from <FROM>--to <TO>tuimote session sendSend a message to a session's composer
tuimote session send <target> your message here
With no target it goes to this repo's pinned session (resuming it if dead). Waits until the keys actually land at a ready agent.
[SESSION][TEXT]…--from <FROM>--raw--gentlytuimote session viewRead what's on a session's screen (read-only)
--lines N, --full, --ansi. No target = this repo's pinned session.
[SESSION]--lines <LINES>--full--ansituimote session attachAttach to a session's tmux
No target = this repo's pinned session (resuming it if dead).
[SESSION]tuimote session unpinClear a repo's entrance pin (inverse of `repo pin`)
With a <target> clears that session's repo; else --cwd, else this session's own repo.
[TARGET]--cwd <CWD>tuimote session keysSend raw control keys to a session (C-c, Escape, Enter, arrows…)
tuimote session keys <target> C-c
Keys land verbatim — no text, no trailing Enter. Use send to type a message. Accepts tmux names (C-c, Escape, Tab), C-<letter>, or escapes (\x03, \e, \r). Multiple keys are sent in order.
[SESSION]chat). A first word that doesn't resolve is treated as the first key (pinned session used)[KEYS]…tuimote session imageAttach an image to a session
tuimote session image <target> path/to.png [--caption "…"]
PNG/JPEG/GIF/WebP only. Uploads the file and types its path in the harness's own vision syntax.
<SESSION>chat)<PATH>--caption <CAPTION>--no-submittuimote session transcriptPrint a session's transcript
Pass a <slug> shorthand. --mode picks the format (default no-tools).
[SLUG]--agent <AGENT>--session <SESSION>--cwd <CWD>--mode <MODE>tuimote session stubGenerate or refresh a session's one-line summary stub
Pass a <slug> shorthand, or the explicit --agent/--session pair.
[SLUG][TEXT]…--agent <AGENT>--session <SESSION>--file <FILE>tuimote session requestAsk a session a question and wait for its reply
tuimote session request <target> your question here
Blocks until it answers. --keep leaves the session running; --stop kills it after; without either it may auto-compact.
[TARGET][TEXT]…--agent <AGENT>--compact-at <COMPACT_AT>--tokenlimit <TOKENLIMIT>--no-compact--keep--stop--from <FROM>--rawtuimote session replyReply to the request waiting on this pane. (Agent side)
Pass a file path (preferred), inline text, or pipe the reply on stdin.
[PATH]…--file <FILE>tuimote session self-compactCompact your own context, then resume where you left off
Run from inside a session pane, or pass --session.
[TEXT]…--session <SESSION>tuimote session summaryWrite or deliver a single-session summary. [experimental]
tuimote session summary requestAsk a session to write and deliver its own summary
--archive stops and archives it once the summary lands.
<SESSION>--archivetuimote session summary deliverRecord a summary you generated. (Agent side)
--session <shorthand> alone is enough; the other flags cover dead-session delivery.
[TEXT]…--session <SESSION>--agent <AGENT>--cwd <CWD>--tmux <TMUX>--archive--file <FILE>tuimote repoPer-repo settings: entrance pin, memory, dashboard card, wiring
tuimote repo initWire tuimote into a repo and/or install the /tuimote skill
Defaults to --repo on the current directory.
--repo--global--cwd <CWD>tuimote repo customizeRestyle this repo's dashboard card (emoji, icon, name, color)
Only the flags you pass change. --icon-svg takes a file path (read inline; must be <20 KB and script-free).
--emoji <EMOJI>--icon-svg <ICON_SVG>--alt-name <ALT_NAME>--subtitle <SUBTITLE>--color <COLOR>--clear--cwd <CWD>tuimote repo pinPin a session as this repo's entrance point (one per repo)
tuimote repo pin <target>
Pinned sessions skip idle auto-stop and are the default target for send/view/attach/request. No target prints the pin; --clear removes it.
[TARGET]--clear--cwd <CWD>tuimote repo migrateHand this repo's pinned session over to a fresh one (any harness)
tuimote repo migrate --agent codex
The old session writes a handoff, a new one boots reading it and inherits the pin, and the old one is archived.
--agent <AGENT>--cwd <CWD>tuimote repo historyAdd a dated entry to this repo's HISTORY.md
Reads from stdin, --file, or positional text.
[TEXT]…--cwd <CWD>--file <FILE>tuimote repo stubsGenerate one-line stubs for all of this repo's sessions
--cwd <CWD>--agent <AGENT>--session <SESSION>--force--missing-only--limit <LIMIT>--concurrency <CONCURRENCY>--model <MODEL>--timeout <TIMEOUT>tuimote repo supercompactFold session summaries into repo memory. [experimental]
tuimote repo supercompact startSpawn the supercompaction agent for a repo
--cwd <CWD>--agent <AGENT>--archivetuimote repo supercompact deliverDeliver the supercompaction report. (Agent side)
Pipe it, or use --file / positional text. --archive also stops and archives every other session in the directory.
[TEXT]…--cwd <CWD>--archive--session <SESSION>--dry-run--file <FILE>tuimote repo multisummaryCurate and batch-summarize this repo's sessions. [experimental]
tuimote repo multisummary startSpawn the multisummary curation agent
--cwd <CWD>--agent <AGENT>--converttuimote repo multisummary decideCommit the curation verdict (archive rejects, summarize keepers)
--cwd <CWD>--session <SESSION>--keep <KEEP>--archive <ARCHIVE_SLUGS>--converttuimote repo multisummary deliverDeliver the multisummary receipt. (Agent side)
[TEXT]…--cwd <CWD>--session <SESSION>--file <FILE>tuimote repo contextPrint this repo's memory playbooks (HISTORY, STATE, NEXT)
state or next prints just that one file (raw, pipeable). To append to HISTORY use repo history instead.
[WHAT]--cwd <CWD>tuimote configServer config: Claude account profiles and the web-UI password
tuimote config profileClaude account profiles. With no verb, lists them
tuimote config profile lsList the available profiles and the active one
tuimote config profile switchSwitch the active Claude account profile
<ID>tuimote config profile addAdd a Claude account profile
--label and --bin are required. --id is derived from the label when omitted; --credentials-command sets an optional refresh command.
--label <LABEL>--bin <BIN>--id <ID>--credentials-command <CREDENTIALS_COMMAND>tuimote config profile removeRemove a Claude account profile by its id
<ID>tuimote config passwordSet the web-UI password (how you secure a networked server)
Pass it as an argument, or omit it to be prompted / read it from stdin.
[PASSWORD]tuimote config lsList every setting and its current value
--json emits a {key: value} object.
--jsontuimote config getPrint one setting's value (bare; `--pretty`/`--human` emit JSON)
<KEY>tuimote config setChange one setting
tuimote config set fontFamily custom
The value is coerced to the key's type (bool, int, or comma-separated list). Only that one field changes.
<KEY><VALUE>tuimote serverControl this tuimote server: usage, logs, restart
tuimote server usageShow server usage statistics
tuimote server logsShow the most recent server log lines
--follow--errtuimote server restartRestart the server in place (same binary, no rebuild)
--scope uses the network-scope-staleness recovery path.
--scopetuimote serviceInstall tuimote as a background OS service
Generates and manages a launchd agent (macOS) or systemd --user unit (Linux). Runs as your user, in $HOME. Use setup for a guided install.
tuimote service installWrite the OS service file (doesn't start it)
Run service load afterwards to start it. Idempotent overwrite.
--bin <BIN>tuimote-server binary the service should run. Defaults to the sibling of this CLI binarytuimote service uninstallStop (if running) then remove the OS service file
tuimote service loadStart the service and enable start-at-boot
tuimote service unloadStop the service (leaves the file in place)
tuimote service statusReport whether the service is installed and running
--jsontuimote peersFederation: manage the other tuimote servers on your network
Add/remove peers, toggle them, wake a sleeping one (Wake-on-LAN), flip mDNS discovery, and set the shared pairing secret.
tuimote peers lsList peers and the current discovery config
tuimote peers addAdd or update a peer
tuimote peers add host[:port] --cert-fingerprint SHA256 [--label NAME]
<PEER>host or host:port--label <LABEL>--mac <MAC>aa:bb:cc:dd:ee:ff, any separator)--cert-fingerprint <CERT_FINGERPRINT>tuimote peers ls on the peer--transport <TRANSPORT>direct or ssh) --ssh-target <SSH_TARGET>tuimote peers removeRemove a static peer
mDNS-discovered peers reappear on the next browse.
<PEER>host or host:porttuimote peers toggleEnable or disable a peer (flips its state)
<PEER>host or host:porttuimote peers wakeSend a Wake-on-LAN packet to a peer's configured MAC
<PEER>host or host:porttuimote peers discoveryTurn mDNS discovery on or off
tuimote peers discovery on
<STATE>on or offtuimote peers secretSet the shared pairing secret (never echoed back)
<VALUE>"" to clear)tuimote artifactRegister files to show in this repo's terminal document reader
Handles markdown, HTML, LaTeX, LilyPond, Mermaid, and images. Run from inside a session pane; the repo defaults to the one you're in.
tuimote artifact addRegister a file to show in the reader
tuimote artifact add PATH [--folder GROUP]
PATH is relative to the repo root. A malformed file is rejected with the linter's error.
<PATH>--folder <FOLDER>tuimote artifact removeUnregister an artifact
<PATH>tuimote artifact lsList the registered artifacts
tuimote artifact annotationsShow a user's staged notes on an artifact as a rewrite prompt
No path lists every file with staged notes. --clear discards them.
[PATH]--cleartuimote artifact tabsManage reader groups (the reader's tabs)
tuimote artifact tabs lsList the configured tabs
tuimote artifact tabs addCreate a tab (or add cwds to an existing one of the same name)
<NAME>--cwd <CWD>tuimote artifact tabs removeRemove a tab by name
<NAME>tuimote panelAuthor and check dock panels (the right-edge plugin pages)
verify lints a panel .js file against the rules discovery enforces before a panel is allowed to load.
tuimote panel verifyLint a panel .js file against the registration rules
tuimote panel verify path/to/panel.js
Exits non-zero if any error-severity rule fails and prints the rule, line, and fix. Warnings and info never block.
<FILE>.js file--kind <KIND>repo enforces the sidecar allowlist rules--jsontuimote panel lsList the dock panels available in this repo
Built-in + user-global + repo-local, with their trust/valid state.
tuimote panel trustAllow this repo's local panels to load
Pass a repo path, or omit it for this session's repo. --revoke withdraws the grant.
[CWD]--revoketuimote stashRestore or purge archived and trashed sessions
archive and delete move sessions here. List them, then restore, re-trash, or purge one by its key — or empty the trash.
tuimote stash lsList archived + trashed sessions (compact table; `--json`/`--pretty` for the raw `{archive, trash}` object)
--json--pretty/--humantuimote stash restoreRestore a stashed session back to live (archive→live or trash→live), by its key (the `<kind>/<agent>/<rel>` path from `stash ls`)
<ID>tuimote stash retrashMove an archived session to trash, by its key
<ID>tuimote stash purgePermanently delete one trashed session, by its key
<ID>tuimote stash emptyEmpty the trash (permanently delete every trashed session)
tuimote fontSet a custom terminal/composer font
Upload a woff2/woff/otf/ttf/ttc file, then switch to it with tuimote config set fontFamily custom.
tuimote font uploadUpload a font file (woff2/woff/otf/ttf/ttc) as the custom font
<FILE>tuimote font deleteRemove the custom font (revert to the system stack)
tuimote font statusShow whether a custom font is set (mime + size)
tuimote skillsList the slash commands an agent offers in a repo
The same set the web composer completes, plus any cross-agent divergence warnings. Defaults the agent and repo to the session you're in.
--agent <AGENT>--cwd <CWD>--json{commands, warnings} JSONtuimote statusPrint a health report for the server, harnesses, and peers
Covers reachability, version, security posture, each harness's availability, and peer/usage status. Read-only. --json for the machine form. Use doctor to also fix what's wrong.
--jsontuimote doctorDiagnose problems and offer a fix for each
Runs the status checks, then prompts to apply a fix per problem (install hints, config repair, securing a networked host, the OS service, Linux linger). --yes runs unattended; --json just reports.
--yes--jsontuimote updateCheck for a newer release; self-update where safe
Behavior follows the install method: install.sh installs download the signed release, verify it (minisign + SHA-256), swap atomically, and restart the service; Homebrew installs print brew upgrade tuimote && tuimote setup; source builds defer to the dev loop (self-rebuild.sh / tuidev restart).
--check--yestuimote setupOne-shot install: set up the service and print your dashboard URL
Runs doctor, installs and starts the OS service, prompts for a password if the host is exposed, then prints the LAN URL. Safe to re-run.
--yestuimote uninstallRemove tuimote's service and installer-managed files
Keeps global config and state by default. --purge removes ~/.tuimote, but always leaves per-repo .tuimote directories alone.
--purge~/.tuimotetuimote changelogShow what changed between releases
Prints the release notes shipped with this build, newest release first. Handy around an update:
tuimote changelog --since 1.0.0
--since <VERSION>tuimote completionsPrint a shell completion script (zsh, bash, fish, …)
Write it where your shell picks it up, e.g. for zsh:
tuimote completions zsh > ~/.local/share/zsh/site-functions/_tuimote
(and make sure that dir is in $fpath before compinit runs).
<SHELL>tuimote manPrint the man page (roff) to stdout
Write it somewhere man looks, e.g.:
tuimote man > ~/.local/share/man/man1/tuimote.1
tuimote whoamiShow this pane's own session identity (shorthand, cwd, agent)
tuimote chatOpen the global chat session (not tied to any repo)
Spawns or resumes the persistent entrance session from settings, then attaches its tmux. Reach it elsewhere with the target chat.