Repository navigation
Chorus v0.7.0
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 upOr install and start it in one step:
curl -fsSL https://raw.githubusercontent.com/goadesign/chorus/main/scripts/install.sh | shSetup 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 statusprints the same addresses.- The new
chorus uiopens the dashboard in your browser (openon macOS,
xdg-openon 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=1to start Chorus without touching agent
configuration.chorus setupandchorus setup -globalstill work as
before. - The one-line installer now runs just
chorus up(with
CHORUS_NO_START=1it 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.urlvalue, 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 whosemcpServersis not an object, is left untouched
and reported instead of crashingchorus upor 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-addrset to another
host,upandstatussay the dashboard is unavailable there. A dashboard
served on another loopback address, such as127.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), thenchorus 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.IsLoopbackHostis newly exported. The module adds
a dependency ongithub.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.