Skip to content

Feature catalog

This is the published mirror of FEATURES.md in the repository — the authoritative inventory of every warden capability and which surface can drive it.

warden exposes its features across five surfaces — the CLI (warden, aliased wd), MCP (81 structured tools for an orchestrating agent), the /warden skill, the web GUI, and the TUI cockpit.

Coverage legend: ✓ supported · — not applicable / not present on that surface · CLI-only features are marked and explained (host/process/interactive/secret operations that are meaningless or unsafe over MCP/web).

Spawn, inspect, message, and tear down per-task coding agents (Claude Code by default; each in its own tmux session, most in a git worktree).

FeatureCLIMCPSkillWebTUIDocs
Spawn an agent (ticket / prompt / typed)startspawn_agentnspawn-and-watch
Prompt-spawn (no repo, auto-typed)start "<prompt>"spawn_agentnspawn-and-watch
List agentslslist_agentslistfleet-operations
Agent status / detailstatusget_agentifleet-operations
Tail recent outputtailget_agent_outputviewspawn-and-watch
Send text into an agentsendsend_to_agentspawn-and-watch
Digest (catch-up summary)digestdigestirotation-digests
Attach to the live sessionattachCLI-only (interactive tmux)✓ (terminal)enterspawn-and-watch
Adopt an existing Claude sessionadoptadopt_agentagents-lifecycle
Tear down (umbrella)stopstop_agentxfleet-operations
Finish cleanly (commit/push guard)done (= stop --keep-worktree)terminate_agent (force)xlifecycle-and-rails
Terminateterminate (= stop --keep-record --keep-worktree)terminate_agentxlifecycle-and-rails
Restore an orphaned agentrestorerestore_agentragents-lifecycle
Recover an archived-but-alive agent (tombstone-reaper safety net)recoverrecover_agentsagents-lifecycle
Delete / hard-purgedelete (= stop --keep-worktree, record only)delete_agentDfleet-operations
Rename an agentadopt --name / spawn namespawn_agent (name)fleet-operations
Tags (group / filter)start --tag, ls --tagspawn_agent (tags)fleet-operations
Model selectionstart --model / configspawn_agent (model)env-vars
Agent role (built-in persona + default flags) at spawnstart --rolespawn_agent (role)✓ (Role select)ctrl+r (new-agent)agent-roles
Switch a running agent’s role (relaunch re-injects)set-roleset_roleagent-roles
List the built-in role catalogrole listlist_roles✓ (Role select)listagent-roles
Tiered model routing — derive the model tier from a taskstart --task (CLI + REST; no pipeline task:)routes by role only (no task param)agent-roles
Tiered model routing — pin the model tier for the quota-balanced resolverstart --tier (also pipeline tier:)routes by role only (no tier param)agent-roles
List the backend’s live model menumodels (--backend, --json)CLI-only (agent-native; local worktree exec, no daemon round-trip)backend-superpowers
Backend selection (Claude / Aider / OpenCode / Codex / Crush / Goose / Cursor / Antigravity)start --backendspawn_agent (backend)agent-backends — only claude is stable; codex and antigravity are β beta; aider, opencode, crush, goose, and cursor are 🧪 experimental
Terminal session (kind=terminal) — managed $SHELL seat, no AI (prompt ignored); back-compat backend=terminal aliasstart --kind terminalspawn_agent (kind)✓ (Terminals tab)ttui-cockpit
Handoff — delegate (new / --to existing) or retire self (--retire)handoffhandoff_agentrotation-digests
Self-rotation (retire → successor) — alias for handoff --retirerotaterotate_agentrotation-digests
Fork an agent’s session into a new managed agent (Codex-only; branches the conversation, source keeps running; dirty-tree carry)forkfork_agentbackend-superpowers
FeatureCLIMCPSkillWebTUIDocs
Task --type (development, analysis, spike, pr-review, code, docs, website, debug-ci, tests, other)start --typespawn_agent (type)worktrees-task-types
Managed worktree per agentautomaticautomaticworktrees-task-types
Scratch worktree (analysis/spike)start --worktreespawn_agent (worktree)worktrees-task-types
In-repo opt-out (write-agent)start --in-repospawn_agent (in_repo)worktrees-task-types
List worktreesworktree list (alias worktree ls; bare worktree)list_worktreesworktrees-task-types
Prune orphaned worktreesworktree prune (alias prune)prune_worktreesfleet-operations
Remove one agent’s worktreeremove-worktree (= stop --keep-record, worktree only)remove_worktreefleet-operations
FeatureCLIMCPSkillWebTUIDocs
Commit (auto-message from diff)commitcommitlifecycle-and-rails
Push (protected-branch rails, --force-with-lease)pushpushlifecycle-and-rails
Sync / rebase onto basesyncsynclifecycle-and-rails
Run project checks (compact failures)checkchecklifecycle-and-rails
Agent-native diff review (backend’s own reviewer)review (--base, --prompt, --backend)CLI-only (agent-native; local worktree exec, no daemon round-trip)backend-superpowers
Machine-readable review findings (neutral JSON)review --jsonCLI-onlybackend-superpowers
git-guard hook (deny raw git mutations)git-guard (hook)enforcedlifecycle-and-rails
check-guard hook (redirect broad runs)check-guard (hook)enforcedlifecycle-and-rails
root-guard / boundary enforcementguard (hook)enforcedlifecycle-and-rails
Branch + CI status (per agent)branchesget_branch_statusobservability
FeatureCLIMCPSkillWebTUIDocs
Create from YAML spec / templatepipeline createcreate_pipelinepipelines
List pipelinespipeline listlist_pipelinesviewpipelines
Show one pipeline’s jobs/outputpipeline showshow_pipelineipipelines
Startpipeline startstart_pipelinepipelines
Cancelpipeline cancelcancel_pipelinepipelines
Pausepipeline pausepause_pipelinepipelines
Resumepipeline resumeresume_pipelinepipelines
Retry a failed jobpipeline retryretry_pipeline_jobpipelines
Edit a pending jobpipeline edit-jobedit_pipeline_jobpipelines
Emit a job’s handoff outputpipeline emitemit_pipeline_outputpipelines
Delete a pipeline recordpipeline deletedelete_pipelinepipelines
Validate a spec (no daemon)pipeline validatevalidate_pipelinepipelines
List built-in templatespipeline list-templateslist_pipeline_templatespipelines

5. Coordination (shared context, messages, conflicts)

Section titled “5. Coordination (shared context, messages, conflicts)”
FeatureCLIMCPSkillWebTUIDocs
Shared-context setctx setctx_setshared-context-messages
Compare-and-set (claim a task)ctx casctx_casshared-context-messages
Appendctx appendctx_appendshared-context-messages
Get / list / deletectx get/list/delctx_get / ctx_listshared-context-messages
Directed message to an inboxmsg sendsend_messageshared-context-messages
Read inboxmsg inboxread_inboxshared-context-messages
Wait for a message (park/wake)msg waitwait_for_messageshared-context-messages
File-conflict detectioncollab conflictsget_collaboration_statusshared-context-messages
Who is editing a filecollab who-is-editingwho_is_editing_fileshared-context-messages
Project memory — show/edit .warden/memory.mdmemory (--raw, --path, --edit)CLI-only (local, no daemon round-trip)project-memory
Project memory — projected into every spawn (memory.inject)config (memory.inject, default on)automatic (all backends but aider)project-memory
Project memory — auto-curation from digests (memory.curate)config (memory.curate, default off)automatic on completion (proposes unverified entries to the working tree; never commits)project-memory
Project memory — local grounding in the REPL (memory.ground)repl/memory <q> (/mem, /ask) + project_memory toolREPL-only (local model, $0, no cloud round-trip)project-memory
Project groups — named collections of projects shown in the TUI tree; each member carries the group label beside the project nameREST API (/api/v1/project-groups)✓ (read)project-groups
Per-project auto-spawn — daemon guarantees one live orch-<project> orchestrator whenever a project is opened; idempotent (revives from transcript if recorded-but-dead; spawns fresh otherwise)automatic on project openproject-groups
Peer awareness — grouped orchestrators learn their Project Group name and sibling orchestrator names via context injection at every (re)launchautomatic (daemon-wired via PeerContextFn)project-groups
FeatureCLIMCPSkillWebTUIDocs
List pending approvalsapprovalslist_approvalscockpitapprovals-supervised
Answer an approvalapproveapproveaapprovals-supervised
Auto-approve toggleauto-approve <id> on|offset_auto_approveapprovals-supervised
Auto-approve rule policy (tool/glob/regex/paths, per-agent, identical-prompt circuit breaker)auto-approve rules|allow|deny|clear|enable|disableset_auto_approve_policyapprovals-supervised
Set permission mode (running agent)set-permission-modeset_permission_modeapprovals-supervised
Supervised spawn (gate every prompt)start --supervisedspawn_agent (supervised)approvals-supervised
FeatureCLIMCPSkillWebTUIDocs
Create schedule (cron / at; agent or pipeline)schedule createcreate_schedulescheduling
List schedulesschedule listlist_schedulesscheduling
Get one schedule (+ last-run outcome)schedule getget_schedulescheduling
Enable / disable scheduleschedule enable / disableenable_schedule / disable_schedulescheduling
Delete scheduleschedule deletedelete_schedulescheduling
Scheduled-run session linkage (schedule_id on sessions; scheduled-agents capability)scheduling
FeatureCLIMCPSkillWebTUIDocs
Snapshot worktree + transcriptsnapshot createsnapshot_createsnapshots
List snapshotssnapshot listsnapshot_listsnapshots
Restore a snapshot (rails)snapshot restoresnapshot_restoresnapshots
FeatureCLIMCPSkillWebTUIDocs
Live resource metricsstatsget_metricsobservability
Metrics history (time-series)stats --historyget_metrics (history)observability
Memory-pressure gate / headroomdoctor / spawn gateget_pressureobservability
Fleet insights (parallelizable pairs, etc.)insightsinsightsinsights
Cost umbrella (spend + savings in one)cost (cost spend / cost savings)spend + savingssavings
Token-savings ledgersavings (alias cost savings)savingssavings
Cost governance ($ spend rollup)spend (alias cost spend)spend$ in lssavings
Budget gate (soft $ cap on spawn)config (tokens.budget_gate) / spawn gateautomaticobservability
Full-text searchsearchsearchcli
Browse archived agentshistoryhistory✓ (archive)cli
Action audit trailaudit logaudit_logobservability
Event stream (SSE)observability
Desktop / webhook / Slack notificationsconfig (notify.enabled, notify.webhook_*)automaticobservability
Context/token guard (gauge, alert, auto-/compact)config (tokens.guard)automaticgaugeobservability
Force-compact a busy critical agent (interrupt→/compact→resume)force-compact (config tokens.force_compact)set_force_compactobservability
Crash / anomaly detection (OOM, loop, pre-crash)configautomaticobservability
FeatureCLIMCPSkillWebTUIDocs
Export session metadataexportexport_sessionscli
Import session metadataimportimport_sessionscli
Save a spawn presetpreset save / library save-presetCLI-only (local config authoring)cli
List presetspreset listCLI-onlycli
Save a prompt templateprompt-template save / library save-promptCLI-only (local config authoring)cli
List prompt templatesprompt-template listCLI-onlycli
Fill a prompt template into a spawnstart --prompt-template <name> --set VAR=valueCLI-onlycli
Browse presets + prompt templates + pipeline templates (one umbrella)library listlibrary_listcli
FeatureCLIMCPSkillWebTUIDocs
List registered pluginsplugin listlist_pluginsplugins
Custom task types via pluginsconfigenforced at spawnplugins
Lifecycle hook events (pre/post spawn, commit, check, teardown)configenforcedplugins

The browser GUI (served by the daemon) is a URL-routed shell (/cockpit home · /tui · /pipelines · /metrics · /terminals · /archive · /others · /agent/<id> — deep-linkable, back/forward, shareable). It provides: the Cockpit home (Fleet header + agent grid), a full-screen TUI launcher (top-bar ▢ TUI button) that streams the literal warden tui into the browser, a Pipelines tab with a live DAG, a Metrics tab (per-agent and fleet-total CPU/memory, per-agent context, fleet size, tokens saved — two-column on desktop, single-column on mobile), a Terminals tab (PTY viewport + New terminal; terminals are excluded from the agent grid/counts), an Archive tab, the Others catch-all (attention queue, conflicts, activity; sits last), in-browser attach terminals, a header-button Context & Messages overlay, spawn modal, bulk actions, keyboard shortcuts, and theming.

FeatureWhereDocs
URL routing (deep links, back/forward)all routesweb-mission-control
Agent grid + Fleet header / busy-idle badgesCockpit (/cockpit, home)web-mission-control
Attention queue / approvalsOthers (/others)web-mission-control
Pipelines tab + live DAGPipelines (/pipelines)web-mission-control
Metrics: per-agent + fleet-total CPU/mem, per-agent context, fleet size, tokens saved (2-col responsive)Metrics (/metrics)observability
Terminals tab (PTY viewport + New terminal; excluded from the agent grid/counts)Terminals (/terminals)web-mission-control
Archive (history)Archive (/archive)web-mission-control
In-browser attach terminalAgent (/agent/<id>)web-mission-control
Full-screen TUI launcher — the three-pane cockpit streamed edge-to-edge into the browser (same panes, shortcuts, real shells & live agent sessions; Ctrl+Q exits); self-healing (survives daemon restarts; a wedged session is auto-rebuilt, or force one with warden tui --rebuild-web-cockpit)top-bar ▢ TUI button (/tui)web-mission-control
Per-agent backend logo on cards + group-by Agent (claude/aider/…; empty ⇒ claude)Cockpit (/cockpit)agent-backends
Context & messagesheader 🗒 overlayweb-mission-control
Spawn modal (+ New agent) — incl. a Role dropdown (built-in role picker, defaults general)header buttonagent-roles
Bulk actionsBulk action barweb-mission-control
Conflicts panel / activity feedOthers (/others)web-mission-control
Keyboard shortcuts + helpglobalweb-mission-control
REST API + OpenAPI (/api/docs)daemonapi-openapi

A terminal mission-control. Keys: n spawn · t new/focus terminal · enter attach · i info/inspector · a approve · x terminate · D delete · d digest · r refresh · f filter · g/G top/bottom · o/p panes · s sort · c context · tab switch view · M-t/M-a/M-p rotate the terminal pane over terminals / the agent pane over agents / the agent pane over pipeline agents (add ShiftM-T/M-A/M-P — to reverse; each grabs focus on the pane it drives; or the config-free Ctrl-b prefix fallback — Ctrl-b then t/a/p — for terminals that don’t send Alt/Option as Meta, e.g. macOS Terminal.app / iTerm2) · ? help · q quit. A and a bold name badge mark the agent/terminal currently shown in a pane (tracks both enter-open and the M-t/M-a/M-p rotation). Includes a pipeline view and per-job info.

FeatureWhereDocs
Agent list + live status (incl. per-agent backend token; empty ⇒ claude)control pane → Agents sectiontui-cockpit
Control-pane navigator tree — four fixed sections (Approvals · Pipelines · Agents · Terminals)control panetui-cockpit
Terminals section + default terminal at startup; t create/focus a terminal in the opened agent’s dircontrol pane → Terminals section / terminal panetui-cockpit
Inspector (i) — agent & pipeline detailinspectortui-cockpit
Approvals cockpit (a)cockpittui-cockpit
Digest (d)inspectortui-cockpit
Pipeline viewpipeline panetui-cockpit
Agent sub-trees (spawned agents nest under parent; h/l collapse; tombstone on parent delete)main panetui-cockpit
Spawn / attach / terminate / deletekeybindingstui-cockpit
Role picker in the new-agent form (ctrl+r; built-in catalog, defaults general)new-agent formagent-roles
Shift-to-select (native copy under tmux mouse mode)help hinttui-cockpit
Native tmux window when launched inside tmux (no nesting; auto via $TMUX)tui --tmux-nativetui-cockpit
FeatureCLIMCPSkillWebTUIDocs
MCP server (stdio)mcpn/a (is the server)mcp-and-skill
/warden Claude skillshipped in skills/drives MCP/CLImcp-and-skill
Interactive REPLrepl (aliases interactive, i)CLI-only (interactive REPL)repl
↳ deterministic / commands (no model)/agents, /spawn, /tell, … /helprepl
↳ line editor: history, reverse-search, live / menu, Tab completion, colourreadline-backedrepl
↳ guided argument forms (pick-lists + free text, LLM pre-fill)bare /spawn, /spawn+ <prompt>repl

15. Backend registry (detected CLIs, tiers, thinking-mode)

Section titled “15. Backend registry (detected CLIs, tiers, thinking-mode)”

warden detects the coding-agent CLIs installed on this machine (claude, codex, aider, …) plus a reserved local row for the free/local model, and persists each in an embedded ScrivaDB store (~/.warden/backends) with a billing tier, an enabled flag, and at most one default — plus a store-level internal-thinking mode. The store is warden’s single source of truth for which backends exist and how they’re tiered: autopilot’s cost-tier ladder and the internal free/local thinking router both read from it. Detection is a fact (installed / binary path / detected-at) a rescan reconciles; tiering is a preference (tier / default / enabled) a rescan preserves.

Tiers: free · subscription · pay_per_use · unclassified (and the reserved, system-set local). Thinking-mode: local_only · free_plus_local — which backends warden’s own internal thinking may call (never a paid one).

FeatureCLIMCPSkillWebTUIDocs
List the registry (installed, tier, default, enabled, limited) + thinking-modebackends list (alias ls)list_backends✓ (🧩 backends panel)bbackend-registry
Rescan installed CLIs (reconcile detection, preserve prefs)backends rescanrescan_backends✓ (⟳ Rescan)rbackend-registry
Set a backend’s billing tier (free|subscription|pay_per_use|unclassified)backends tier <id> <tier>set_backend_tier✓ (Tier dropdown)t (cycle)backend-registry
Set the single default backend (rejects local)backends default <id>set_default_backend✓ (Default radio)d/enterbackend-registry
Enable / disable a backendbackends enable|disable <id>— (REST PATCH /backends/{id}; no MCP tool)✓ (via CLI)✓ (Enabled checkbox)e/spacebackend-registry
Internal-thinking mode (which backends internal thinking may call)backends thinking-mode <mode>set_thinking_mode✓ (mode select)m (toggle)backend-registry
Internal free/local thinking router (classification, naming, digest narration, memory curation — never a paid call)config (backends.limit_retry)automaticbackend-registry

The registry supersedes the deprecated autopilot.brain.backends ladder and autopilot.brain.allow_pay_per_use gate — those keys are imported once on the first boot after upgrade, then ignored (edit tiers via the surfaces above).

These operate on the host, the daemon process, the local shell, or the bearer secret — they are intentionally not exposed over MCP or web, because doing so would either be meaningless (process/host control) or a security smell (handing out / rotating the very token that guards the MCP and HTTP channels).

FeatureCLIWhy CLI-onlyDocs
Run / manage the daemondaemonprocess control on the hostinstall
Bearer token generate / show / rotate (+ read-only token)tokenthe secret that protects every other surface; show --readonly for the view-only WARDEN_READONLY_TOKENremote-access
Local-LLM model picker (memory-ranked)llm suggestreads host hardware to size the orchestrator modelrepl
Configuration view / init / pathconfiglocal file authoringenv-vars
Health / environment doctordoctorhost diagnosticstroubleshooting
Install missing dependenciessetupinstalls host packages (brew/apt/dnf/pacman + official installers)install
First-run tutorialtutorialinteractive walkthroughquickstart
Shell completioncompletionshell integrationinstall
Hook entry points (guards)hook / *-guardinvoked by Claude Code hookslifecycle-and-rails
Scoped factory-reset (--scope runtime|data|full; --backup, --keep-config, --keep-backends, --prune-worktrees; requires --yes)factory-resetdestructive host wipe; daemon must be stopped for the data phasecli
Versionversion

Every fleet/data feature is reachable over MCP (81 tools, including the umbrella stop_agent). The only CLI-exclusive features are the host/process/interactive/secret commands in §16 (plus interactive attach/repl, the local-config preset / prompt-template authoring commands, and the agent-native, worktree-local review / models verbs — they exec in the agent’s worktree with no daemon round-trip, so they have no MCP twin by design), which are CLI-only by design. New parity tools added for full coverage: digest, get_metrics, savings, spend, search, history, audit_log, list_worktrees, list_plugins, get_pressure, set_auto_approve, set_auto_approve_policy, set_permission_mode, prune_worktrees, export_sessions, import_sessions, rotate_agent, handoff_agent, pause_pipeline, resume_pipeline, retry_pipeline_job, edit_pipeline_job, emit_pipeline_output, delete_pipeline, validate_pipeline, list_pipeline_templates, library_list, create_schedule, get_schedule, enable_schedule, disable_schedule, delete_schedule, fork_agent, set_role, list_roles, list_backends, rescan_backends, set_backend_tier, set_default_backend, set_thinking_mode. (Enable/disable a backend is CLI/web/TUI + REST PATCH /backends/{id} only — intentionally not an MCP tool.)