CLI Reference
Run AI-powered workflows from your terminal.
Prerequisites
Section titled “Prerequisites”-
Clone the repository and install dependencies:
Terminal window git clone https://github.com/coleam00/Archoncd Archonbun install -
Make CLI globally available (recommended):
Terminal window cd packages/clibun linkThis creates an
archoncommand available from anywhere. -
Authenticate with Claude:
Terminal window claude /login
Note: Examples below use archon (after bun link). If you skip step 2, use bun run cli from the repo directory instead.
Quick Start
Section titled “Quick Start”# List available workflows (requires git repository)archon workflow list --cwd /path/to/repo
# Run a workflow (auto-creates isolated worktree by default)archon workflow run assist --cwd /path/to/repo "Explain the authentication flow"
# Explicit branch name for the worktreearchon workflow run plan --cwd /path/to/repo --branch feature-auth "Add OAuth support"
# Opt out of isolation (run in live checkout)archon workflow run assist --cwd /path/to/repo --no-worktree "Quick question"Note: Workflow and isolation commands require running from within a git repository. Running from subdirectories automatically resolves to the repo root. The version, help, chat, and setup commands work anywhere.
Commands
Section titled “Commands”chat <message>
Section titled “chat <message>”Send a message to the orchestrator for a one-off AI interaction.
archon chat "What does the orchestrator do?"Interactive setup wizard for credentials and configuration.
archon setuparchon setup --spawn # Open in a new terminal windowFlags:
| Flag | Effect |
|---|---|
--spawn | Open setup wizard in a new terminal window |
workflow list
Section titled “workflow list”List workflows available in target directory.
archon workflow list --cwd /path/to/repo
# Machine-readable output for scriptingarchon workflow list --cwd /path/to/repo --jsonDiscovers workflows from .archon/workflows/ (recursive), ~/.archon/.archon/workflows/ (global), and bundled defaults. See Global Workflows.
Flags:
| Flag | Effect |
|---|---|
--cwd <path> | Target directory (required for most use cases) |
--json | Output machine-readable JSON instead of formatted text |
With --json, outputs { "workflows": [...], "errors": [...] }. Optional fields (provider, model, modelReasoningEffort, webSearchMode) are omitted when not set on a workflow.
workflow run <name> [message]
Section titled “workflow run <name> [message]”Run a workflow with an optional user message.
# Basic usagearchon workflow run assist --cwd /path/to/repo "What does this function do?"
# With isolationarchon workflow run plan --cwd /path/to/repo --branch feature-x "Add caching"Progress events (node start/complete/fail/skip, approval gates) are written to stderr during execution.
Flags:
| Flag | Effect |
|---|---|
--cwd <path> | Target directory (required for most use cases) |
--branch <name> | Explicit branch name for the worktree |
--from <branch>, --from-branch <branch> | Override base branch (start-point for worktree) |
--no-worktree | Opt out of isolation — run directly in live checkout |
--resume | Resume from last failed run at the working path (skips completed nodes) |
--allow-env-keys | Grant env-leak-gate consent during auto-registration (bypasses the gate for this codebase). Audit-logged as env_leak_consent_granted with actor: 'user-cli'. See security.md. |
--quiet, -q | Suppress all progress output to stderr |
--verbose, -v | Also show tool-level events (tool name and duration) |
Default (no flags):
- Creates worktree with auto-generated branch (
archon/task-<workflow>-<timestamp>) - Auto-registers codebase if in a git repo
With --branch:
- Creates/reuses worktree at
~/.archon/workspaces/<owner>/<repo>/worktrees/<branch>/ - Reuses existing worktree if healthy
With --no-worktree:
- Runs in target directory directly (no isolation)
- Mutually exclusive with
--branchand--from
Name Matching:
Workflow names are resolved using a 4-tier fallback hierarchy. This applies consistently across the CLI and all chat platforms (Slack, Telegram, Web, GitHub, Discord):
- Exact match -
archon-assistmatchesarchon-assist - Case-insensitive -
Archon-Assistmatchesarchon-assist - Suffix match -
assistmatchesarchon-assist(looks for-assistsuffix) - Substring match -
smartmatchesarchon-smart-pr-review
If multiple workflows match at the same tier, an error lists the candidates:
Ambiguous workflow 'review'. Did you mean: - archon-review - custom-reviewworkflow status
Section titled “workflow status”Show all running workflow runs across all worktrees.
archon workflow statusarchon workflow status --jsonworkflow resume
Section titled “workflow resume”Resume a failed workflow run. Re-executes the workflow, automatically skipping nodes that completed in the prior run.
archon workflow resume <run-id>workflow abandon
Section titled “workflow abandon”Discard a workflow run (marks it as failed). Use this to unblock a worktree when you don’t want to resume.
archon workflow abandon <run-id>workflow approve
Section titled “workflow approve”Approve a paused workflow run at an interactive approval gate. Optionally provide a comment that is available to the workflow via $LOOP_USER_INPUT.
archon workflow approve <run-id>archon workflow approve <run-id> "Looks good, proceed"archon workflow approve <run-id> --comment "Looks good, proceed"workflow reject
Section titled “workflow reject”Reject a paused workflow run at an approval gate. Optionally provide a reason that is available to the workflow via $REJECTION_REASON.
archon workflow reject <run-id>archon workflow reject <run-id> --reason "Needs more tests"workflow cleanup
Section titled “workflow cleanup”Delete old terminal workflow run records from the database.
archon workflow cleanup # Default: 7 daysarchon workflow cleanup 30 # Custom thresholdworkflow event emit
Section titled “workflow event emit”Emit a workflow event directly to the database. Primarily used inside workflow loop prompts to record story-level lifecycle events.
archon workflow event emit --run-id <uuid> --type <event-type> [--data <json>]Flags:
| Flag | Required | Description |
|---|---|---|
--run-id | Yes | UUID of the workflow run |
--type | Yes | Event type (e.g., ralph_story_started, node_completed) |
--data | No | JSON string attached to the event. Invalid JSON prints a warning and is ignored. |
Exit code: 0 on success, 1 when --run-id, --type is missing, or --type is not a valid event type. Event persistence is best-effort (non-throwing) — check server logs if events appear missing.
isolation list
Section titled “isolation list”Show all active worktree environments.
archon isolation listGroups by codebase, shows branch, workflow type, platform, and days since activity.
isolation cleanup [days]
Section titled “isolation cleanup [days]”Remove stale environments.
# Default: 7 daysarchon isolation cleanup
# Custom thresholdarchon isolation cleanup 14
# Remove environments with branches merged into main (also deletes remote branches)archon isolation cleanup --merged
# Also remove environments whose PRs were closed without mergingarchon isolation cleanup --merged --include-closedMerge detection uses three signals in order: git branch ancestry (fast-forward / merge commit),
patch equivalence (squash-merge via git cherry), and GitHub PR state via the gh CLI.
The gh CLI is optional — if absent, only git signals are used.
By default, branches with a CLOSED PR are skipped. Pass --include-closed to clean
those up as well. Branches with an OPEN PR are always skipped.
validate workflows [name]
Section titled “validate workflows [name]”Validate workflow YAML definitions and their referenced resources (command files, MCP configs, skill directories).
archon validate workflows # Validate all workflowsarchon validate workflows my-workflow # Validate a single workflowarchon validate workflows my-workflow --json # Machine-readable JSON outputChecks: YAML syntax, DAG structure (cycles, dependency refs), command file existence, MCP config files, skill directories, provider compatibility. Returns actionable error messages with “did you mean?” suggestions for typos.
Exit code: 0 = all valid, 1 = errors found.
validate commands [name]
Section titled “validate commands [name]”Validate command files (.md) in .archon/commands/.
archon validate commands # Validate all commandsarchon validate commands my-command # Validate a single commandChecks: file exists, non-empty, valid name.
Exit code: 0 = all valid, 1 = errors found.
complete <branch> [branch2 ...]
Section titled “complete <branch> [branch2 ...]”Remove a branch’s worktree, local branch, and remote branch, and mark its isolation environment as destroyed.
archon complete feature-autharchon complete feature-auth --force # bypass uncommitted-changes checkFlags:
| Flag | Effect |
|---|---|
--force | Skip uncommitted-changes guard |
Use this after a PR is merged and you no longer need the worktree or branches. Accepts multiple branch names in one call.
version
Section titled “version”Show version, build type, and database info.
archon versionGlobal Options
Section titled “Global Options”| Option | Effect |
|---|---|
--cwd <path> | Override working directory (default: current directory) |
--quiet, -q | Reduce log verbosity to warnings and errors only |
--verbose, -v | Show debug-level output |
--json | Output machine-readable JSON (for workflow list, workflow status) |
--help, -h | Show help message |
Working Directory
Section titled “Working Directory”The CLI determines where to run based on:
--cwdflag (if provided)- Current directory (default)
Running from a subdirectory (e.g., /repo/packages/cli) automatically resolves to the git repository root (e.g., /repo).
When using --branch, workflows run inside the worktree directory.
Commands and workflows are loaded from the working directory at runtime. The CLI reads directly from disk, so it picks up uncommitted changes immediately. This is different from the server (Telegram/Slack/GitHub), which reads from the workspace clone at
~/.archon/workspaces/— that clone only syncs from the remote before worktree creation, so changes must be pushed to take effect there.
Environment
Section titled “Environment”The CLI loads environment variables exclusively from ~/.archon/.env. It does not load .env from the current working directory. This prevents conflicts when running Archon from target projects that have their own database configurations.
On startup, the CLI:
- Deletes any
DATABASE_URLthat Bun may have auto-loaded from the target repo’s.env - Loads
~/.archon/.envwithoverride: true - Auto-enables global Claude auth if no explicit tokens are set
Database
Section titled “Database”- Without
DATABASE_URL(default): Uses SQLite at~/.archon/archon.db— zero setup, auto-initialized on first run - With
DATABASE_URL: Uses PostgreSQL (optional, for cloud/advanced deployments)
Both work transparently. Most users never need to configure a database.
Examples
Section titled “Examples”# One-off AI chatarchon chat "How does error handling work in this codebase?"
# Interactive setup wizardarchon setup
# Quick question (auto-isolated in archon/task-assist-<timestamp>)archon workflow run assist --cwd ~/projects/my-app "How does error handling work here?"
# Quick question without isolationarchon workflow run assist --cwd ~/projects/my-app --no-worktree "How does error handling work here?"
# Plan a feature (auto-isolated)archon workflow run plan --cwd ~/projects/my-app "Add rate limiting to the API"
# Implement with explicit branch namearchon workflow run implement --cwd ~/projects/my-app --branch feature-rate-limit "Add rate limiting"
# Branch from a specific source branch instead of auto-detected defaultarchon workflow run implement --cwd ~/projects/my-app --branch test-adapters --from feature/extract-adapters "Test adapter changes"
# Approve or reject a paused workflowarchon workflow approve <run-id> "Ship it"archon workflow reject <run-id> --reason "Missing test coverage"
# Check worktrees after work sessionarchon isolation list
# Clean up old worktreesarchon isolation cleanup