Skip to content
Early access

Parallel agents, one repo.

Run Claude Code, Codex and anything else that lives in a shell, side by side on your Mac. Each agent gets its own worktree and a real terminal, keeps going when the app doesn't, and tells you when it needs you.

Coming soon to macOS$ aster run --agent claude

Early access · macOS 15 or later · Apple silicon · Free

A day with more than one agent

What it looks like when you stop babysitting tabs.

  1. Fan out before lunch

    Three bugs, three agents. From the New Workspace sheet or one shell loop, each gets its own worktree and branch, runs your project's setup script, and starts on its prompt. Nobody steps on anybody's changes.

    zsh · ~/src/api
    $ for t in fix-login flaky-ci csv-export; do
      aster ws new $t --fetch --run \
        --agent claude --prompt-file tasks/$t.md
      done
    ~/.aster/worktrees/api/fix-login
    session s-7f3a
    ~/.aster/worktrees/api/flaky-ci
    session s-2b91
    ~/.aster/worktrees/api/csv-export
    session s-91c2
  2. Walk away. Get called back.

    Agents report through hooks. When one stops to ask permission, its row turns amber and macOS tells you. Answer it and the mark clears by itself. Already looking at that session? No banner.

    zsh · any terminal
    $ aster ls
    SESSION  WORKSPACE   AGENT   STATUS
    s-7f3a   fix-login   claude  needs you
    s-2b91   flaky-ci    codex   working
    $ aster attach s-7f3a  # answer it; the mark clears
  3. Quit it, crash it, update it

    Each terminal is its own process, owned by a small Go daemon rather than by the window. Close Asterism mid-task, open it again later, and every agent is on the exact screen you left. Or skip the app and attach from any terminal.

    zsh · any terminal
    # Asterism has been closed since lunch.
    $ aster ls
    SESSION  WORKSPACE   AGENT   STATUS
    s-7f3a   fix-login   claude  needs you
    s-2b91   flaky-ci    codex   working
    s-91c2   csv-export  claude  working
    $ aster attach s-7f3a  # Ctrl+Space detaches
  4. Let one agent run the others

    Everything the app does is an aster command, and every command speaks --json. Hand the CLI to your lead agent and it can split the work into workspaces, start helpers and check which of them is stuck.

    claude · lead session
    # The lead agent hands off a task.
    $ aster ws new api-schema --run \
      --agent codex --prompt "Draft v2 schema"
    ~/.aster/worktrees/api/api-schema
    session s-c41e
    $ aster ls --json
  5. Hand a pull request to an agent

    A review request lands. Pick it from the project's pull request list and choose Review with Agent: it opens on the PR's branch in its own worktree, with an agent already reading the change. Once the PR merges or closes, Clean Up removes the review workspace.

    zsh · ~/src/api
    $ aster pr ls
    #    TITLE             AUTHOR  BRANCH      CI       REVIEW     WORKSPACE
    142  Rate-limit login  maya    rate-limit  passing  requested
    $ aster ws new review-142 --pr 142 --run \
      --agent claude --prompt "Review this PR"
    ~/.aster/worktrees/api/review-142
    session s-5d10
  6. Review the stack, not a pile of branches

    Each workspace shows its pull request, review state and CI. Working with gh stack? You see the layers in order, and which one needs a restack. When work merges, Asterism lists the workspaces you can clean up.

  7. Know what the work cost

    Tokens per session, workspace and agent, priced at API list rates, next to the pull requests that actually merged. Read from the agents' own logs on your Mac, keeping only the numbers, never your prompts.

    WorkspaceAgentTokensAPI-equiv.PR
    fix-loginclaude1.9M$4.10#128 merged
    flaky-cicodex0.8M$1.35#129 merged
    csv-exportclaude3.2M$7.80open
    Illustrative numbers. Costs are API list price, not what you paid.
Native
A Mac app with libghostty terminals, not a web view. Your Ghostty config, fonts and keybinds come along.
Local
State lives in a database on your Mac. Asterism only reads from GitHub, and it never stores your prompts or replies.
Any agent
Claude Code and Codex report status out of the box, on the subscription you already have. No API key needed. Anything else that runs in a terminal runs here too.

Everything the app does, from a prompt.

Projects, workspaces, sessions and layouts are all commands. Add --json to any of them.

aster --help
aster project add [path]
Register a directory as a project.
aster ws new <slug> --run
Create a worktree workspace, run its setup, start an agent.
aster run --agent <name>
Start a session in this workspace; --split right opens a pane.
aster ls
Sessions with their status and attention mark.
aster attach <session>
Attach this terminal; Ctrl+Space detaches.
aster layout set <ws>
Set panes and tabs the way the app shows them.
aster hooks install
Install the Claude Code hooks that report status.
aster doctor
Check the daemon, git, shell, agents, hooks and worktrees.

Bring your agents together.

Free. Early access builds update themselves and ask before they install.

Coming soon to macOS

macOS 15 or later · Apple silicon