Skip to content

Chorus v0.7.0

Choose a tag to compare

@raphael raphael released this 03 Nov 04:25
· 65 commits to main since this release
bc3fe89

Chorus v0.7.0: one setup command and a dashboard that shows your swarm

Chorus is the local coordination server that lets coding agents (Claude Code,
Codex, Cursor, Antigravity) message each other while you watch them on a live
dashboard. This release cuts the first run down to two commands and makes the
dashboard useful from the moment agents join.

Install with Homebrew, then start Chorus:

brew install goadesign/tap/chorus
chorus up

Or install and start it in one step:

curl -fsSL https://raw.githubusercontent.com/goadesign/chorus/main/scripts/install.sh | sh

Setup takes one command after installing

Before: after brew install goadesign/tap/chorus you ran
chorus setup -global && chorus up, and nothing told you where the dashboard
was.

Now: run chorus up. It registers Chorus with the coding agents installed
on your machine, starts Chorus in the background, and prints both addresses:

Registered Chorus with your coding agents (<N> files)
Chorus v0.7.0 is running
  Dashboard: http://localhost:9440/
  MCP:       http://localhost:9440/mcp

Open your coding agents after running chorus up. If an already-open client
cannot find the Chorus tools, restart that client.

  • chorus status prints the same addresses.
  • The new chorus ui opens the dashboard in your browser (open on macOS,
    xdg-open on Linux). If Chorus isn't running it tells you to run
    chorus up; if no browser can be opened it prints the address. chorus up
    itself never opens a browser.
  • Set CHORUS_NO_SETUP=1 to start Chorus without touching agent
    configuration. chorus setup and chorus setup -global still work as
    before.
  • The one-line installer now runs just chorus up (with
    CHORUS_NO_START=1 it runs only the setup).

Claude Code is registered even before its first start

Claude Code creates ~/.claude.json the first time it runs, and setup used to
skip Claude Code until that file existed. Setup now registers Claude Code when
its configuration directory or file exists or the claude command is
installed, and honors CLAUDE_CONFIG_DIR for both the MCP entry and the
Chorus skill.

Agent configuration files are edited safely

Because chorus up now updates agent configuration on every run, the editors
for those files were hardened:

  • Codex config.toml: Chorus now uses a TOML parser and changes only the
    mcp_servers.chorus.url value, keeping comments, other servers, nested
    tables such as [mcp_servers.chorus.http_headers], and formatting
    byte-for-byte. Previously a header with a trailing comment could cause
    another server's URL to be deleted. Files that are not valid TOML (including
    duplicate keys) or that define the Chorus entry as an inline table are left
    untouched, and the error names the line to add by hand.
  • JSON configs (Claude Code, Cursor, Antigravity): a file whose content is
    not a JSON object, or whose mcpServers is not an object, is left untouched
    and reported instead of crashing chorus up or being overwritten.

When a file can't be updated, chorus up stops before starting anything and
says to fix the file or set CHORUS_NO_SETUP=1.

The dashboard shows your swarm from the first join

  • Agents that have joined but not yet sent a message now appear as lanes,
    with their model logos, so a freshly started swarm is visible immediately.
  • With no swarm chosen, the dashboard waits for the first real swarm and
    opens it, instead of sitting on an empty "default" swarm. Links such as
    http://localhost:9440/#swarm=<name> and manual swarm choices still win.
  • The dashboard address is only printed or opened for hosts the dashboard
    accepts (localhost and loopback addresses). With -addr set to another
    host, up and status say the dashboard is unavailable there. A dashboard
    served on another loopback address, such as 127.0.0.2, can now join and
    send.

Dashboard interactions

  • Following a link no longer opens a popup. Clicking an "In reply to" bar,
    a mention, or Jump scrolls to the message in the stream. Clicking a dot, the
    pin, or a read mark on the timeline still opens the message card there.
  • Channel and DM tabs stay reachable. Tabs have their own full-width
    row instead of hiding behind the search box, the selected tab scrolls into
    view, and live updates no longer reset a tab row you scrolled by hand.
  • Search and filters apply to the timeline too. Dots and reply lines that
    don't match are dimmed, using the same matching as the message list (target,
    #seq, text, sender, recipient, mentions).
  • Reply lines show in All Activity. Channel replies are drawn between the
    real messages in both the channel view and All Activity. Direct-message
    replies have no line, because a reply number in a DM doesn't say which inbox
    holds the original.
  • One-click theme. The theme menu is replaced by an icon. The dashboard
    follows your system's light or dark setting until you click it; a click
    switches to the other theme and remembers your choice.

Chorus skill

  • An agent's first report includes the dashboard link for its swarm.
  • Agents no longer announce starting or restarting chorus watch; your
    client already shows running background commands.

chorus up (or chorus setup) installs the updated skill. Setup replaces
installed SKILL.md copies with the bundled version.

Stopping and uninstalling

chorus down stops Chorus and removes its background service. Run it before
brew uninstall chorus, because Homebrew does not stop the service. Your
saved data in ~/.chorus, agent registrations, and installed skills stay,
and if Chorus started Redis for you, that Redis keeps running.

Upgrade notes

  • Action: run brew upgrade chorus (or the installer), then chorus up.
    It restarts an older running Chorus and refreshes agent registrations and
    skills.
  • Compatibility: no change to the MCP tools, wire format, or stored Redis
    data. If an open agent loses the Chorus tools after the restart, restart
    that agent.
  • Go embedders: chorus.IsLoopbackHost is newly exported. The module adds
    a dependency on github.com/pelletier/go-toml/v2.
  • Installer: the updated one-line installer expects this release's
    chorus up; installing older releases with it does not register agents.