The ace CLI is the control plane for the local ace runtime. It opens the web UI, manages the background daemon, checks provider readiness, controls telemetry, and exposes automation-friendly JSON output.
ace webis the normal entry point. It starts or reuses the daemon and opens the app.ace serveis for foreground/server-log workflows. It starts or attaches to the daemon and streams logs.ace daemon ...is explicit lifecycle control for scripts and troubleshooting.ace stopis the short form oface daemon stop.ace doctorvalidates the local setup before you start debugging provider issues.ace telemetry ...controls the stored telemetry preference.ace remote ...manages remote pairing and relay-backed device access.
Most users should start with:
ace doctor
ace web .- Install and sign in to at least one provider CLI.
codex login
claude auth login
cursor-agent --help
gemini --help
opencode --help- Check local readiness.
ace doctor- Open ace for the current workspace.
ace web .- If the daemon gets into a bad state, restart it.
ace daemon restartOpen ace:
ace web
ace web ~/Code/my-project
ace web . --no-browserRun in a terminal and follow logs:
ace serve
ace serve . --port 4317Check setup:
ace doctor
ace doctor --jsonStop the daemon:
ace stop
ace daemon stopControl telemetry:
ace telemetry status
ace telemetry off
ace telemetry onInspect managed terminals:
ace terminal list
ace terminal stop <terminal-id>Pair a remote device:
ace remote create --device-name "Work Mac"
ace remote list
ace remote ping --onceOpen the ace web app by reusing or starting the background daemon.
Use this for normal daily usage.
ace web
ace web .
ace web ~/Code/app --no-browserUseful flags:
--telemetry on|offoverrides telemetry for this daemon-starting command.--no-browserstarts/reuses the daemon without opening a browser.--port <number>chooses the daemon HTTP/WebSocket port.--host <host>chooses the daemon bind host.--base-dir <path>stores daemon state somewhere other than the default ace home.--auth-token <token>sets the local API auth token.--relay-url <url>points remote features at a custom relay.
Run or attach to the persistent daemon and stream server logs.
Use this when developing ace itself, debugging startup, or running the server in a foreground process manager.
ace serve
ace serve . --host 127.0.0.1 --port 4317Useful flags:
--telemetry on|off--port <number>--host <host>--base-dir <path>--relay-url <url>
Check local readiness without starting an agent session.
It reports:
- ace version and home/base directory.
- daemon status.
- stored telemetry preference.
- provider CLI availability for Codex, Claude, Cursor, Gemini, and OpenCode.
ace doctor
ace doctor --jsonUse --json in scripts or bug reports when you need stable machine-readable output.
View or change the stored anonymous telemetry preference.
Telemetry is on by default for open-source product analytics. The identity model is anonymous by default and uses a local installation ID, not provider account details.
ace telemetry status
ace telemetry off
ace telemetry onRoot shortcuts:
ace --telemetry off
ace --telemetry onOne-run overrides for daemon-starting commands:
ace web --telemetry off
ace serve --telemetry off
ace daemon start --telemetry on
ace daemon restart --telemetry offEnvironment override:
ACE_TELEMETRY_ENABLED=false ace webResolution order:
--telemetry on|offACE_TELEMETRY_ENABLED- stored preference from
ace telemetry on|off - default:
on
Manage the background daemon explicitly.
ace daemon start
ace daemon status
ace daemon stop
ace daemon restartUseful flags:
--jsonprints machine-readable output.--base-dir <path>points at a non-default ace home.--timeout-ms <number>controls stop/restart wait time.--telemetry on|offapplies to start/restart.
Stop the background daemon.
This is equivalent to ace daemon stop.
ace stop
ace stop --json
ace stop --timeout-ms 10000Inspect and stop terminals managed by ace.
ace terminal list
ace terminal list --json
ace terminal stop <terminal-id>
ace terminal stop <terminal-id> --jsonUse this when a provider-spawned terminal or shell task is still running after a session ended.
Manage saved projects.
ace project add <path> --title "API Server"
ace project list
ace project list --json
ace project remove <project>
ace project remove <project> --forceManage remote pairing and relay-backed device access.
Create a pairing session:
ace remote create --device-name "Work Mac"Link another device using a pairing token:
ace remote link --token "ace://pair?..."Inspect and maintain remotes:
ace remote list
ace remote ping --once
ace remote revoke <session>
ace remote remove <remote>
ace remote remove allUseful flags:
--json--interactive--relay-url <url>
Show daemon subprocess and runtime resource stats.
ace profile
ace profile --json
ace profile --pid 12345 --interval-ms 1000Update the packaged desktop app.
ace updateOpen the interactive quick-action picker.
ace interactive
ace interactive --action webTelemetry exists to answer product questions such as which providers are used, where sessions fail, and which CLI flows need improvement.
ace should not collect:
- prompt text
- file contents
- attachment contents
- auth tokens
- raw provider account IDs
- raw file paths or repository names
ace may collect:
- anonymous installation identity
- ace version, OS, architecture, and client type
- command/session lifecycle events
- provider name, model name, and runtime mode
- counts and booleans such as attachment count, rollback count, and provider distribution
- coarse performance/reliability stats such as latency buckets, retry count, and recovery strategy
Disable telemetry persistently:
ace telemetry offDisable telemetry for one daemon-starting command:
ace web --telemetry offCheck current preference:
ace telemetry statusPrefer --json for scripts.
ace daemon start --json
ace daemon status --json
ace doctor --json
ace project list --json
ace terminal list --json
ace stop --jsonUse a separate base directory when running isolated CI or test jobs:
ACE_TELEMETRY_ENABLED=false ace daemon start --base-dir "$RUNNER_TEMP/ace" --json
ace doctor --base-dir "$RUNNER_TEMP/ace" --json
ace stop --base-dir "$RUNNER_TEMP/ace" --jsonace web does not open the browser:
ace web --no-browser
ace daemon statusProvider is missing or not authenticated:
ace doctorDaemon is stale or stuck:
ace daemon restartPort is already in use:
ace web --port 4318
ace serve --port 4318Telemetry state is unclear:
ace telemetry status
ACE_TELEMETRY_ENABLED=false ace doctorRemote pairing does not connect:
ace remote list
ace remote ping --once
ace doctorThe CLI has curated help for the main workflows:
ace --help
ace web --help
ace serve --help
ace doctor --help
ace telemetry --help
ace daemon --help
ace stop --help
ace terminal --help
ace remote --helpGenerate shell completions:
ace --completions zsh
ace --completions bash
ace --completions fishOlder aliases may still work for compatibility, but new scripts and docs should prefer the explicit command forms:
- prefer
ace weboverace --web - prefer
ace daemon restartoverace --restart - prefer
ace stopover ad hoc process cleanup