CLI

Bare horon on a terminal starts the server and then replaces itself with the horon-tui client beside it. A pipe, HORON_NO_TUI=1, or a missing sibling keeps the headless path.

Core commands

Command What it does
horon run "<message>" Send one message, run tools until the turn ends, exit. --json prints a machine-readable result, --ndjson streams events.
horon repl Simple line-based REPL, no TUI.
horon serve Background agent daemon on a Unix socket (HORON_AGENT_SOCKET).
horon api-bridge Harness API on a Unix socket for SDK clients (HORON_AGENT_API_SOCKET, Unix only).
horon acp ACP v1/v2 adapter on stdio for editors.
horon server start|reload|stop|promote Manage the daemon. Prefer reload after an upgrade: it hands live sessions to a freshly exec’d server instead of dropping them. stop requires --force.

api-bridge listens on $XDG_RUNTIME_DIR/horon-agent-api.sock by default; --api-socket <path> moves it, and --stdio serves one connection on stdin/stdout for SSH clients. The global --socket selects the internal daemon socket, which is a different socket.

Providers and models

Command What it does
horon provider list Provider ids you can pass to -p/--provider.
horon provider current The currently requested and resolved provider selection. --json reports "ready".
horon provider add <name> <base-url> <model> Add an OpenAI-compatible profile. --api-key-stdin keeps the key out of shell history.
horon model list Model names you can pass to -m/--model.

Sessions

horon session (alias horon sessions) works on the event store: inspect, doctor, migrate, export, import, export-legacy, recover-to, rename, archive, restore.

horon export <session> [--out FILE] [--json] prints a Markdown transcript. Secrets are redacted and tool results over 4 KiB are truncated; the output matches the export_session_markdown harness API reply.

Unattended runs

Command What it does
horon runtime-state show --session <id> List the live inputs of a session and which ones are undetermined.
horon runtime-state resolve-input --session <id> --input <id> --action retry|cancel Settle an input whose outcome is unknown.
horon approvals resolve --request-id <id> --tool-call-id <id> --verdict retry|skip Record a human verdict for a run that stopped waiting on a person.

Other commands

Command What it does
horon install-release --assets <dir> --agent-version <version> Verify and install a downloaded release. --source-binary <path> installs a local build through the same path.
horon update Update horon-agent to the latest version.
horon version [--json] Build and version information.
horon usage [--json] Usage limits for connected providers.
horon mcp List configured MCP servers and manage remote-server OAuth credentials.
horon memory Memory management.
horon cloud move|return|where|attach|receive|activate|export|list Move a live session to a cloud host, bring its work back, and manage the transferred sessions.
horon pair [--list] [--revoke <name>] Pairing codes for the iOS and web clients.
horon permissions / horon ambient Review pending ambient permission requests.
horon debug <command> [arg] Talk to a running daemon over the debug socket.

Editors (ACP)

Register horon (or horon-agent) with the argument acp as an external agent. In Zed (settings.json):

{
  "agent_servers": {
    "horon agent": {
      "type": "custom",
      "command": "/absolute/path/to/horon",
      "args": ["acp"]
    }
  }
}

JetBrains, Neovim and VS Code ACP plugins take the same two values. The initialize response advertises authMethods with one method, horon-agent-credentials, which checks whether the credentials of a [providers.<name>] profile can be used to call models. Register a profile with horon provider add; this build has no login command for the editor to run in a terminal.