Everything adf accepts, and every command and key of the terminal app, generated from the code. For task-oriented guides see the ADF CLI docs.
Command line
Usage: adf [--url <daemon-url>] [--json] <command>
adf [tui] [--view <id>] [--agent <id>] [--loop <name>]
adf daemon [start|status|stop|restart|logs|token]
With no command, adf opens the terminal app. Commands that talk to the daemon start a local one in the background first when none answers (not with --no-daemon / ADF_NO_AUTOSTART=1, a remote --url, or next to a running ADF Studio). <agent> is an agent id, handle or name.
Commands
| Command | Description |
|---|
adf tui | The terminal app (the default) |
adf agents | List loaded agents |
adf status <agent> | Show runtime status |
adf start <agent> | Start an agent and fire startup when applicable |
adf stop <agent> | Stop and unload an agent |
adf unload <agent> | Alias for stop |
adf loops <agent> | List the agent’s loops: main plus its inner (side) loops, parallel threads with their own history, e.g. a memory consolidator on a timer |
adf interrupt <agent> [--loop <name>] | End the running turn; the loop goes idle and keeps accepting chats, timers and triggers |
adf abort <agent> [--loop <name>] | Hard-abort the current turn without unloading; that loop stays stopped until the agent is reloaded (prefer interrupt) |
adf runtime [agent] | Show daemon or agent runtime diagnostics |
adf providers | Show provider configuration and agent resolution |
adf auth | Show auth and credential presence |
adf auth login <chatgpt|grok> | Sign in to a subscription provider [—relay|—loopback] chooses where the ChatGPT OAuth callback is served; defaults to relay when —url points at a remote daemon |
adf auth logout <chatgpt|grok> | Clear a subscription provider’s tokens |
adf settings | Show sanitized daemon runtime settings |
adf network | Show mesh and WebSocket diagnostics |
adf network mesh [enable|disable] | Control daemon mesh registration |
adf network server [start|stop|restart] | Control the mesh HTTP server |
adf network tools|lan|runtimes | Show mesh tools, LAN addresses, or peers |
adf usage [agent] | Show runtime or agent token usage |
adf config <agent> | Show agent config |
adf files <agent> | List agent files |
adf file <agent> <path> | Print one agent file |
adf inbox <agent> | List inbox messages |
adf outbox <agent> | List outbox messages |
adf timers <agent> | List timers |
adf tasks <agent> | List tasks and pending approvals |
adf task <agent> <taskId> | Show one task |
adf approve <agent> <taskId> | Approve a pending task |
adf deny <agent> <taskId> [reason] | Deny a pending task |
adf asks <agent> | List pending ask requests |
adf answer <agent> <requestId> <answer> | Answer a pending ask request |
adf identities <agent> | List identity metadata without secret values |
adf mcp [agent] | Show daemon MCP registrations or agent MCP state |
adf adapters [agent] | Show daemon adapter registrations or agent adapter state |
adf events [agent] | Follow daemon SSE events |
adf chat <agent> [--loop <name>] <message> | Send chat (to main, or an inner loop) and print the accepted turn id |
adf identity | Show the owner identity status |
adf identity new | Create an owner identity; shows the 12-word seed phrase once — write it down |
adf identity restore | Restore the owner identity from its seed phrase (typed at a hidden prompt; the same phrase as ADF Studio = the same owner) |
adf identity unlock|lock | Unlock/lock a passphrase-protected identity (machines without an OS keychain) |
adf templates | List agent templates |
adf new [name] [--template <id>] [--provider <id>] [--model <id>] [--dir <path>] [--start] | Create an agent from a template, sealed with the owner identity (like Studio) |
Daemon
| Command | Description |
|---|
adf daemon [--port <n>] [--host <h>] [--settings <file>] | Run the daemon in the foreground (Ctrl+C stops it; also ADF_DAEMON_PORT, ADF_DAEMON_HOST, ADF_DAEMON_SETTINGS, ADF_USER_DATA_DIR) |
adf daemon start [--port <n>] [--force] | Start it in the background (what adf does on its own); —force skips the ADF Studio check |
adf daemon status | Is it running: pid, uptime, version, log file |
adf daemon stop | Stop it gracefully (agents unloaded, containers stopped) |
adf daemon restart | Stop, then start in the background |
adf daemon logs [-f] [-n <lines>] | Show the background daemon’s log (-f follows) |
adf daemon token | Print this machine’s daemon access token (for clients on other machines: —token or ADF_DAEMON_TOKEN) |
adf daemon --help:
Usage: adf daemon [--port <n>] [--host <h>] [--settings <file>]
adf daemon start [--port <n>] [--force]
adf daemon status | stop | restart [--port <n>]
adf daemon logs [-f] [-n <lines>] [--port <n>]
adf daemon token
Without a subcommand the daemon runs in the foreground (Ctrl+C stops it).
start runs it in the background, like adf does on its own when it needs one;
the log goes to <data dir>/logs/adf-daemon.log. stop is graceful: agents are
unloaded and compute containers stopped.
Every request but GET /health needs the daemon's access token. adf reads it
on this machine by itself (<data dir>/daemon-token, created on first start);
token prints it for a client elsewhere (--token or ADF_DAEMON_TOKEN there).
ADF_DAEMON_TOKEN overrides the file, and is required with a non-loopback
--host (plus ADF_DAEMON_ALLOWED_HOSTS for host names clients use).
Behind a reverse proxy on this host set ADF_DAEMON_BEHIND_PROXY=1: identity
secrets and stop then work only from adf on this host, against its loopback port.
Environment: ADF_DAEMON_PORT, ADF_DAEMON_HOST, ADF_DAEMON_SETTINGS,
ADF_USER_DATA_DIR, ADF_DAEMON_PIDFILE, ADF_DAEMON_TOKEN,
ADF_DAEMON_ALLOWED_HOSTS, ADF_DAEMON_BEHIND_PROXY
Options
| Option | Description |
|---|
--url, -u <url> | Daemon URL |
--token <token> | Daemon access token (default: ADF_DAEMON_TOKEN, else the local daemon’s token file) |
--json | JSON output |
--no-daemon | Never start the daemon automatically |
--version, -v | Print the version |
Terminal app options
adf [tui] [options] (adf tui --help). Any of these flags opens the terminal app.
| Option | Description |
|---|
--url, -u <url> | Daemon URL (default ADF_DAEMON_URL or http://127.0.0.1:7385) |
--token <token> | Bearer token (default: ADF_DAEMON_TOKEN, else the local daemon’s token file) |
--view <id> | Start view: chat | files | loops | inspect | fleet | runtime |
--agent <id|handle> | Preselect an agent |
--loop <name> | Preselect one of its loops (default main) |
--theme <name> | adf (dark) | adf-light | adf-contrast | adf-mono (also ADF_TUI_THEME) |
--mono | No color (also NO_COLOR=1) |
--ascii | ASCII glyphs (also ADF_TUI_ASCII=1) |
--no-alt-screen | Render in the main screen buffer (also turns mouse mode off) |
--mouse | Mouse mode, the default: the wheel scrolls what is under the pointer, a click expands a tool call or thinking, drag selects and copies, right-click pastes (Shift+drag, Option+drag in iTerm2: the terminal’s own selection) |
--no-mouse | The terminal’s own mouse (also ADF_TUI_MOUSE=0, /mouse off; remembered) |
--no-kitty | Never enable the kitty keyboard protocol (Shift+Enter; also ADF_TUI_KITTY=0) |
-h, --help | Show this help |
Environment
| Variable | Used by | Effect |
|---|
ADF_DAEMON_URL | CLI, terminal app | Daemon URL (default http://127.0.0.1:7385); --url wins |
ADF_DAEMON_TOKEN | CLI, terminal app | Daemon access token. Clients: sent as the bearer token (--token wins). Daemon: used instead of the <data dir>/daemon-token file; required with a non-loopback --host |
ADF_NO_AUTOSTART | CLI, terminal app | 1: never start the daemon automatically (same as --no-daemon) |
ADF_DAEMON_PORT | daemon | Port for adf daemon (default 7385); adf daemon <sub> also uses it when no --url / --port is given |
ADF_DAEMON_HOST | daemon | Bind address for adf daemon (default 127.0.0.1). Non-loopback needs ADF_DAEMON_TOKEN |
ADF_DAEMON_SETTINGS | daemon | Settings file path; its folder is the data dir (token, pid file, logs, identity file). Clients use it to find the local token file |
ADF_USER_DATA_DIR | daemon | Overrides the user data folder that holds the default settings file (shared with ADF Studio) |
ADF_DAEMON_PIDFILE | daemon | Pid file path (default <data dir>/adf-daemon.pid, adf-daemon-<port>.pid for other ports) |
ADF_DAEMON_ALLOWED_HOSTS | daemon | Extra Host names a non-loopback daemon accepts (comma or space separated, name or name:port): the names remote clients or a proxy use |
ADF_DAEMON_BEHIND_PROXY | daemon | 1: a reverse proxy on this host forwards to the daemon. Owner identity secrets and daemon stop then also need <data dir>/daemon-local-proof, which only adf on this host sends: run them on the host against its loopback port |
ADF_OWNER_PASSPHRASE | daemon | Unlocks a passphrase-file owner identity at daemon start (machines without an OS keychain) |
ADF_OWNER_PASSPHRASE_FILE | daemon | Same, read from the first line of this file |
ADF_SECRET_STORE | daemon | file or keychain: where the owner phrase and provider keys are kept (default: the OS keychain when usable, else the passphrase file) |
ADF_KEYCHAIN | daemon | 0 or off: never use the OS keychain |
ADF_TUI_THEME | terminal app | Same as --theme |
ADF_TUI_ASCII | terminal app | 1: same as --ascii |
ADF_TUI_MOUSE | terminal app | 0: the terminal’s own mouse, 1: mouse mode; wins over the saved /mouse choice |
ADF_TUI_KITTY | terminal app | 0: same as --no-kitty |
ADF_TUI_SHIFT_ENTER | terminal app | 1: treat Shift+Enter as working from the start (your terminal sends it through a keybinding) |
ADF_TUI_FULL_HEIGHT | terminal app | 1: Windows: also use the bottom terminal row |
ADF_TUI_CLIPBOARD | terminal app | osc52: copy only through the terminal (OSC 52), never pbcopy / clip / wl-copy / xclip |
ADF_TUI_PREFS | terminal app | Where sidebar, mouse, stopped-agents filter and welcome choices are kept (default <config dir>/adf-studio/tui-prefs.json); off: session only |
ADF_EDITOR | terminal app | External editor, before VISUAL and EDITOR (default notepad on Windows, else nano, then vi) |
VISUAL | terminal app | External editor when ADF_EDITOR is not set |
EDITOR | terminal app | External editor when ADF_EDITOR and VISUAL are not set |
NO_COLOR | terminal app | Any value: no color (same as --mono); wins over --theme |
TERM | terminal app | dumb: no color |
Terminal app
Views
| Key | View | Id (--view, /view) |
|---|
1 | Chat | chat |
2 | Files | files |
3 | Loops | loops |
4 | Inspect | inspect |
5 | Fleet | fleet |
6 | Runtime | runtime |
Slash commands
Type / in the prompt; Tab completes names and arguments. Commands work from any view (some need a selected agent); the group is the view that owns it, and usually the one it opens. Unknown commands are reported, never sent to an agent.
Shell (every view)
| Command | Aliases | Description |
|---|
/help | /? | Keys, commands and what loops are |
/quit | /exit /q | Leave the terminal app (agents keep running in the daemon) |
/view <chat|files|loops|inspect|fleet|runtime> | | Switch the main pane |
/agent <handle|id> [loop] | /a | Select an agent, and optionally one of its loops (default main) |
/refresh | /r | Re-read agents, loops and approvals from the daemon |
/theme [adf|adf-light|adf-contrast|adf-mono|next] | | Pick a color theme (no argument opens the picker) |
/url [daemon-url] [--token <token>] | | Show the daemon URL, or reconnect to another daemon (for a remote daemon pass —token or set ADF_DAEMON_TOKEN) |
/auth | | Provider sign-in: ChatGPT and Grok status, sign in, sign out |
/login [chatgpt|grok] | | Sign the daemon in to ChatGPT (browser) or Grok (device code) |
/logout <chatgpt|grok> | | Sign the daemon out of ChatGPT or Grok (asks) |
/json [on|off] | | Toggle raw JSON in Inspect and Runtime pages |
/sidebar [on|off] | | Show or hide the fleet sidebar (Ctrl+B); remembered across launches |
/mouse [on|off] | | Mouse mode (on, the default: click expands, drag selects + copies, right-click pastes, the wheel scrolls under the pointer; off: the terminal’s own mouse); remembered |
/terminal-setup | /terminal | Shift+Enter for a newline in this terminal: what works now and how to set it up |
/identity [create|restore|unlock|lock] | | Owner identity: status, create, restore from the 12 words, unlock, lock |
/new [name] | | Create a new agent from a template (sealed under your owner identity) |
/web [on|off] | | The daemon’s web server that serves agent websites / APIs: status, start (on), stop (off, asks) |
/open-site [agent] | /site | Open an agent’s website in the browser (starts the web server if it is stopped) |
/copy-site [agent] | | Copy an agent’s website URL |
/welcome | | What ADF is, and the getting-started checklist |
/channels [add [telegram|discord|slack|email|whatsapp] | remove <channel>] | | The selected agent’s channels (Telegram, Discord, Slack, email, WhatsApp): state, add, remove |
/provider [add [preset] | list | remove <id>] | | Model providers: add one with an API key (stored in the daemon’s secret store), list, remove. Subscriptions: /login |
/mcp [add [catalog-name | npm:pkg | python:pkg | https://url] | remove <name> | restart <name> | logs <name>] | | The selected agent’s MCP servers: state, add (catalog, npm, Python, remote URL), restart, credentials, tools, logs, remove |
/templates [template-id] | | Agent templates: list, details, new, duplicate, rename, notes, default, review, reset, delete, edit in $EDITOR |
/skills [add [name | https-url | ./path] | mute|unmute|remove <name> | sources [add|remove <url>]] | | The selected agent’s skills: preview, mute, edit, remove; add from the catalog, a URL or a local folder |
/context [loop] | | Context usage of the selected loop: total vs the auto-compact threshold, what fills it (prompt, files, tools, MCP, conversation), compact now |
Chat view
| Command | Aliases | Description |
|---|
/interrupt | /abort | End the selected loop’s running turn; the loop goes idle and keeps working (Esc) |
/clear | | Clear the selected loop’s history (archived per the agent’s audit settings) |
/compact | | Summarize the selected loop’s history now to free context (not while it is mid-turn) |
/trigger <type> [json-data] | | Fire an ADF event into the selected loop (bypasses trigger config) |
/copy [n] | | Copy the last (or n-th last) reply of the selected loop to the clipboard |
/thinking | | Expand or collapse thinking blocks in chat (t) |
/approve [all|always] | | Approve the selected loop’s pending tool call · all: every gated call (never protection overrides) · always: always approve that tool (asks) |
/reject [feedback] | | Reject the selected loop’s pending tool call; the agent sees the feedback |
Files view
| Command | Aliases | Description |
|---|
/files | | Browse the selected agent’s document, mind and files |
/open <path> | | Open a file of the agent in the viewer (fuzzy path; also document, mind) |
/edit <path> | | Edit a file of the agent in $VISUAL/$EDITOR, then confirm the write |
/doc | /document | Show the agent document |
/mind | | Show the agent’s mind (its memory; inner loops such as a consolidator tend it) |
/new-file [path] | | Create a file in the agent (opens $EDITOR) |
/rm <path> | | Delete a file of the agent (asks first) |
/mv <from> <to> | | Rename or move a file of the agent |
Loops view
| Command | Aliases | Description |
|---|
/loop [<name> | new [template | <name> <goal…>] | edit|rm|on|off <name> | send <name> <msg…> | chat <name> | schedule <name>] | | Loops: switch, create (templates), edit, enable/disable, delete, message or schedule an inner loop |
/main | | Back to the main loop |
/loops | | Loops manager: this agent’s loops, timers, triggers and history |
/timers [all] | | Timers of this agent, or all agents’ upcoming timers |
/timer add [--loop <name>] | edit <id> | rm <id> | | Create, edit or delete a timer (a timer with a loop runs that loop on a schedule) |
/triggers | | Triggers of this agent: enable/disable, edit targets and the loop each target wakes |
/history [loop] | | Browse a loop’s persisted history (tokens per entry, filters) |
Inspect view
| Command | Aliases | Description |
|---|
/inspect [diag|settings|config|usage|mcp|channels|identity|logs|tables|tasks|events] | | Inspect the selected agent: status, settings, config, usage, MCP, channels, identities, logs, tables, its events |
/model [[provider/]model | inherit] | | Change the selected agent › loop’s model (main: the agent config; an inner loop: its override, inherit clears it). No argument: picker |
/config [edit] | | The selected agent’s config (Inspect › Config); edit opens it in $EDITOR |
/tasks [pending|active|all] | | The selected agent’s tasks (Inspect › Tasks): approvals and async tool calls; y/n/a act on a call waiting for approval |
/instructions [edit] | | Edit the selected agent’s instructions (a dialog; edit opens $EDITOR) |
/tools [filter] | | The selected agent’s tools: enable, show, require approval, lock (built-in and MCP) |
/compaction [tokens|default] | | Compaction threshold of the selected agent › loop (80000, 80k; default = main’s default / an inner loop inherits). No argument: every loop |
Fleet view
| Command | Aliases | Description |
|---|
/agents [running|all | interrupt|abort <agent> [loop] | refresh] | | Fleet overview; running/all: hide or show stopped tracked agents (remembered); interrupt an agent’s running turns (abort = hard stop until reload); refresh |
/start [agent] | | Start an agent (runs its startup turn when it starts active); a stopped tracked agent is loaded first |
/stop [agent] | /unload | Stop and unload an agent and all its loops (asks first) |
/load [path.adf] [--review] [--start] | | Load an .adf into the daemon (no path: file picker with Tab completion) |
/switch <agent>[/loop] | /sw | Jump to an agent (fuzzy) or one of its loops and open the chat |
/autostart [dir…] | | Scan tracked directories and start every reviewed autostart agent (asks first) |
/track [dir] | | Track a folder of agents (its reviewed autostart agents load now and at every daemon start); no dir: folder picker |
/untrack <dir> | | Stop tracking a folder (asks; files are not touched; optionally unload its agents) |
Runtime view
| Command | Aliases | Description |
|---|
/runtime [status|folders|identity|auth|providers|usage|network|compute|mcp|channels|settings|events] | | The daemon: status, owner identity, sign-in, providers, usage, network, compute, MCP, channels, settings, every agent’s events |
/status | | Daemon health, version, uptime and every agent’s loops (Runtime › Status) |
/usage | | Token usage across agents, by model (Runtime › Usage) |
/providers | | LLM providers and which agents use them (Runtime › Providers) |
/network | | Mesh, LAN and WebSocket status; mesh and server on/off (Runtime › Network) |
/compute | | Container runtime and containers (Runtime › Compute) |
/settings | | Daemon settings (secrets redacted) (Runtime › Settings) |
/events [type-filter…] [--agent] [--loop] [--all] | | Every agent’s live umbilical events (tail -f), e.g. /events tool. -turn.delta —agent (Runtime › Events) |
Palette actions
Ctrl+K (or Ctrl+P, or : outside the prompt) searches these, plus views, agents, loops, slash commands and recent files.
Shell (every view)
| Action | Group | Shortcut |
|---|
| Refresh from daemon | Actions | |
| Keys & commands | Actions | ? |
| Next color theme | Actions | |
| Toggle raw JSON in Inspect and Runtime | Actions | |
| Show / hide the sidebar | Actions | Ctrl+B |
| Mouse mode on / off | Actions | |
| Terminal setup: Shift+Enter newline | Actions | |
| Quit TUI (agents keep running) | Actions | Ctrl+C |
| Owner identity | Actions | |
| Create owner identity | Actions | |
| Restore owner identity from seed phrase | Actions | |
| Unlock owner identity | Actions | |
| New agent | Actions | n |
| Provider sign-in | Actions | |
| Sign in to ChatGPT | Actions | |
| Sign in to Grok | Actions | |
| Open agent website | Web | w |
| Copy agent website URL | Web | Shift+w |
| Start web server | Web | |
| Stop web server… | Web | |
| MCP servers of this agent | Actions | |
| Add an MCP server | Actions | |
| Welcome & getting started | Actions | |
| Channels of this agent | Actions | |
| Add Telegram channel | Actions | |
| Add Discord channel | Actions | |
| Add Slack channel | Actions | |
| Add Email channel | Actions | |
| Add WhatsApp channel | Actions | |
| Connect a model provider | Actions | |
| Agent templates | Actions | |
| Skills of this agent | Actions | |
| Add a skill | Actions | |
| Context usage | Actions | |
Chat view
| Action | Group | Shortcut |
|---|
| Interrupt running turn | Chat | Esc |
| Next loop | Chat | Shift+→ |
| Previous loop | Chat | Shift+← |
| Toggle thinking blocks | Chat | t |
| Copy last reply | Chat | c |
| Fire a trigger into this loop… | Chat | |
| Compact this loop’s history now | Chat | |
| Clear this loop’s history… | Chat | |
| Approve the pending tool call | Chat | |
| Approve all pending tool calls | Chat | |
| Always approve this tool… | Chat | |
| Reject the pending tool call with feedback… | Chat | |
Files view
| Action | Group | Shortcut |
|---|
| Show agent document | Files | |
| Show agent mind | Files | |
| Edit agent mind in $EDITOR | Files | |
| New file… | Files | |
| Browse files | Files | |
| Show inbox | Files | |
| Show outbox | Files | |
| Show meta | Files | |
Loops view
| Action | Group | Shortcut |
|---|
| New inner loop… | Loops | |
| New loop from template: Memory consolidator | Loops | |
| New loop from template: Researcher | Loops | |
| New loop from template: Critic / reviewer | Loops | |
| New loop from template: Reflector | Loops | |
| Manage loops | Loops | |
| Schedule the selected loop… | Loops | |
| Timers | Loops | |
| Upcoming timers (all agents) | Loops | |
| Triggers | Loops | |
| Loop history | Loops | |
| Edit the selected loop… | Loops | |
Inspect view
| Action | Group | Shortcut |
|---|
| Agent settings | Inspect | |
| Edit agent instructions | Inspect | |
| Agent tools | Inspect | |
| Compaction threshold | Inspect | |
| Show tasks | Inspect | |
| Change model | Inspect | |
| Edit agent config in $EDITOR | Inspect | |
| Events of the selected loop only | Inspect | |
| Inspect: Status | Inspect | |
| Inspect: Settings | Inspect | |
| Inspect: Config | Inspect | |
| Inspect: Usage | Inspect | |
| Inspect: MCP | Inspect | |
| Inspect: Channels | Inspect | |
| Inspect: Identities | Inspect | |
| Inspect: Logs | Inspect | |
| Inspect: Tables | Inspect | |
| Inspect: Tasks | Inspect | |
| Inspect: Events | Inspect | |
Fleet view
| Action | Group | Shortcut |
|---|
| Track a folder… | Fleet | f |
| Untrack folder… | Fleet | |
| Load agent file (.adf)… | Fleet | o |
| Start selected agent | Fleet | s |
| Stop + unload selected agent… | Fleet | x |
| Interrupt running turns of selected agent… | Fleet | a |
| Hard abort selected agent’s running loops (stopped until reload)… | Fleet | |
| Autostart agents from tracked directories… | Fleet | Shift+a |
| Hide / show stopped agents (tracked, not loaded) | Fleet | Shift+h |
| Refresh fleet (agents, timers, inbox, runtime) | Fleet | r |
| Open selected agent + loop in chat | Fleet | Enter |
Runtime view
| Action | Group | Shortcut |
|---|
| Runtime: Status | Runtime | |
| Runtime: Folders | Runtime | |
| Runtime: Identity | Runtime | |
| Runtime: Sign-in | Runtime | |
| Runtime: Providers | Runtime | |
| Runtime: Usage | Runtime | |
| Runtime: Network | Runtime | |
| Runtime: Compute | Runtime | |
| Runtime: MCP | Runtime | |
| Runtime: Channels | Runtime | |
| Runtime: Settings | Runtime | |
| Runtime: Events | Runtime | |
Keys
The same lists as ? / /help in the app.
Global
| Keys | Action |
|---|
Ctrl+K Ctrl+P | Command palette (also : when the prompt is not focused) |
Tab Shift+Tab | Cycle focus: sidebar → main → prompt (a hidden sidebar is skipped); from the tab bar Tab goes to the first pane |
Ctrl+B | Hide / show the fleet sidebar: full-width chat (also /sidebar; remembered) |
1-6 Alt+1-6 | Switch view. The selected agent: 1 Chat 2 Files 3 Loops 4 Inspect · the app: 5 Fleet (every agent) 6 Runtime (the daemon) (bare digits outside the prompt) |
Shift+← Shift+→ | Previous / next loop of the selected agent, from anywhere (also Ctrl+←/→, except in a prompt with text) |
Alt+← Alt+→ | In the prompt: word left / right (also Alt+B / Alt+F, and Ctrl+←/→ while there is text) |
Home End | In the prompt: line start / end (also Ctrl+A / Ctrl+E, Cmd+← / Cmd+→) |
Ctrl+Backspace Alt+Backspace Ctrl+W | In the prompt: delete the word before the caret (Option+Backspace on a Mac) |
Ctrl+Delete Alt+d | In the prompt: delete the word after the caret |
Cmd+Backspace Ctrl+U | In the prompt: delete to the line start (Terminal.app sends nothing for Cmd+Backspace: use Ctrl+U) |
/ | Slash command (focuses the prompt) |
? | This help (when the prompt is not focused) |
Esc | In order: close the dialog or completion menu · end a view’s own mode (filter, search, viewer, a selected chat item) · (chat) interrupt the running turn · then focus the tab bar (from the sidebar, the main pane, or an empty prompt) |
← → | Files, Loops, Inspect, Runtime: the view’s tabs (from its lists; not while typing a filter) |
Enter Backspace | In a list: open the item (file, message, entry, task, row, event) · back one level (Esc too). Backspace never deletes |
Esc Esc | Clear a prompt that has text (the next Esc goes to the tab bar) |
Ctrl+C | Cancel dialog · clear the prompt · press twice to quit (agents keep running) |
Enter | Send the prompt (to the selected agent › loop unless it starts with /). With a completion menu open: take the highlighted item; a /command with all its required arguments runs, else it is inserted to type them |
Shift+Enter Alt+Enter Ctrl+J | Newline in the prompt (or end a line with ). Shift+Enter needs a terminal that tells it apart: /terminal-setup |
Ctrl+↑ Ctrl+↓ | Prompt history (per agent › loop in Chat); ↑ ↓ too on the first / last line of text |
↑ ↓ | Chat, empty prompt: select the previous / next transcript item (Enter expands, Esc lets go; PgUp PgDn Home End scroll) · otherwise move in the text / completion menu |
Mouse | Mouse mode (default): the wheel scrolls what is under the pointer; click selects / expands a tool call; drag selects + copies (double-click word, triple-click line); right-click pastes. Shift+drag (Option+drag iTerm2, Fn+drag Terminal.app): the terminal’s own selection. /mouse off: the terminal’s mouse |
w | Fleet, Inspect › Status, Chat transcript: open the agent’s website (W copies the URL) · on the tab bar: web server on / off |
Tab | In the prompt with a menu open: complete /commands, their arguments, @files (Chat) without running |
Tab bar
Esc focuses the view tabs in the header once nothing else takes it.
| Keys | Action |
|---|
← → | Previous / next view: switches as you move (h l too; Home / End first / last). Left of 1 Chat is the agent label |
Enter | On the agent label: switch agent / loop (also a click on it in mouse mode) |
Enter ↓ | Into the view (Chat: its prompt) |
1-6 | Jump straight into a view |
Tab Shift+Tab | Back into the panes (first / last) |
w | Web server on / off (stopping asks); also a click on the header’s web badge in mouse mode, /web on|off |
| Keys | Action |
|---|
↑ ↓ | Move; selects that agent › loop everywhere (PgUp PgDn Home End too) |
→ ← | Expand an agent into its loops · collapse / back to the agent |
Space | Expand or collapse the agent |
Enter | Open the agent › loop in Chat |
a-z | Type to filter agents and loops (Backspace edits, Esc clears) |
Dialogs
| Keys | Action |
|---|
y Enter | Confirm |
n Esc | Cancel |
1 Chat
| Keys | Action |
|---|
Enter | Send to the selected loop (queued while it runs) |
Shift+← Shift+→ | Previous / next loop tab (also Ctrl+←/→ on an empty prompt; ← → in the transcript) |
↑ ↓ | Select the previous / next transcript item (message, reply, thinking, tool call, notice, approval, marker): from an empty prompt or the transcript (j k). An item taller than the view scrolls inside first |
Enter Space | Expand / collapse the selected item (tool call input + result, thinking, context, approval, wake). Mouse mode: click the item |
Esc | Let go of the selected item (before interrupting) |
PgUp PgDn | Scroll by pages (also while typing); the mouse wheel scrolls by lines |
Home End | With an empty prompt: top, loading older history · follow live (g G in the transcript) |
Ctrl+↑ Ctrl+↓ | Prompt history of this agent › loop (↑ ↓ too once the prompt has text, on its first / last line) |
Shift+Enter Alt+Enter | Newline in the prompt (Ctrl+J, or \ then Enter; /terminal-setup for Shift+Enter) |
t | Expand / collapse all thinking |
c | Copy the selected item, else the last reply |
w | Open the agent’s website (when it serves one; starts the web server if stopped) |
Esc | Interrupt this loop’s running turn: it goes idle and keeps working (not a stop) |
Esc Esc | Clear the prompt |
Tab Shift+Tab | Leave the prompt for the transcript / sidebar (Esc never does) |
@ | In the prompt: complete an agent file path (Tab) |
Approvals and questions (the card under the transcript):
| Keys | Action |
|---|
y | Approve: press twice, or once on a selected approval · resume a suspended agent. Mouse mode: click the card’s buttons |
a | Always approve this tool for the agent (twice, then confirm; it won’t ask again). Not offered for protection overrides: those are one-time only · on a question card: answer it |
n | Reject · shut a suspended agent down (asks) |
f | Reject with feedback: the agent sees your text |
v | Full details of the tool call |
/approve | /approve [all|always] · /reject [feedback]: the same from the prompt |
2 Files
Files tab (tree):
| Keys | Action |
|---|
↑ ↓ | Move; the viewer previews the highlighted entry |
Enter | Open the file in the viewer · open / close a folder |
Backspace | Close the folder · go to the parent folder (never deletes) |
← → | Tabs: Files · Inbox · Outbox · Meta |
Space | Toggle a folder |
/ | Filter by path (fuzzy) |
e | Edit in $EDITOR, then confirm the write (diff shown) |
n | New file |
m | Rename / move (a folder moves with its files) |
d Delete | Delete (asks) |
p | Protection: none → read_only → no_delete |
a | Toggle authorized |
r | Reload |
Viewer:
| Keys | Action |
|---|
Backspace Esc | Back to the list (the entry stays selected) |
↑ ↓ | Scroll (j k; PgUp PgDn Space page; g G top/bottom) |
/ | Search, then n N next / previous hit |
e | Edit this file |
Inbox · Outbox · Meta (read-only):
| Keys | Action |
|---|
Enter | Read the message / entry (Backspace or Esc: back) |
/ | Filter |
f | Status filter (inbox, outbox) |
r | Reload |
3 Loops
| Keys | Action |
|---|
← → | Tabs: Loops · Timers · Triggers · History |
Loops tab:
| Keys | Action |
|---|
↑ ↓ | Select a loop (also selects it for Chat) |
Enter | Chat with the loop |
n | New inner loop: memory consolidator, researcher, critic, reflector or blank |
e | Edit goal, tools, model, flags (diff + confirm) |
x | Enable / disable |
s | Send a one-off message |
t | Schedule: a timer that wakes this loop |
c | Clear its history (asks) |
d Delete | Delete (asks; history archived to the audit log) |
h | Its history |
r | Refresh |
Timers tab:
| Keys | Action |
|---|
n | new |
Enter e | edit |
d | delete |
f | all agents |
r | refresh |
o | select that agent (all-agents list) |
Triggers tab:
| Keys | Action |
|---|
x | enable/disable |
Enter e | edit targets |
r | refresh |
History tab:
| Keys | Action |
|---|
Enter | open entry |
/ | filter text/tool |
f | role |
< > | older/newer |
l | next loop |
c | clear |
L | previous loop |
i | entry details |
r | reload |
Loop and timer forms:
| Keys | Action |
|---|
↑ ↓ | Field |
← → | Change a choice / toggle |
Ctrl+O | Open the goal in $EDITOR |
Ctrl+S | Review, then Enter / y applies |
Esc | Cancel (from review: back to the form) |
4 Inspect
| Keys | Action |
|---|
← → | The selected agent’s tabs: Status Settings Config Usage MCP Channels Identities Logs Tables Tasks Events |
Other tabs:
| Keys | Action |
|---|
e | Config: edit in $EDITOR (validated, changed keys confirmed; also /config edit) |
w | Status: open the agent’s website (W copies its URL) |
Enter | Logs / Tables: details · row |
f | Logs: follow |
n p | Tables: next / previous page |
r | Reload |
Settings (instructions, tools, compaction, autonomy, messaging, host access):
| Keys | Action |
|---|
Enter Space | Open the dialog (Instructions, Tools, Compaction, Visibility, Send mode) or flip the switch; Autonomous and Host access ask first |
e | Edit the instructions in $EDITOR (also /instructions edit) |
l | Lock / unlock that section for the agent (its sys_update_config; you can always change it) |
r | Reload config and context use |
Tools dialog (/tools [filter]):
| Keys | Action |
|---|
Space Enter | Enable / disable (on a group header: the whole group, locked tools skipped) |
v | Show / hide in the agent’s tool list (hidden tools stay callable from code) |
r | Require approval (restricted): an LLM call waits for you |
l | Lock / unlock a built-in tool for the agent (locked: enable and show are fixed until unlocked) |
/ | Filter by name or description (Enter keeps it, Esc clears) |
Instructions dialog (/instructions):
| Keys | Action |
|---|
Ctrl+S | Save (re-reads first; asks if they changed on the daemon meanwhile) |
Enter | New line |
Ctrl+O | Continue in $EDITOR |
Esc | Cancel (asks when there are unsaved changes) |
Compaction dialog (/compaction [tokens|default]):
| Keys | Action |
|---|
Enter e | Set the threshold of main or an inner loop (80000 or 80k; default / inherit resets; empty keeps it) |
d | Back to the default (main) or main’s threshold (an inner loop) |
c | Compact that loop now (asks) |
Tasks (approvals and async tool calls; also /tasks):
| Keys | Action |
|---|
f | Filter: pending · active (+ running) · all |
/ | Search tool, status, reason, loop, origin, args |
Enter Esc | Detail (args, result, error, timestamps) · back |
y n | Approve · reject the highlighted call waiting for approval |
a | Always approve its tool (confirmed; not offered for one-time approvals) |
N | Reject with feedback (the agent sees the text) |
A | Approve all waiting calls (confirmed; protection overrides skipped) |
Events (this agent’s live umbilical events; every agent: Runtime › Events):
| Keys | Action |
|---|
↑ ↓ | Move; ↑ stops following (the wheel scrolls too) |
End | Follow the newest again (also G) |
t | Type filter, e.g. tool. -turn.delta |
l | All loops / the selected loop |
/ | Search text (Esc clears) |
Space | Pause / resume |
f | Follow on / off |
Enter | Full event |
c | Clear |
x | Reset filters |
5 Fleet
| Keys | Action |
|---|
n | New agent from a template (sets up your owner identity first if needed) |
i | Owner identity: status, create, restore, unlock (I hides the banner) |
c r u | With no agents and no ready identity: create, restore, unlock the owner identity |
↑ ↓ | Select an agent (j k) |
← → | Select one of its loops (h l) |
Enter | Open the agent › loop in Chat |
s | Start the agent (a stopped one: load it into the daemon, then start it; one that needs review: review it first) |
H | Hide / show stopped agents: tracked agents that are not loaded (also /agents running|all; remembered) |
x | Stop and unload the agent (asks; the .adf is kept) |
a | Interrupt the turns running now (asks) |
w | Open the agent’s website (starts the web server if it is stopped) |
W | Copy the agent’s website URL |
o | Load an .adf (Tab completes, ^R require review, ^S start after load) |
f | Track a folder of agents (Tab completes folders): its reviewed autostart agents load now and at every daemon start · /untrack stops |
A | Autostart: scan tracked directories (asks) |
r | Refresh agents, timers, inbox and the daemon line |
6 Runtime
| Keys | Action |
|---|
← → | The daemon’s tabs: Status Folders Identity Sign-in Providers Usage Network Compute MCP Channels Settings Events |
Pages:
| Keys | Action |
|---|
r | Reload the page |
Enter | Identity: the identity dialog · Sign-in: the sign-in dialog |
c r u | Identity: create / restore / unlock (when offered) |
Enter | Folders: the selected folder’s agents (loaded, needs review, errors): review + accept + load, or load |
a d | Folders: track a folder (its reviewed autostart agents load now) / stop tracking the selected one (asks; files untouched, optionally unload its agents) |
m | Network: mesh on / off (asks) |
s | Network: web server (serves agent sites, APIs, mesh delivery) start / stop (stopping asks) |
R | Network: restart the web server (asks) |
Events (every agent’s live umbilical events):
| Keys | Action |
|---|
↑ ↓ | Move; ↑ stops following (the wheel scrolls too) |
End | Follow the newest again (also G) |
t | Type filter, e.g. tool. -turn.delta |
a | All agents / the selected agent (Runtime only) |
l | All loops / the selected loop |
/ | Search text (Esc clears) |
Space | Pause / resume |
f | Follow on / off |
Enter | Full event |
c | Clear |
x | Reset filters |
Legend
| Glyph | Meaning |
|---|
● (*) | Running: a turn is in progress (agent: in any of its loops; loop: in that loop) |
○ (o) | Idle: loaded and waiting for work |
✗ (x) | Disabled loop, or an agent in error / stopped |
↻ (@) | A loop: ↻main is the agent itself, the rest are inner (side) loops |
!N | N approvals or questions waiting for you |
«N | N unread inbox messages |
in 1h | Next timer wake of that loop |
● live / offline | Header: live event stream to the daemon, or the daemon is not answering |
● web :7295 / ○ web off | Header: the web server that serves agent websites / APIs (w on the tab bar, /web on|off) |