Ace map · cli

Command line

Everything the ace command does.

testedvisualpartialbrokenuntestedmissingplannednopen gap
^820

Get help

visual
  1. ^821

    Print the command list

    tested
    ace --help, ace -h or ace

    Every command with its flags, how teammates' channels are reached, and where model keys come from.

^822

Create a channel

visual
  1. ^823

    Create a channel in a project folder

    tested
    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.

  2. ^824

    Create a channel in the current folder

    tested
    ace new

    Run it without --project inside a Git checkout.

    The checkout becomes the channel's project. Without --name, Ace picks a two-word name (amber-meadow).

  3. ^825

    Name the channel

    tested
    ace new --name <name>

    The channel takes that name. A name already in use is refused with A channel named cli-one already exists.

  4. ^826

    Pin the channel's model

    tested
    ace new --model <provider/id>

    ace ls shows the model instead of automatic, and its runs use it (openai/gpt-6-astra answered an ask).

^827

List channels

visual
  1. ^828

    List this host's channels

    tested
    ace ls

    One line per channel with name, ID, running or dormant, model (or automatic) and project folder. Archived channels are left out.

  2. ^829

    Include archived channels

    tested
    ace ls --all

    Archived channels appear with state archived.

  3. ^830

    Add teammates' channels

    visual
    ace ls --team

    Every 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 first unless --port or ACE_PORT is given, and help lists --port only for tabs, serve and open.

^831

Inspect a channel

visual
  1. ^832

    Show one of your channels

    tested
    ace info <channel>

    JSON with ID, name, summary, project, owner, agent access (shared), desktop tools, and each chat's busy state and token usage.

  2. ^833

    Show a teammate's channel

    tested
    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 says samechocolixir.

^834

Rename a channel

visual
  1. ^835

    Rename it

    tested
    ace rename <channel> <name>

    Nothing printed; ace ls shows the new name. Lane branches keep their old names.

^836

Fork a channel

visual
  1. ^837

    Start a sibling channel

    tested
    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)

^838

List and rename tabs

visual
  1. ^839

    List open windows and their tabs

    tested
    ace tabs [--json]

    Window, channel, tab ID, type (chat, terminal, diff, blank), whether it's active, and name. --json adds the channel name and which window is focused.

  2. ^840

    Rename a tab

    tested
    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.

  3. ^841

    Restore a tab's default name

    tested
    ace tab rename <window> <channel> <tab> ""

    The tab goes back to its default (Terminal).

^842

Back up and restore a channel

visual
  1. ^843

    Back up a channel

    tested
    ace backup <channel> <new-directory>

    Writes backup.json, channel.json and channel.sqlite, then reminds you that project files and lane worktrees aren't included. An existing directory is refused (EEXIST).

  2. ^844

    Restore a backup as a new channel

    tested
    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-1 and cli-one-2, and ace info cli-one-1 reports that name.

  3. ^845

    Restore into another project

    visual
    ace restore <directory> --project <dir>

    5 Restore errors are raw ENOENT/EEXIST, and the restored channel can't be named (rest of githubnext/ace#624).

^846

Export and import seeds

visual
  1. ^847

    Export a channel's chats

    tested
    ace export <channel> <file>

    Writes an editable JSON seed (format: ace-seed) with every chat, its model and its items, including agent turns.

  2. ^848

    Import a seed as a new channel

    tested
    ace import <file> [--project <dir>] [--name <name>]

    Prints the new channel's name and ID. Without --project the current folder is used; a taken name is refused.

  3. ^849

    Move the seed's times to now

    tested
    ace import <file> --now

    The newest message is stamped with the import time, and the rest keep their spacing.

^850

Talk in a channel

visual
  1. ^851

    Post without invoking an agent

    tested
    ace say <channel> [--chat <id>] <text…>

    The message appears in the chat; no run starts. No text gives Nothing to say; an unknown chat gives No chat 99.

  2. ^852

    Ask the agent and stream the reply

    tested
    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.

  3. ^853

    Pick the model for one ask

    tested
    ace ask <channel> --model <provider/id> <text…>

    The reply is labelled with that model (gpt-5-mini).

    6 ace chat --model anthropic/… was accepted, then ran on gpt-6-astra: the rig's CLI had no Anthropic key.

  4. ^854

    Ask without waiting

    tested
    ace ask <channel> --detach <text…>

    Returns at once; ace info shows the chat busy until the run ends.

  5. ^855

    Watch a chat

    tested
    ace watch <channel> [--chat <id>]

    Replays the chat, then follows new messages and run ends until you stop it.

  6. ^856

    Open another chat

    tested
    ace chat <channel> [--model <provider/id>]

    Prints the new chat's ID for --chat.

    7 Chat IDs aren't sequential: a channel with one chat got chats 10 and then 15.

  7. ^857

    Stop a chat's run

    tested
    ace stop <channel> [--chat <id>]

    The run ends and its reply shows Stopped.

  8. ^858

    Use a teammate's channel

    tested
    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: say prints nothing, and a refused ask says Only the owner can invoke agents here without naming agent access.

    9 Pair study, Canary 0.0.53.88: watch replays the whole history with no mark where live output begins; chat and stop weren't tried.

^859

Stop all work in a channel

visual
  1. ^860

    Kill the channel

    tested
    ace kill <channel>

    Every run stops and the channel goes dormant.

^861

Move a channel

untested
  1. ^862

    Bring a hosted channel back to this host

    untested
    ace move <channel> --local

    Prints <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.

  2. ^863

    Move a channel to a cloud workspace

    visual
    ace move <channel> --compute

    The channel runs in the team's cloud workspace.

^864

Let teammates invoke agents

partial
  1. ^865

    Turn agent access on or off

    tested
    ace agents <channel> on|off

    on prints that teammates can run commands as you on this machine; off prints Agent access is off for <channel>. Only you can ask its agents. ace info shows agents.

^866

Let agents use desktop tools

visual
  1. ^867

    Turn desktop tools on or off

    tested
    ace desktop <channel> on|off

    on prints that its agents can operate this machine's apps; ace info shows desktop: true.

    12 Like ace agents, any word but on turns it off silently.

    13 Tested on Canary 0.0.51.85 (2026-10-22 study).

^868

Share a project

partial
  1. ^869

    See who can see a project

    partial
    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.

  2. ^870

    Share a project with the team

    tested
    ace project share|unshare <project> team

    Prints that the team can see every channel in it, including later ones.

    15 Without a team directory both share and unshare refuse with Join a team directory to share projects.

  3. ^871

    Share a project with one person

    tested
    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.

^872

Choose models

visual
  1. ^873

    List usable models

    tested
    ace models

    Every provider/id this machine has a key for (60 with Anthropic and OpenAI keys).

  2. ^874

    Show the default model

    tested
    ace model

    Automatic or the saved model, and Overridden by ACE_MODEL=… when that's set.

  3. ^875

    Set the default model

    tested
    ace model <provider/id>

    Prints the model; new chats' first runs use it.

    17 An unknown model on a provider that has a key gives This model is unavailable. Add its provider key first. (openai/does-not-exist with an OpenAI key set).

  4. ^876

    Go back to automatic

    tested
    ace model auto
^877

Store model keys

untested
  1. ^878

    Store a key in the keychain

    tested
    ace key set <NAME>

    Pipe or type the key, ending with Ctrl-D.

    Stored <NAME> in the keychain, through the running host when there is one so it can read the key without a prompt.

    18 Tested on Canary 0.0.51.85 (2026-10-22 study).

  2. ^879

    Remove a key

    tested
    ace key rm <NAME>

    Removed <NAME> or No <NAME> in the keychain.

    19 Tested on Canary 0.0.51.85 (2026-10-22 study).

^880

Join the team's directory

tested
  1. ^881

    Show the directory

    tested
    ace directory

    Its URL, or No directory. ACE_DIRECTORY overrides the saved one.

    20 Pair study, Canary 0.0.53.88: it never says this Mac is the one serving it, or whether the last sync worked.

  2. ^882

    Join a directory

    tested
    ace directory <url>

    The running host checks the URL with ACE_SECRET before 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.

  3. ^883

    Leave the directory

    tested
    ace directory off

    No directory.

    23 Pair study, Canary 0.0.53.88: an open Settings → Team kept the URL, Synced… and Leave… until a reload.

^884

Choose the web app for your devices

visual
  1. ^885

    Show the web app

    tested
    ace web

    Prints the saved app's origin, or No web app.

  2. ^814

    Set the web app

    tested
    ace web <url>

    Saves and prints the origin (a path is dropped). Only HTTPS is accepted.

  3. ^886

    Clear it

    tested
    ace web off

    No web app.

^887

Run a host

partial
  1. ^888

    Serve the app and gateway

    visual
    ace serve [--port <port>]

    Prints the local URL and, on the tailnet, the HTTP and HTTPS addresses your devices can open.

  2. ^889

    Stay off the tailnet and the directory

    tested
    ace serve --loopback

    Loopback only: not listening on the tailnet, finding peers, or publishing to the directory.

  3. ^890

    Run scripted teammates

    visual
    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.

  4. ^891

    Refuse a port that's taken

    tested

    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 same ACE_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.

^892

Read logs

visual
  1. ^893

    Filter the merged logs

    tested
    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.

  2. ^894

    Follow new lines

    tested
    ace logs --follow (-f)
  3. ^895

    Print JSON lines

    tested
    ace logs --json
^896

Open the app in a browser

untested
  1. ^897

    Open this host's app

    tested
    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 open prints nothing (left by githubnext/ace#652).

^898

Archive or delete a channel

visual
  1. ^899

    Archive a channel

    tested
    ace archive <channel>

    Hides it from ace ls; ace ls --all still lists it.

  2. ^812

    Unarchive a channel

    tested
    ace unarchive <channel>

    It's back in ace ls, dormant.

  3. ^813

    Delete a channel

    tested
    ace delete <channel>

    Removes it and says its lane branches remain in the project.