Command line
Everything the ace command does.
-
ace --help,ace -horaceEvery command with its flags, how teammates' channels are reached, and where model keys come from.
-
ace new --project <dir>Prints the new channel's name and ID; it starts dormant. A folder that isn't a Git repository is refused with
… is not a Git repository. Initialize Git to start channels in it. -
ace newRun it without
--projectinside a Git checkout.The checkout becomes the channel's project. Without
--name, Ace picks a two-word name (amber-meadow). -
ace new --name <name>The channel takes that name. A name already in use is refused with
A channel named cli-one already exists. -
ace new --model <provider/id>ace lsshows the model instead ofautomatic, and its runs use it (openai/gpt-6-astraanswered an ask).
-
ace lsOne line per channel with name, ID,
runningordormant, model (orautomatic) and project folder. Archived channels are left out. -
ace ls --teamEvery channel the running host can see, with its host and owner.
1 It needs the running host; with the host on a non-default port it says
Open Ace or start this host with ace serve firstunless--portorACE_PORTis given, and help lists--portonly fortabs,serveandopen.
-
ace info <channel>JSON with ID, name, summary, project, owner, agent access (
shared), desktop tools, and each chat's busy state and token usage. -
ace info <teammate's channel>Name a channel on a reachable teammate's host, by name or ID.
The same JSON, relayed through this host's running gateway.
2 Pair study, Canary 0.0.53.88: the JSON doesn't name the host, and the owner is an email (
same.chocolixir@gmail.com) where the app sayssamechocolixir.
-
ace rename <channel> <name>Nothing printed;
ace lsshows the new name. Lane branches keep their old names.
-
ace fork <channel>Prints the new channel's name (
fork-of-cli-one), in the same project, seeded from the source's summary and lane.3 Cloud compute channels are refused:
Cloud compute channels can't be forked yet: their lanes are in the container.(apps/host/src/manage.ts:96)
-
ace tabs [--json]Window, channel, tab ID, type (chat, terminal, diff, blank), whether it's active, and name.
--jsonadds the channel name and which window is focused. -
ace tab rename <window> <channel> <tab> <name>The open window's tab shows the new name at once, and the command prints the window's tabs.
4 The chat tab can't be renamed (
The Chat tab follows the channel name and cannot be renamed); names over 80 characters and closed tabs are refused. -
ace tab rename <window> <channel> <tab> ""The tab goes back to its default (
Terminal).
-
ace backup <channel> <new-directory>Writes
backup.json,channel.jsonandchannel.sqlite, then reminds you that project files and lane worktrees aren't included. An existing directory is refused (EEXIST). -
ace restore <directory>Prints the new channel's name and ID; its chats are back, in the original project folder. A taken name gets a suffix: restoring one backup twice gave
cli-one-1andcli-one-2, andace info cli-one-1reports that name.
-
ace export <channel> <file>Writes an editable JSON seed (
format: ace-seed) with every chat, its model and its items, including agent turns. -
ace import <file> [--project <dir>] [--name <name>]Prints the new channel's name and ID. Without
--projectthe current folder is used; a taken name is refused. -
ace import <file> --nowThe newest message is stamped with the import time, and the rest keep their spacing.
-
ace say <channel> [--chat <id>] <text…>The message appears in the chat; no run starts. No text gives
Nothing to say; an unknown chat givesNo chat 99. -
ace ask <channel> [--chat <id>] <text…>Prints the request and the agent's reply as it arrives, then
(run ended). Ctrl-C detaches and leaves the run going. -
ace ask <channel> --detach <text…>Returns at once;
ace infoshows the chat busy until the run ends. -
ace watch <channel> [--chat <id>]Replays the chat, then follows new messages and run ends until you stop it.
-
ace stop <channel> [--chat <id>]The run ends and its reply shows
Stopped. -
ace info|say|ask|watch|chat|stop <teammate's channel>Name a channel on a reachable teammate's host; this host's running gateway relays the request.
Works like your own channel; their host decides whether you may invoke its agents.
8 Pair study, Canary 0.0.53.88:
sayprints nothing, and a refusedasksaysOnly the owner can invoke agents herewithout naming agent access.9 Pair study, Canary 0.0.53.88:
watchreplays the whole history with no mark where live output begins;chatandstopweren't tried.
-
ace move <channel> --localPrints
<name> now runs on this host. An idle, unarchived channel you own is required.10 Only the refusals were checked: a local channel gives
The channel is already on this host, and no flag or both flags print the usage.11 Canary 0.0.51.85: a cloud compute channel refuses with
A cloud compute channel's workspace is its container, so it cannot move; needs a hosted directory to try. -
ace move <channel> --computeThe channel runs in the team's cloud workspace.
-
ace agents <channel> on|offonprints that teammates can run commands as you on this machine;offprintsAgent access is off for <channel>. Only you can ask its agents.ace infoshowsagents.
-
ace project access <folder | owner/name>Each person and why they can see it (
their folder,reads it on GitHub,shared with the team).14 Pair study, Canary 0.0.53.88: a teammate's folder project can't be named, and its owner/name form lists everyone, owner included, as
no access. -
ace project share|unshare <project> <github login>That person can see every channel in it. Someone whose Ace isn't running is refused (
No one on the team is nobody-xyz yet; their Ace must be running).16 Pair study, Canary 0.0.53.88:
project unshare <project> <login>wasn't tried.
-
ace modelsEvery
provider/idthis machine has a key for (60 with Anthropic and OpenAI keys). -
ace modelAutomaticor the saved model, andOverridden by ACE_MODEL=…when that's set. -
ace model auto
-
ace directory <url>The running host checks the URL with
ACE_SECRETbefore saving it.21 An unreachable URL gives
Could not reach https://example.invalid. Check the URL and your connection.and saves nothing.22 Pair study, Canary 0.0.53.88: it echoes the URL with no
joined, and an open Settings → Team shows it only after Refresh.
-
ace web <url>Saves and prints the origin (a path is dropped). Only HTTPS is accepted.
-
ace serve [--port <port>]Prints the local URL and, on the tailnet, the HTTP and HTTPS addresses your devices can open.
-
ace serve --loopbackLoopback only: not listening on the tailnet, finding peers, or publishing to the directory. -
ace serve --demo <script.json>Pass a demo script (docs/demo.md) naming made-up people and timed steps.
Demo mode: robin from …; the scripted person opens the channel, posts and reacts on schedule. -
Start a host on a port another host holds.
Names the other host, its PID, command and home, and asks for another
--port. A second host on the sameACE_HOME(another port) is refused too:/tmp/…/home is already served by a command-line Ace host (PID … ) on port 4440. Stop it, or set ACE_HOME to give this host its own data directory.
-
ace logs [--channel <ref>] [--trace <id>] [--level warn] [--since 10m] [--grep <text>] [-n 200]Every process's log lines in time order, filtered, then the log folder.
-
ace logs --follow(-f) -
ace logs --json
-
ace open [--port <port>]The default browser opens the app, signed in with the host's token. Without a running host it says
Start this host with ace serve first.24 After an Ace Helper restart a reload sticks on
Disconnected from your host. Reconnecting…(WebSocket 401) with nothing saying to sign in again.25
ace openprints nothing (left by githubnext/ace#652).
-
ace archive <channel>Hides it from
ace ls;ace ls --allstill lists it. -
ace delete <channel>Removes it and says its lane branches remain in the project.
