-
Notifications
You must be signed in to change notification settings - Fork 0
CLI Reference
Verified from the argument parser in src/agent8088/cli.py:
usage: agent8088 [-h] [--version] [--full-auto]
[--mode {readonly,full-auto}]
[--uninstall] [--workspace] [--all] [--yes]
[--non-interactive] [--dry-run]
[--update] [--force] [--setup] [--model-setup] [--sandbox-setup] [--memory-setup]
[--libreoffice-setup]
[--gateway] [--gateway-setup] [--mcp-serve] [--mcp-http]
[--mcp-port PORT] [--mcp-host HOST]
[--web] [--web-port PORT] [--web-host HOST] [--web-dev]
[--prompt-file PATH]
[--logs [MODE]] [-n LIMIT] [--level LEVEL] [--subsystem SUBSYSTEM] [--json]
| Flag | Purpose |
|---|---|
-h, --help
|
Show help and exit |
-V, --version
|
Show version and exit |
--mode {readonly,full-auto} |
Permission mode at startup. Plan mode is not settable here — start it with /plan
|
--full-auto |
Start in full-auto (no per-action prompts) |
--setup |
Interactive config wizard, then exit |
--model-setup |
Configure a model provider profile |
--sandbox-setup |
Install the native sandbox runtime |
--memory-setup |
Install the mem0 memory backend deps and set memory_engine=mem0; switch back with /memory engine native
|
--libreoffice-setup |
Install LibreOffice (via winget/brew/apt-get/dnf/pacman, whichever is available) for document conversion, legacy Office formats, and formula recalculation |
--gateway |
Run the messaging gateway instead of the REPL |
--gateway-setup |
Configure gateway channels, then exit |
--mcp-serve |
Run as an MCP server |
--mcp-http |
Use HTTP transport (with --mcp-serve) |
--mcp-port PORT |
MCP HTTP port (default 8931) |
--mcp-host HOST |
MCP bind host (default 127.0.0.1) |
--web |
Launch the web UI instead of the terminal REPL |
--web-port PORT |
Web UI server port (default 8180) |
--web-host HOST |
Web UI bind host (default 127.0.0.1); loopback only |
--web-dev |
Run the web backend without serving built frontend files; use with Vite |
--prompt-file PATH |
Run one headless turn using the entire UTF-8 file as the task, then exit. Implies full-auto: use only in a trusted, isolated environment. |
--logs [MODE] |
Print the operational log; pass follow to tail it in real time. Bare --logs prints the last --limit lines and exits |
-n, --limit LIMIT
|
With --logs: number of lines to print (default 50) |
--level LEVEL |
With --logs: filter by level (DEBUG|INFO|WARNING|ERROR) |
--subsystem SUBSYSTEM |
With --logs: substring filter on subsystem name |
--json |
With --logs: emit raw JSONL instead of the human-formatted view |
--update |
Pull latest code + reinstall, then exit |
--force |
With --update: discard local changes in the install dir first |
--uninstall |
Remove the install dir, shim, PATH/config lines, and crontab/scheduled-task entries, then exit. Trace logs and the WhatsApp session dir are kept unless --workspace/--all is also passed |
--workspace |
With --uninstall: also remove trace logs and the WhatsApp session directory |
--all |
With --uninstall: shorthand for --workspace
|
--yes |
With --uninstall: skip the confirmation prompt |
--non-interactive |
With --uninstall: never prompt; requires --yes
|
--dry-run |
With --uninstall: print what would be removed, remove nothing |
Run with no flags for the interactive REPL.
The web UI is the browser interface to the same Agent8088 engine, sessions, tools, permissions, and configuration used by the CLI.
Launch the server from the repository root (it builds the frontend when needed):
agent8088 --webOpen http://127.0.0.1:8180.
Use the web flags to change the server settings:
agent8088 --web --web-port 3000The web UI binds to loopback only, and a non-loopback --web-host is refused.
Every endpoint is unauthenticated and POST /api/tool/{name} runs any tool in
the registry, so exposing the port is equivalent to handing out a shell. To
reach it from another machine, forward the port over SSH:
ssh -N -L 8180:127.0.0.1:8180 <the-machine-running-agent8088>Run the backend and Vite together:
uv run agent8088 --webOpen http://127.0.0.1:5180. Vite proxies /api and /ws to the backend.
By default --uninstall removes everything the installer created: the
install directory (venv, bundled uv/Node, sandbox runtime), the agent8088
command shim, the PATH and AGENT8088_CONFIG lines it added to shell rc
files (or the Windows user-environment PATH entries for the bundled
Git/Node on Windows), any crontab entries or Windows Task Scheduler entries a
cron_mode schedule registered, and the SearXNG Docker container from
/search setup if one exists — it runs with --restart unless-stopped, so
Docker itself would otherwise keep it running (and restart it on reboot)
indefinitely, since deleting the install directory doesn't touch a running
container.
Two things are deliberately not touched:
-
Trace logs and the WhatsApp session directory — these are your data,
not installer residue, so they're kept by default. Pass
--workspace(or--all) to remove them too. -
A pre-existing shared Playwright browser cache (
~/.cache/ms-playwrighton Linux,~/Library/Caches/ms-playwrighton macOS,%LOCALAPPDATA%\ms-playwrighton Windows) — other Playwright-based tools on the same machine can share that cache, so it's never auto-deleted. A fresh install now downloads Chromium into$AGENT8088_HOME/playwright-browsersinstead, so this only applies to installs from before that change; uninstall prints the exact manual command to remove the shared cache yourself if one is found.
agent8088 --uninstall --dry-run # preview only, nothing removed
agent8088 --uninstall --all --yes --non-interactive # fully unattended, full removal
45 registered commands (COMMANDS in src/agent8088/cli.py). Prefix-matched,
so /mo offers /mode, /model, /models.
Pasting a bare file path into the prompt — nothing else on the line — reads it
immediately: images go to a vision model, documents are extracted to text.
Unlike a tool call the model makes on its own, this works outside
allowed_paths, because it's a path the user personally typed. The
sensitive-file floor still applies unconditionally.
| Command | Does |
|---|---|
/help |
List all commands |
/new [name] |
Start a fresh session, optionally named |
/sessions |
List saved named sessions |
/resume <name> |
Reload a named session (restores skill state too) |
/reset |
Clear the current conversation |
/history |
Show conversation history |
/compact [n] |
Summarise older turns, keep the last n verbatim |
/save <file> |
Export conversation + trace to JSON (mode 0600) |
/status |
Model, mode, tools, skills, token usage |
/usage |
Token usage for this session |
/exit |
Quit |
| Command | Does |
|---|---|
/model <provider:model> |
Switch provider + model |
/model setup |
Add or update a provider profile |
/models [provider] |
Fuzzy model picker, fetched live |
/temp <float> |
Sampling temperature |
/maxturns <int> |
Max agent turns per prompt (same as /limits max_turns) |
/reasoning |
Toggle reasoning display |
/tool-selection [hybrid|full|auto] |
Show or set how native tool schemas are narrowed per request — see Tool-calling compatibility |
/raw <text> |
One raw model call — content, reasoning, tool_calls |
/fusion setup |
Interactively pick a default panel and judge (checkbox pickers), saved to config.txt
|
/fusion <query> |
Ask the panel in parallel; a blind judge picks the best answer. --panel p:m,.../--judge p:m flags override the saved config for one call |
| Command | Does |
|---|---|
/tools |
List tools with mode, args, description |
/capabilities |
Full self-report: tools, MCP servers, skills, subagents, limits, active guardrails |
/tool <name> <json> |
Invoke one tool directly |
/plan [task] |
Enter plan mode: propose a plan, approve it, then it runs |
/audit [on|off] |
Show or change step verification; no argument reports the current setting and the last turn's cost |
/image <path> [question] |
Analyze an image with a vision-capable model |
/agents |
List sub-agent profiles, with source, model, and the active provider's models |
/agents models |
List every model the active provider offers |
/agents new [name] |
Create a custom sub-agent profile interactively |
/agents edit <name> |
Open a custom profile in $EDITOR
|
/agents delete <name> |
Delete a custom profile (bundled ones are refused) |
/agent <type> <task> |
Run a sub-agent directly; the prompt stays on it until /quit
|
/skills |
List skills; disable/enable <name>
|
/cli-anything [task] |
Show integration status, or route a task through the CLI-Anything skill |
/browser [status|close|reset|stop] |
Show the headless browser session state, or close it and clear its temp files |
/local [list|available <query>|pull <name>|remove <name>] |
Bare form probes hardware and recommends local Ollama models; the CLI counterpart to the local_models-mode tools |
/task [list|start <goal>|resume <id>|end <id>|output <id>] |
Start, resume, or inspect a restart-safe model task backed by task_runtime.TaskStore. Bare or list shows stored tasks |
| Command | Does |
|---|---|
/mode [readonly|full-auto] |
Show or switch permission mode. Use /plan to enter plan mode |
/reset |
Discard the conversation — asks first unless destructive_slash_confirm=0
|
/sandbox [auto|native|docker|setup] |
Show, select or install isolation |
/search [status|setup|stop|doctor|use <backend>] |
Show, provision, or pin a web search backend |
| Command | Does |
|---|---|
/mcp |
Server status + discovered tools |
/mcp reload |
Reconnect after editing mcp.json — asks first unless mcp_reload_confirm=0
|
/mcp add <name> stdio <cmd> [args...] [--project] |
Add a stdio server |
/mcp add <name> http <url> [--project] |
Add an HTTP server |
/mcp remove <name> [--project] |
Remove a server |
| Command | Does |
|---|---|
/limits |
Show every limit: turns, budgets, write caps, sub-agent turns, tool timeouts |
/limits <key> <value> |
Change one — persists to config.txt
|
/limits subagent <name> <turns> |
Per-profile sub-agent round cap |
/limits tool <name> <seconds> |
Per-tool timeout |
/limits provider <name> <key> <value> |
Per-provider token limit (context_window or max_completion_tokens) |
/schedule list |
Show all scheduled recurring tasks (displays: #, cron schedule, task text) |
/schedule add <cron> <task> |
Add a recurring task; cron is 5 fields (minute hour day month weekday), e.g. /schedule add "0 9 * * *" check disk space
|
/schedule remove <index-or-task> |
Remove by the # from /schedule list, or by exact task text |
/config |
Active config + file path |
/capabilities |
What the agent can do and which guardrails are in force |
/cost [on|off|<task_id>] |
Local telemetry summary of model cost/usage; on/off toggles recording, persisted to config.txt
|
/review |
Bare: list stored reviews. With arguments: launch review_code from the CLI — same tool the model calls, see review_code
|
/doctor [--fix] |
Environment health check; --fix repairs a broken web-search install |
/dump |
Write a redacted diagnostic bundle to disk, for sharing in a bug report |
/trace [on|off] |
Toggle JSON trace capture |
/verbose |
Toggle verbose output |
| Command | Does |
|---|---|
/memory |
Status: count, embedder, store size, last call's cost |
/memory engine [native|mem0] |
Show the active memory engine, or switch it live — persists to config.txt, never migrates or deletes either store |
/memory search <query> |
Run the search and show each leg's rank (words vs meaning) |
/memory add <text> |
Store a fact by hand |
/memory forget <id> |
Delete one (the short id from /memory search works) |
/memory notify off|on|verbose |
Change what memory prints when it learns something |
/memory test |
Run one extraction call and show the raw reply, parsed facts, and elapsed time |
/memory clear |
Delete all memories, with confirmation |
/memory off |
Stop recalling and learning; keeps what is stored |
See Memory for what each does and when to reach for them.
Inside Slack / WhatsApp / Discord / Telegram / Email:
| Command | Does |
|---|---|
/new |
Clear the current session |
/stop |
Cancel queued messages for this chat |
/help |
List available commands |
/capabilities |
Tools, MCP servers, skills, limits, active guardrails |
/approve |
Approve the pending action (add session to hold for the session) |
/deny |
Refuse it |
Discord also offers ✅ / ❌ buttons with a fail-closed timeout.
Gateway commands count against gateway_rate_limit_per_min like any other
message — otherwise /help would be a free channel for flooding the gateway.
| Key | Does |
|---|---|
ESC |
Interrupt the current turn |
Ctrl+C |
Cancel input / exit |
Tab |
Complete a slash command |
| Var | Purpose |
|---|---|
AGENT8088_CONFIG |
Config file path (/nonexistent forces packaged defaults) |
AGENT8088_HOME |
Data directory |
AGENT8088_CLI_ANYTHING_HOME |
Optional override for the isolated CLI-Anything runtime directory |
AGENT8088_PROVIDER |
Active provider |
AGENT8088_PERMISSION |
Starting permission mode (readonly or full-auto; plan-only falls back to readonly) |
AGENT8088_SANDBOX |
Sandbox backend |
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Error (or a failing verification script) |
2 |
Invalid CLI arguments |
Source of truth: docs/wiki/ in the main repository. Edits here are overwritten by the next sync.
Start here
Guides
- Permissions and Security
- Sandboxing
- Model Providers
- MCP
- Messaging Gateway
- Skills and Subagents
- Memory
- Docker
Reference
Development