CLI reference
Root help is captured from orchestrator/bin/timon --help with a disposable TIMON_HOME, an unreachable API target and a 20-second process limit. No daemon or subcommand is started. Additional usage blocks are read from literal source strings because subcommand help is not universally safe to execute. Legacy French prose is translated and command syntax is retained; descriptions then go through the publication policy in scripts/doc-policy.json.
This is a reference snapshot, not a shell script to execute in full. Replace placeholders with real values. Installation, task creation, deletion and service commands change the target instance.
Root help
timon — Timon control plane CLI
Updates (run on the daemon host):
timon update status inspect a pending packaged update
timon update apply move the service onto the installed package
timon update approve <daemon-version> approve backup and data migration
Agents & missions:
timon list list agents (json)
timon spawn <agent> <input...> start a mission, returns {mission_id}
[--extra-skills s1,s2] inject skills for this spawn only
[--extra-mcp mcp1,mcp2] inject MCP servers for this spawn only
[--allow "Bash(timon:*)"] pre-allow tool patterns for this spawn
[--title "Short name"] name the mission in the missions list
timon send <mission_id> <input...> send a follow-up to a running mission, without stopping its turn
timon steer <mission_id> <input...> [--json]
redirect the turn running now: the agent changes course
without waiting for its end
timon wait <mission_id> [--timeout=120] block until the turn ends, print assistant text
timon status <mission_id> full mission detail
timon kill <mission_id> terminate a running mission
timon stop agent <name> | project <slug> [--json]
technical stop of a scope: kills its running missions,
empties its inbox, settles its open requests without a reply,
blocks its PENDING/IN_PROGRESS tasks, switches off its triggers,
cancels the workflow runs it takes part in and switches off
the workflows that would start new ones
timon trace <traceId|missionId> [--json]
timon trace backfill [--days N] explicitly replay cold events into spans
timon agent create <name> [flags] new agent (prompt via --prompt-file or stdin)
timon agent update <name> [flags] partial update (omit prompt to leave unchanged)
flags: --backend NAME --model SLUG --permission-mode MODE
--cwd PATH --project SLUG
--skills a,b,c --mcp-servers a,b (repeatable or comma-sep)
--allowed-tools … --disallowed-tools … --excluded-mcp-servers …
(--skills is the whole checked set, stored as the agent's skill attachments:
unlisted ones are detached; import mode / exclusion: timon skill attach)
(deletion: the app or the agent_delete tool; the agent waits in the trash)
timon agent trash list [--json] deleted agents, newest first, with their trash id
timon agent trash restore <id> puts one back under its name (refused if the name is taken)
timon agent trash purge <id> deletes one for good (a person's gesture, refused to a mission)
timon agent set-scope <name> <scope> set memory scope (NONE|SESSION|AGENT|GLOBAL)
timon agent set-avatar <name> <image> set the profile picture (png/jpg/webp/gif, ≤ 2 MB, inside the cwd)
timon agent set-avatar <name> --clear remove it
timon agent rename <old> <new> rename an agent and its references (refused if <new>
exists or a mission of <old> is running)
timon agent doc list <agent> list the identity docs (*.md at ~/.timon/agents/<agent>/)
timon agent doc get <agent> <file> print one (SOUL.md, system-prompt.md…)
timon agent doc put <agent> <file> [--file PATH]
write one; content from --file or stdin (≤ 2 MB). From a
mission: its own agent, or one it orchestrates
timon agent doc rm <agent> <file> delete one (system-prompt.md cannot be deleted)
timon mission summarize <id> [--force] compress the mission transcript for cross-LLM continuation
timon mission fork <id> --to <agent> [--message "..."]
spawn a continuation on another agent, seeded with summary
timon mission search <text…> full-text search in mission history
[--agent NAME] [--project SLUG] [--since 7d|ISO] [--until …] [--limit N] [--json]
timon mission reindex [--batch N] rebuild the mission search index
timon mission permission-mode get <id> permission level of a mission, its source and the levels you may pick
timon mission permission-mode set <id> <mode>
change it from the next message (plan, default, acceptEdits, auto…;
never above your own level, others need agents:privileged-config)
timon mission egress <id> [--limit N] [--before ID]
outbound connections the mission made through the egress proxy (off by default)
Skills (~/.timon/skills/<id>/SKILL.md):
timon skill list list installed skills
timon skill get <id> [--file PATH] print the SKILL.md body, or a file next to it
timon skill put <id> [--file PATH] upsert; content from --file or stdin
[--create-only] never replace: 409 when <id> already exists
timon skill rm <id> delete
timon skill attach <id> --scope global|project|role|agent [--target T]
[--mode include|import] [--exclude]
attach a skill: include = one catalogue line (body read
with skill get), import = whole body in the prompt;
--exclude removes a skill inherited from a wider scope
timon skill detach <attachment-id> remove an attachment
timon skill attachments [--scope S] [--target T] [--skill ID]
list attachments (json)
timon skill resolve <agent> skills the agent spawns with, mode and origin (json)
timon skill reads <agent> [--json] skill_get reads by the agent's missions over 30 days
(a skill never read is absent: compare with resolve)
MCP servers (~/.timon/mcp/<id>.json):
timon mcp list list installed MCP servers
timon mcp get <id> print the full config (json)
timon mcp put <id> [--file PATH] upsert; JSON from --file or stdin
(shape: {name?, description?, transport})
timon mcp rm <id> delete
Tasks (Kanban backlog):
timon task list [--status PENDING|IN_PROGRESS|DONE|BLOCKED] (TODO = deprecated alias of PENDING)
timon task get <id>
timon task create --title TEXT --agent NAME [--type code|review|merge|research|doc|chore] [--project SLUG] [--description D] [--priority 1-5]
[--base BRANCH] [--todo TODO_ID] [--plan-group NAME]
[--model SLUG] [--permission-mode default|acceptEdits|bypassPermissions]
[--fallback-backend NAME|none] [--fallback-model SLUG]
[--deps id1,id2] [--scheduled ISO8601]
[--extra-skills s1,s2] [--extra-mcp mcp1,mcp2]
[--allow "Bash(timon:*),Read(/tmp/*)"]
timon task done <id> [--comment TEXT | --comment-file PATH | --comment-stdin] [--merged-sha SHA] [--summary TEXT]
timon task block <id> --reason TEXT
timon task mark-as-done [id] --comment TEXT|--comment-file PATH|--comment-stdin [--verdict pass|changes_requested] [--merged-sha SHA] [--summary TEXT]
closes THE current mission's task (no id to copy)
timon task mark-merged <id> --sha SHA [--comment TEXT]
branch merged outside Timon: records its merge commit
timon task mark-as-failed [id] --reason TEXT closes it as BLOCKED
timon task update <id> [--status ...] [--priority N] [--title ...] [--agent ...] [--type ...]
timon task delete <id> [--chain] --chain: also the verification chain it heads
timon backends [--json] backends and models actually available
Series fallback plan (quota exhausted during a project):
timon series fallback list [--series ID] rules in effect (default: THIS mission's series)
timon series fallback set --scope orchestrator|code|review|merge|doc|chore|*
--backend NAME [--model SLUG] [--group NAME] [--series ID] [--no-apply]
--backend none → this scope does not fall back
--group NAME → for ONE group of volets of the plan (read before
the series rule; never with orchestrator)
applied at once to the pending tasks of that scope;
--no-apply records the rule without moving anything
timon series fallback clear --scope SCOPE [--group NAME] [--series ID]
Series role choices (who runs, for THIS series only — roles.json untouched):
timon series role list [--series ID] choices in effect for the series
timon series role set --scope code|review|merge|research|doc|chore
[--backend NAME] [--model SLUG] [--group NAME] [--series ID]
task override > group choice > series role > project role > agent config
--group NAME → for ONE group of volets of the plan (tasks created
with --plan-group NAME, and their chain)
timon series role clear --scope SCOPE [--group NAME] [--series ID]
Worktrees (git isolation per code task):
timon worktree info <task-id> show path/branch/base/merged-sha
timon worktree create <task-id> [--base B] force-create (dispatcher does it automatically for type=code)
timon worktree dispose <task-id> [--force] unmounts worktree + local branch (post-merge)
Projects (agent roles per project):
timon project list lists configured projects
timon project roles <slug> shows the role→agent mapping
timon project set-role <slug> <role> <agent> [--model SLUG] [--permission-mode MODE]
sets the agent + model/permission for a role
timon project create <slug> [--name TEXT] [--cwd PATH] [--workspace NAME] [--create-workspace]
[--color #RRGGBB] [--icon TEXT] [--speech TEXT] [--kind TEXT] [--status TEXT]
registers a project; the cwd must already exist on the host
timon project update <slug> [--name TEXT] [--cwd PATH] [--workspace NAME] [--create-workspace]
[--color #RRGGBB] [--icon TEXT] [--speech TEXT] [--kind TEXT] [--status TEXT]
edits what you pass; an empty value clears workspace, speech, icon, kind
timon workspace list [--json] workspaces (poles) with their lead agent and projects
timon project demo creates the demo project (a small sample repository)
Routines (cron → creates a Kanban task on each due tick):
timon routine list
timon routine create --name TEXT --agent NAME --cron EXPR --prompt TEXT [--type ...] [--project SLUG]
timon routine update <id> [--cron ...] [--enabled true|false] ...
timon routine delete <id>
Workflows (graphs of nodes — agents, conditions, waits — run from a published version):
timon workflow list workflows you can see (json)
timon workflow get <slug> one workflow, with its draft
timon workflow create --file FILE creates a workflow from a JSON definition
timon workflow publish <slug> publishes the draft as the next version
timon workflow run <slug> [--input JSON] starts a run of the published version
timon workflow runs <slug> the runs of a workflow
timon workflow status <run_id> a run with its nodes, definition and spans
timon workflow cancel <run_id> stops a run
timon workflow import pipeline|agent|routine <id>
turns a pipeline, an agent or a routine into a workflow
timon workflow node done --output JSON [--route PORT]
closes the current node of a run from inside its mission
(reads TIMON_WORKFLOW_RUN_ID and TIMON_WORKFLOW_NODE_ID)
Triggers (source → filter → actions, run unattended):
timon trigger list [--source schedule|webhook|event]
timon trigger create --source schedule --name TEXT --cron EXPR [--tz ZONE] --action JSON ...
timon trigger create --source webhook --name TEXT --slug NAME --auth github|gitlab|standard|generic
[--filter JSON] --action JSON ... prints the secret ONCE
timon trigger create --source event --name TEXT --event KIND [--filter JSON] --action JSON ...
shortcuts instead of --action: --todo TEXT [--project SLUG] | --notify TITLE
| --task-agent NAME --prompt TEXT
| --script BIN [--arg A ...] --cwd DIR [--env SECRET ...] [--timeout SECONDS]
[--allow-overlap] [--no-failure-alert] runs a program, no agent (scripts:run);
from an agent's mission it becomes a proposal the user approves
timon trigger proposals [--status pending|applied|dismissed]
scripts agents asked for, waiting for you
timon trigger approve|reject <proposal-id> creates the trigger as yours, or drops it (never from a mission)
timon trigger test <id|slug> [--payload JSON] [--header Name:Value ...] [--execute]
dry run unless --execute
timon trigger remove <id|slug>
Pipelines (multi-agent workflow templates → Kanban tasks):
timon pipeline list
timon pipeline get <id>
timon pipeline create --name TEXT --file pipeline.json [--description D]
timon pipeline run <id> [--input JSON | --input-file PATH]
timon pipeline run-status <run_id>
timon pipeline delete <id>
Agent messages (async inbox — doesn't block the parent's tokens):
timon msg send <to_agent> <payload...> fire-and-forget to an agent's inbox
[--kind msg|request|response]
[--in-reply-to <msg_id>]
[--to-mission <mid>]
timon msg recv [--to <agent>] [--from <agent>] [--status pending|picked] [--limit N]
timon msg pick <message_id> marks picked + returns the payload (atomic)
timon msg reply <message_id> <payload...> sends a response to the message's from_agent
Notifications (human center — sidebar canvas):
timon notify report <title…> [--body TEXT] [--task-id ID] end-of-task report, result
timon notify alert <title…> [--body TEXT] [--urgent] [--task-id ID] blocking alert
timon notify action_required <title…> [--body TEXT] [--urgent] [--dismiss-on reply,task_done] [--ttl MIN]
closes by itself on the human's reply in the mission (default), the task's DONE, or after --ttl (default 24 h with no trigger, 7 days with one)
--mission-id is auto-injected from TIMON_MISSION_ID if not provided.
PROJECT TO DO (a project's idea notebook — nothing here is ever dispatched):
timon project-todo list [--status open|done|promoted|all] [--project SLUG] [--json]
timon project-todo add <text...> [--project SLUG] [--notes TEXT]
timon project-todo update <id> [<text...>] [--project SLUG] [--notes TEXT] [--status open|done]
timon project-todo done <id> [--undo] checks / unchecks the idea
timon project-todo promote <id> --agent NAME [--type TYPE] [--priority N] [--base REF] [--pipeline P]
the idea becomes a PENDING task, and keeps the link to it
timon project-todo rm <id>
Users (superadmin / daemon-token — out-of-band reset and invitations):
timon setup-token one-time token the first-run form asks for on an exposed install
timon user list accounts (json)
timon user reset-password <email-or-id> temporary password, printed once
timon user disable <email-or-id> status=disabled, sessions dropped
timon user enable <email-or-id>
timon user invite --email EMAIL --name NAME [--group ID] [--superadmin]
invitation token, printed once
timon user add-group <email-or-id> --group ID
timon user remove-group <email-or-id> --group ID
timon user groups <email-or-id> groups this user belongs to (json)
timon role list roles and their permissions (json)
timon role catalog permissions offered by /roles (json)
timon group list groups, their roles and member count (json)
timon group set-roles <group-id> --roles id1,id2,...
Paired devices (another Timon that drives this machine — a headless server has no screen to click):
timon device pair [--user EMAIL-OR-ID] [--json]
one-time pairing code (5 min) + this daemon's tailnet
address; --user: a superadmin issues it for that account
timon device list [--json] devices, their state and last connection
timon device rename <id> <name>
timon device revoke <id> cut off at once; pair again with a new code
Subscription accounts (superadmin / daemon-token — who may use which account):
timon backend-account list [--json] accounts, their state and who they are assigned to
timon backend-account grant <id> --user EMAIL-OR-ID[,…]
lets these users use the account (adds to the list)
timon backend-account revoke <id> --user EMAIL-OR-ID[,…]
takes it back from them
<id> is the account id or its instance (claude@<id>); signing in stays in the app.
Backends you add yourself (a person's gesture: a mission's token is refused with operator_only):
timon backend add <name> --base-url URL --protocol anthropic|openai-responses
[--key-from-stdin | --no-key] [--id ID] [--models A,B]
[--default-model SLUG] [--brand KEY] [--icon VALUE] [--json]
the key is NEVER an argument: a terminal asks for it (input hidden), or pipe it:
printf %s "$KEY" | timon backend add DeepSeek --base-url https://api.deepseek.com/anthropic \
--protocol anthropic --key-from-stdin
it goes to the vault, reserved to this backend, and is never shown again.
timon backend list [--json] the backends you added, their state, never a key
timon backend test <id> [--json] one call to its model listing, with its saved key;
exit code 0 only if the endpoint accepts the key
timon backend test --base-url URL --protocol anthropic|openai-responses
[--key-from-stdin | --no-key] [--json]
the same, before saving anything
timon backend rm <id> [--json] removes it; a key added with it leaves the vault
Secrets vault (write-only: no command ever prints a stored value):
timon secret list [--project SLUG] [--agent NAME] [--json]
timon secret set <NAME> [--scope global|project:<slug>|agent:<name>]
[--mode inject|broker] [--note TEXT] --stdin
the value is ALWAYS piped on stdin, never an argument:
printf %s "$TOKEN" | timon secret set GITHUB_TOKEN --scope global --stdin
no --scope at all = the daemon alone, which no agent ever receives.
timon secret grant <NAME> --scope … opens it to one more scope
backend:<id> is a reservation, not an audience: the entry then reaches
only that backend's own process, for the missions its other grants admit.
timon secret revoke <NAME> --scope … closes that scope again
timon secret rm <NAME>
timon secret rekey new master key, staged then promoted
timon secret import-env [--delete-source] imports ~/.timon/secrets.env, no grant
Backend sign-in (write-only: the stored token is never printed):
timon auth claude-token set reads the token printed by 'claude setup-token'
from stdin, or asks for it (hidden) in a terminal:
claude setup-token # then paste the token when asked
printf %s "$TOKEN" | timon auth claude-token set
every claude mission receives it; needed on macOS for Timon to run with
no session open. Then run 'timon service install' to switch the service.
timon auth claude-token status configured or not, never the value
timon auth claude-token clear
Memory (rules injected into agents — DIRECT write to the database):
timon memory rule add <text…> [--scope agent|project|role|global] [--agent NAME]
[--project SLUG] [--role ROLE]
[--kind pitfall|decision|preference] [--tier normal|core]
[--text-file PATH] [--json]
defaults: --scope agent, --kind pitfall, agent = $TIMON_AGENT, project = $TIMON_PROJECT.
An exact duplicate on the same scope is refused (exit 3).
timon memory rule list [--scope …] [--agent NAME] [--project SLUG] [--json]
timon memory rule rm <id>
timon memory search <query…> cross-cutting search (rules + facts)
timon memory overview counters + pending proposals
timon memory show <project|agent> <id> [file] reads the reference .md files
Project's embedded browser:
timon browser status [<slug>] [--json] does the project have a browser up?
timon browser start [<slug>] starts it (persistent profile, sessions kept)
timon browser stop [<slug>] stops it (the profile itself survives)
timon browser list [--json] all known sessions
timon browser recording get <id> the recording your conversion mission learns (that mission only)
timon browser annotations get [<id>] [--batch <bab-…>] [--status pending|resolved|dismissed] [--json]
annotations the user sent this mission (or its agent)
timon browser annotations resolve <id> --summary "<what you changed>"
timon browser annotations dismiss <id> --reason "<why not>"
default slug: $TIMON_PROJECT, otherwise derived from cwd.
Widget arrangement of the user's screen (an agent's mission owner):
timon widgets get [--view PATH] [--project SLUG]
zones, cards, catalog, chat columns
timon widgets propose [--view PATH] [--project SLUG] [--note TEXT] [--file F]
a card the user applies (JSON on stdin)
timon widgets preset-save <name> [--view PATH] [--project SLUG] [--replace]
current arrangement → Layouts menu
Island workspace of the user's screen (an agent's mission owner):
timon islands get [--view PATH] [--project SLUG]
islands, tabs, focus, content types, limits
timon islands propose [--view PATH] [--project SLUG] [--note TEXT] [--file F]
a card the user applies (JSON on stdin:
{open: {...}} or {layout: {...}})
timon islands propose --arrangement ID [--view PATH] [--project SLUG] [--note TEXT]
a card recalling a named arrangement on the view
timon setup avatar|soul|finish the main agent's own setup conversation (refused elsewhere)
timon navigate routes pages of the app an agent can send the user to
timon navigate go <path> [--param k=v]... [--note TEXT]
ask the user to go there (a card they follow)
timon ui-doc render <file.html> [--title TEXT] [--reply]
timon ui-doc get <id>
shows an HTML document as a card in this mission's chat
timon nav get pages hidden from the side menu, and its layout
timon nav propose [--hide <path>]... [--order <p,p,---,p>] [--footer <p,p>] [--note TEXT]
proposes the complete list of hidden pages (no flag = show all),
the main list and the bottom of the menu (--- = a separator)
timon onboarding profile [set <developer|automation|beginner>]
the onboarding profile of the account
timon islands preset-save <name> [--view PATH] [--project SLUG] [--replace]
current view (islands included) → Layouts menu
timon islands arrangements [--full] the account's named island arrangements
timon islands arrangement-save <name> [--view PATH] [--project SLUG] [--file LAYOUT.json] [--replace]
current islands of a view, or a layout ({root, focus?}),
→ Island arrangements menu (never the main menu)
Timon documentation (the pages of the installed version, read offline, no daemon needed):
timon docs search <words…> [--limit N] [--json]
pages that match, with an excerpt (same as docs_search)
timon docs read [<route>] [--heading TEXT] a page as Markdown, or one section of it; without a
route, the list of every page (same as docs_read)
Resources (anti-saturation guard for the machine):
timon export [--out F] [--with-archive] portable archive of ~/.timon (secrets excluded)
timon migrate-v1 --to DIR [--dry-run] import the home of the earlier v1 build into a Timon home
timon import F [--to DIR] [--force] [--no-projects]
restores an archive on this machine
timon backup enable nightly routine 03:30, on by default (re-arms it if turned off)
timon backup status [--json] state, next run, archives under backups/
timon doctor [--json] binaries, host capabilities, config
timon doctor --report [--save F] diagnostic report to paste in a support request
timon logs [--desktop|--prompts|--supervisor] [-n N]
newest log lines first (default: daemon, 100)
Third-party plugins (hot-loaded, no daemon restart):
timon plugin list [--json] installed, version, enabled, refused
timon plugin add <spec> [--yes] npm install (name, .tgz, .zip or dir)
timon plugin remove <id> npm uninstall (data kept)
timon plugin enable <id> | disable <id> toggles in timon.config.json
timon plugin check <dir> [--json] [--strict] [--deny <word>]…
pre-ship check of a plugin folder: manifest, signature,
shipped files, author and machine data; never runs it
timon plugin sign <dir> signs with ~/.timon-signing/plugins.key
timon plugin verify <id> verifies without loading the plugin
Web app served by the daemon (NEVER an orchestrator restart):
timon app status [--json] module active? app built? child alive?
timon app restart signals the web-app child (or rearms a supervisor that gave up)
Daemon service (systemd user unit on Linux, launchd agent on macOS — a launchd
daemon once a claude token is set —, scheduled task at boot on Windows):
timon service install [--dry-run] [--allow-temp-home] [--force]
writes the unit/plist and starts it; refuses a TIMON_HOME
under the system temporary folder without the flag, and a
service that belongs to another Timon installation without --force
timon service uninstall [--force] stops and removes it, ~/.timon untouched; same refusal
timon service stop ends the daemon and its programs, keeps the service registered (Windows: the task is disabled); the app starts it again at its next launch
timon service start starts a stopped service again
timon service status [--json] installed? running?
timon service repair Windows: seals the session witness again when the service waits for a logon that never comes
Bundled modules (writes timon.config.json — effective on next daemon boot):
timon module list [--json] catalog, wanted state, actual state + reason
timon module enable <name> | disable <name> toggles in timon.config.json
Secrets broker (the daemon acts, you never hold the value):
git config credential.helper "timon git-credential"
git then authenticates through the
vault: no token in a remote URL,
a command line or the environment
Licence:
timon license status shows your licence status, edition and expiry date
timon license deactivate release this machine (the seat transfers once its last token lease expires)
timon license install <file> installs a licence file
timon license activate <key> activates Timon with your licence key
timon health [--json] day/night profile, Timon cgroups memory
and CPU, live missions, OOM
Google agenda (all calendars on the account, aggregated in one call):
timon agenda [today|next] [--json] [--detailed] [--limit N]
timon agenda --from "2026-08-25" --to "+3d" free-form range (ISO, YYYY-MM-DD, now, +2h, +3d)
today = from now to 23:59 local time
next = the next 5, any date
Remote daemon:
timon --daemon <url|name> <cmd> … targets a daemon (URL or profile)
timon daemon add <name> <url> <token> profile in ~/.timon/cli-daemons.json (0600)
timon daemon list profiles (url only, never the token)
Daemon address: --daemon > TIMON_API > timon.config.json daemon.listen
> desktop-bootstrap.json daemonPort > http://localhost:3000
Files are read under TIMON_HOME (default ~/.timon).
Authentication: named profile token, otherwise TIMON_API_TOKEN or daemon-token.
daemon-token is only sent to the local listener, whether the
target comes from --daemon <url> or TIMON_API.
For remote URLs, set TIMON_API_TOKEN or use a named profile.
Additional command usage from source
These blocks supplement the root help (for example pipeline flags). Some commands have no separate usage block. The generator reads them without invoking them.
timon spawn agent input... [--idempotency-key hash]
usage: timon spawn <agent> <input...> [--idempotency-key <hash>]
[--model SLUG] [--backend NAME] [--title "Short name"]
[--extra-skills skill1,skill2] [--extra-mcp mcp1,mcp2]
[--allow "Bash(timon:*),Read(/tmp/*)"]
timon send mission_id input...
usage: timon send <mission_id> <input...>
timon steer mission_id input... [--json]
usage: timon steer <mission_id> <input...> [--json]
timon status mission_id
usage: timon status <mission_id>
timon kill mission_id
usage: timon kill <mission_id>
timon stop agent name | timon stop project slug [--json]
usage: timon stop agent <name> | timon stop project <slug> [--json]
timon wait mission_id [--timeout=120] [--json]
usage: timon wait <mission_id> [--timeout=120] [--json]
timon skill get id [--file PATH]
usage: timon skill get <id> [--file PATH]
timon skill put id [--file PATH] [--create-only] (or pipe content on stdin)
usage: timon skill put <id> [--file PATH] [--create-only] (or pipe content on stdin)
timon skill rm id
usage: timon skill rm <id>
timon skill attach id --scope S [--target T] [--mode M] [--exclude]
usage: timon skill attach <id> --scope S [--target T] [--mode M] [--exclude]
S: global|project|role|agent M: include|import
timon skill detach attachment-id
usage: timon skill detach <attachment-id>
timon skill resolve agent
usage: timon skill resolve <agent>
timon skill reads agent [--json]
usage: timon skill reads <agent> [--json]
timon skill list|get|put|rm|attach|detach|attachments|resolve|reads …
usage: timon skill <list|get|put|rm|attach|detach|attachments|resolve|reads> …
timon mcp get id
usage: timon mcp get <id>
timon mcp put id [--file PATH] (or pipe JSON on stdin)
usage: timon mcp put <id> [--file PATH] (or pipe JSON on stdin)
timon mcp rm id
usage: timon mcp rm <id>
timon mcp list|get|put|rm …
usage: timon mcp <list|get|put|rm> …
timon agent create name [--prompt-file PATH] [--backend …] [--model …] …
usage: timon agent create <name> [--prompt-file PATH] [--backend …] [--model …] …
(system prompt: pipe on stdin or pass --prompt-file)
timon agent update name [--prompt-file PATH] [--backend …] [--model …] …
usage: timon agent update <name> [--prompt-file PATH] [--backend …] [--model …] …
(everything optional; supply only the fields to change)
timon agent set-scope name NONE|SESSION|AGENT|GLOBAL
usage: timon agent set-scope <name> <NONE|SESSION|AGENT|GLOBAL>
timon agent set-avatar name image-file | timon agent set-avatar name --clear
usage: timon agent set-avatar <name> <image-file> | timon agent set-avatar <name> --clear
timon agent rename old-name new-name
usage: timon agent rename <old-name> <new-name>
timon agent create|update|set-scope|set-avatar|rename|doc|trash name …
usage: timon agent <create|update|set-scope|set-avatar|rename|doc|trash> <name> …
(deletion: the app or the agent_delete tool, which move the agent to the trash)
timon mission summarize mission_id [--force]
usage: timon mission summarize <mission_id> [--force]
timon mission fork mission_id --to agent [--message "..."]
usage: timon mission fork <mission_id> --to <agent> [--message "..."]
timon mission search text… [--agent NAME] [--project SLUG]
usage: timon mission search <text…> [--agent NAME] [--project SLUG]
[--since 7d|ISO] [--until 7d|ISO] [--limit N] [--json]
timon mission egress mission_id [--limit N] [--before ID]
usage: timon mission egress <mission_id> [--limit N] [--before ID]
timon mission summarize|fork|search|reindex|permission-mode|egress …
usage: timon mission <summarize|fork|search|reindex|permission-mode|egress> …
timon task get id
usage: timon task get <id>
timon task create --title TEXT --agent NAME [--description D] [--priority 1-5]
usage: timon task create --title TEXT --agent NAME [--description D] [--priority 1-5]
[--type code|review|merge|research|doc|chore] [--project SLUG] [--base BRANCH]
[--pipeline full|code-self|code-group] [--group-id ID] [--plan-group NAME] [--todo ID]
[--backend NAME] [--model SLUG] [--permission-mode default|acceptEdits|bypassPermissions]
[--fallback-backend NAME|none] [--fallback-model SLUG]
[--deps id1,id2] [--scheduled ISO] [--extra-skills s1,s2] [--extra-mcp m1,m2]
[--allow "Bash(timon:*),Read(/tmp/*)"]
timon task done id [--comment TEXT | --comment-file PATH | --comment-stdin] …
usage: timon task done <id> [--comment TEXT | --comment-file PATH | --comment-stdin] [--merged-sha SHA] [--summary TEXT]
timon task mark-merged id --sha SHA [--comment TEXT]
usage: timon task mark-merged <id> --sha SHA [--comment TEXT]
timon task mark-as-done [id] --comment TEXT | --comment-file PATH | --comment-stdin
usage: timon task mark-as-done [id] --comment TEXT | --comment-file PATH | --comment-stdin
[--verdict pass|changes_requested] [--merged-sha SHA] [--summary TEXT]
timon task mark-as-failed [id] --reason TEXT
usage: timon task mark-as-failed [id] --reason TEXT
timon task block id --reason ...
usage: timon task block <id> --reason ...
timon task update id [--status ...] [--priority N] [--title ...] …
usage: timon task update <id> [--status ...] [--priority N] [--title ...] [--scheduled ISO | --clear-scheduled]
timon task delete id [--chain]
usage: timon task delete <id> [--chain]
timon task …
usage: timon task <list|get|create|done|block|mark-as-done|mark-as-failed|mark-merged|update|delete> …
timon series fallback set --scope orchestrator|code|review|merge|doc|chore|*
usage: timon series fallback set --scope orchestrator|code|review|merge|doc|chore|*
--backend NAME [--model SLUG] [--group NAME] [--series ID] [--no-apply]
--backend none → this scope does not fall back (failure accepted)
--group NAME → rule of ONE group of volets of the plan (never with orchestrator)
--no-apply → record the rule only, do not move the pending tasks
timon series fallback clear --scope SCOPE [--group NAME] [--series ID]
usage: timon series fallback clear --scope SCOPE [--group NAME] [--series ID]
timon series fallback list|set|clear …
usage: timon series fallback <list|set|clear> …
timon series role set --scope code|review|merge|research|doc|chore
usage: timon series role set --scope code|review|merge|research|doc|chore
[--backend NAME] [--model SLUG] [--group NAME] [--series ID] (at least one of backend/model)
--group NAME → choice of ONE group of volets of the plan (tasks created with --plan-group)
timon series role clear --scope SCOPE [--group NAME] [--series ID]
usage: timon series role clear --scope SCOPE [--group NAME] [--series ID]
timon series role list|set|clear …
usage: timon series role <list|set|clear> …
timon series fallback|role list|set|clear …
usage: timon series <fallback|role> <list|set|clear> …
timon worktree info task-id
usage: timon worktree info <task-id>
timon worktree create task-id [--base BRANCH]
usage: timon worktree create <task-id> [--base BRANCH]
timon worktree dispose task-id [--force]
usage: timon worktree dispose <task-id> [--force]
timon worktree info|create|dispose task-id …
usage: timon worktree <info|create|dispose> <task-id> …
timon project roles slug
usage: timon project roles <slug>
timon project set-role slug code|review|merge|research|doc|chore agent-name
usage: timon project set-role <slug> <code|review|merge|research|doc|chore> <agent-name>
[--backend NAME] [--model SLUG] [--permission-mode default|acceptEdits|bypassPermissions]
timon project set-role <slug> <role> "" (to clear)
timon workspace list [--json]
usage: timon workspace list [--json]
timon project list|roles|set-role|create|update|demo …
usage: timon project <list|roles|set-role|create|update|demo> …
timon msg send to_agent payload...
usage: timon msg send <to_agent> <payload...>
[--kind msg|request|response] [--in-reply-to <msg_id>] [--to-mission <mid>]
timon msg pick message_id
usage: timon msg pick <message_id>
timon msg reply message_id payload...
usage: timon msg reply <message_id> <payload...>
timon msg send|recv|pick|reply …
usage: timon msg <send|recv|pick|reply> …
timon pipeline get id
usage: timon pipeline get <id>
timon pipeline create --name TEXT --file PATH [--description D]
usage: timon pipeline create --name TEXT --file PATH [--description D]
(--file points to a JSON file with the pipeline definition: { steps: [...] })
timon pipeline run id [--input JSON | --input-file PATH]
usage: timon pipeline run <id> [--input JSON | --input-file PATH]
timon pipeline run-status run_id
usage: timon pipeline run-status <run_id>
timon pipeline delete id
usage: timon pipeline delete <id>
timon pipeline list|get|create|run|run-status|delete …
usage: timon pipeline <list|get|create|run|run-status|delete> …
timon routine create --name TEXT --agent NAME --cron EXPR --prompt TEXT
usage: timon routine create --name TEXT --agent NAME --cron EXPR --prompt TEXT
[--type code|review|merge|research|doc|chore] [--project SLUG] [--enabled true|false]
timon routine update id [--name ...] [--cron ...] [--enabled true|false] ...
usage: timon routine update <id> [--name ...] [--cron ...] [--enabled true|false] ...
timon routine delete id
usage: timon routine delete <id>
timon routine list|create|update|delete …
usage: timon routine <list|create|update|delete> …
timon trigger test id|slug [--payload JSON] [--header Name:Value ...] [--execute]
usage: timon trigger test <id|slug> [--payload JSON] [--header Name:Value ...] [--execute]
timon trigger remove id|slug
usage: timon trigger remove <id|slug>
timon trigger list|create|test|remove|proposals|approve|reject …
usage: timon trigger <list|create|test|remove|proposals|approve|reject> …
timon project-todo add text... [--project SLUG] [--notes TEXT]
usage: timon project-todo add <text...> [--project SLUG] [--notes TEXT]
timon project-todo update id [text...] [--text TEXT] [--project SLUG] [--notes TEXT] …
usage: timon project-todo update <id> [<text...>] [--text TEXT] [--project SLUG] [--notes TEXT] [--status open|done]
timon project-todo done id [--undo]
usage: timon project-todo done <id> [--undo]
timon project-todo promote id --agent NAME [--type TYPE] [--priority N] [--base REF] …
usage: timon project-todo promote <id> --agent NAME [--type TYPE] [--priority N] [--base REF] [--pipeline P] [--project SLUG]
timon project-todo rm id
usage: timon project-todo rm <id>
timon project-todo list|add|update|done|promote|rm …
usage: timon project-todo <list|add|update|done|promote|rm> …
timon memory rule add text… [--scope agent|project|role|global] [--agent NAME] …
usage: timon memory rule add <text…> [--scope agent|project|role|global] [--agent NAME] [--project SLUG] [--role ROLE] [--kind pitfall|decision|preference] [--tier normal|core]
timon memory rule rm id
usage: timon memory rule rm <id>
timon memory rule add text… | list | rm id
usage: timon memory rule <add <text…> | list | rm <id>>
timon memory search query…
usage: timon memory search <query…>
timon memory show project|agent id [file]
usage: timon memory show <project|agent> <id> [file]
timon memory rule add|list|rm | search query… | overview | show project|agent id …
usage: timon memory <rule <add|list|rm> | search <query…> | overview | show <project|agent> <id> [file]>
timon browser recording get id
usage: timon browser recording get <id>
timon browser annotations get [id] [--batch id] [--status s] | resolve id --summary …
usage: timon browser annotations get [<id>] [--batch <id>] [--status <s>] | resolve <id> --summary <text> | dismiss <id> --reason <text>
timon browser status|start|stop|list [slug] [--json] | recording get id | …
usage: timon browser status|start|stop|list [<slug>] [--json] | recording get <id> | annotations get|resolve|dismiss
timon agenda [today|next] [--from X --to Y] [--limit N] [--detailed] [--json]
usage: timon agenda [today|next] [--from X --to Y] [--limit N] [--detailed] [--json]
timon import archive.tar.gz [--to DIR] [--force] [--no-projects]
usage: timon import <archive.tar.gz> [--to DIR] [--force] [--no-projects]
timon docs search words... [--limit N] [--json]
usage: timon docs search <words...> [--limit N] [--json]
timon docs read [<route>] [--heading TEXT]
timon migrate-v1 --to DIR [--from V1_HOME] [--dry-run] [--force] [--no-sessions]
usage: timon migrate-v1 --to DIR [--from V1_HOME] [--dry-run] [--force] [--no-sessions]
timon migrate-v1 rewrite-vocab --home DIR [--apply]
Back up the v1 home first.
timon widgets preset-save name [--view PATH] [--project SLUG] [--replace]
usage: timon widgets preset-save <name> [--view PATH] [--project SLUG] [--replace]
timon widgets get|propose|preset-save [--view PATH] [--project SLUG]
usage: timon widgets <get|propose|preset-save> [--view PATH] [--project SLUG]
timon islands preset-save name [--view PATH] [--project SLUG] [--replace]
usage: timon islands preset-save <name> [--view PATH] [--project SLUG] [--replace]
timon islands arrangement-save name [--view PATH] [--project SLUG] …
usage: timon islands arrangement-save <name> [--view PATH] [--project SLUG] [--file LAYOUT.json] [--replace]
timon islands get|propose|preset-save|arrangements|arrangement-save [--view PATH] …
usage: timon islands <get|propose|preset-save|arrangements|arrangement-save> [--view PATH] [--project SLUG]
timon navigate go path [--param k=v]... [--note TEXT]
usage: timon navigate go <path> [--param k=v]... [--note TEXT]
timon navigate routes|go
usage: timon navigate <routes|go>
timon nav get|propose
usage: timon nav <get|propose>
timon ui-doc render file.html [--title TEXT] [--reply] | timon ui-doc get id
usage: timon ui-doc render <file.html> [--title TEXT] [--reply] | timon ui-doc get <id>
timon onboarding profile [set developer|automation|beginner]
usage: timon onboarding profile [set <developer|automation|beginner>]
timon setup avatar|soul|finish
usage: timon setup <avatar|soul|finish>
timon backup enable|status [--json]
usage: timon backup <enable|status> [--json]
timon plugin add spec [--yes]
usage: timon plugin add <spec> [--yes]
timon plugin remove id
usage: timon plugin remove <id>
timon plugin sign dir
usage: timon plugin sign <dir>
timon plugin verify id
usage: timon plugin verify <id>
timon auth claude-token set|clear|status
usage: timon auth claude-token set|clear|status
timon secret set NAME [--scope global|project:slug|agent:name] …
usage: timon secret set <NAME> [--scope global|project:<slug>|agent:<name>] [--mode inject|broker] --stdin
timon secret rm NAME
usage: timon secret rm <NAME>
timon user reset-password email-or-id
usage: timon user reset-password <email-or-id>
timon user invite --email EMAIL --name NAME [--group ID] [--superadmin]
usage: timon user invite --email EMAIL --name NAME [--group ID] [--superadmin]
timon user add-group email-or-id --group ID
usage: timon user add-group <email-or-id> --group ID
timon user remove-group email-or-id --group ID
usage: timon user remove-group <email-or-id> --group ID
timon user groups email-or-id
usage: timon user groups <email-or-id>
timon role list|catalog
usage: timon role list|catalog
timon group set-roles group-id --roles id1,id2,...
usage: timon group set-roles <group-id> --roles id1,id2,...
timon group list|set-roles …
usage: timon group list|set-roles …
timon backend-account list|grant|revoke …
usage: timon backend-account list|grant|revoke …
timon user list|reset-password|disable|enable|invite|add-group|remove-group|groups …
usage: timon user list|reset-password|disable|enable|invite|add-group|remove-group|groups …
timon secret list|set|grant|revoke|rm|rekey|import-env …
usage: timon secret <list|set|grant|revoke|rm|rekey|import-env> …
timon license install file
usage: timon license install <file>
timon license activate key
usage: timon license activate <key>
timon license status|install file|activate key
usage: timon license status|install <file>|activate <key>
timon logs [--desktop|--prompts|--supervisor] [-n N]
usage: timon logs [--desktop|--prompts|--supervisor] [-n N]
timon trace backfill [--days N]
usage: timon trace backfill [--days N]
timon trace traceId|missionId [--json]
usage: timon trace <traceId|missionId> [--json]
timon daemon add name url token
usage: timon daemon add <name> <url> <token>
timon daemon list
usage: timon daemon list
timon daemon add <name> <url> <token>
timon --daemon url|name command …
usage: timon --daemon <url|name> <command> …