Releases: Cotal-AI/Cotal
v0.8.1
🚀 Cotal 0.8.1 is out!
Grab it: npm i cotal-ai@0.8.1
What's Changed
- fix(manager): enforce one manager per space via a singleton lease by @davidfarah2003 in #122
- feat(manager): per-agent working directory (cwd) by @caffeinum in #43
- fix(core): silent TCP+INFO liveness probe (no broker auth-error log) by @davidfarah2003 in #123
Full Changelog: v0.8.0...v0.8.1
v0.8.0
🚀 Cotal 0.8.0 is out!
Grab it: npm i cotal-ai@0.8.0
What's Changed
- ci: gate security/protocol smoke suite in CI by @davidfarah2003 in #107
- fix(attach): restore terminal modes on detach by @caffeinum in #105
- feat(cli): hide offline members on the web mesh graph by default by @davidfarah2003 in #109
- feat: mesh manifest — cotal up -f / topology view (PR 1/2) by @davidfarah2003 in #108
- feat: mesh manifest — spawn -f / down -f (PR 2/2) by @davidfarah2003 in #110
- docs: mesh manifest guide (up -f / spawn -f / down -f) by @davidfarah2003 in #113
- fix(manager): ps/start/stop/attach resolve the broker from the registry by @davidfarah2003 in #114
- fix(cli): correct web graph visibility under the hide filters by @davidfarah2003 in #115
- feat(tmux): add @cotal-ai/tmux extension by @Lanzelot1 in #111
- fix(cli): web graph mode filters gate persistent edges + no-cache dashboard assets by @davidfarah2003 in #116
- chore: drop pending changesets to defer the version bump by @davidfarah2003 in #117
- refactor(core): share the mesh-target preflight with the manager control commands by @davidfarah2003 in #118
- fix(manager): forward resolved channel ACL to spawned connectors by @davidfarah2003 in #119
- refactor(core)!: split machine-local workstation layer into @cotal-ai/workspace by @davidfarah2003 in #120
Full Changelog: v0.7.0...v0.8.0
v0.7.0
🚀 Cotal 0.7.0 is out!
Grab it: npm i cotal-ai@0.7.0
What's Changed
- feat(connector): add cotal_orientation self/context card for agents by @davidfarah2003 in #90
- feat(connector): point OpenCode and Hermes agents at cotal_orientation too by @davidfarah2003 in #91
- feat: per-spawn harness+model selection (CLI + MCP) and harness preflight by @davidfarah2003 in #89
- feat(web): live force-directed graph view of a space by @davidfarah2003 in #92
- fix(web): drop offline agents from the graph immediately by @davidfarah2003 in #94
- chore: drop changeset for graph offline fix (no standalone release) by @davidfarah2003 in #96
- fix(manager): spawn by persona filename, identity from the file's name: by @davidfarah2003 in #99
- feat(cli): spawn from any directory via a running-mesh registry by @davidfarah2003 in #98
- docs: finish the README by @Lanzelot1 in #81
- feat(core): broker-sourced authoritative channel membership for the graph by @davidfarah2003 in #93
- refactor(cli): make all mesh commands work from any directory by @davidfarah2003 in #101
- fix(cli): web — pre-mint a scoped manager cred, drop the account signing seed by @davidfarah2003 in #103
- chore: changeset for 0.7.0 by @davidfarah2003 in #104
Full Changelog: v0.6.0...v0.7.0
v0.6.0
🚀 Cotal 0.6.0 is out!
Grab it: npm i cotal-ai@0.6.0
What's Changed
- refactor(cli): declutter the command surface (27 → 20 commands) by @davidfarah2003 in #77
- chore: drop premature CLI-declutter changeset by @davidfarah2003 in #83
- ci: gate the GitHub Release cut on an actual npm publish by @davidfarah2003 in #84
- feat(delivery): server-side delivery daemon for the Plane-3 durable backstop by @davidfarah2003 in #85
- feat(delivery): daemon on cotal up + auth-by-default, rebased onto main (0.6.0) by @davidfarah2003 in #87
Full Changelog: v0.5.0...v0.6.0
v0.5.0
🚀 Cotal 0.5.0 is out!
Grab it: npm i cotal-ai@0.5.0
What's Changed
- ci: auto-tag and cut the GitHub Release on publish by @davidfarah2003 in #69
- feat(cli): personas edit + list --running, declared-data completion, completion install by @davidfarah2003 in #68
- feat(cli): seed a default persona and spawn it when none is named by @davidfarah2003 in #70
- feat(core): per-channel attention (quiet/muted), mesh-visible by @davidfarah2003 in #71
- feat(web): roster agent-detail with harness/model logos + recipient name resolution by @davidfarah2003 in #72
- fix(cmux): make closeWorkspace idempotent so teardown can't crash the manager by @davidfarah2003 in #74
- feat(connector-core): gate manager-op tools by spawn capability by @davidfarah2003 in #75
- feat(connector-claude-code): auto-detect session model into presence by @davidfarah2003 in #76
- feat: self-serve channel join — core-sub live reads + Plane-3 durable backstop (SPEC v0.3) by @davidfarah2003 in #78
Full Changelog: v0.4.0...v0.5.0
v0.4.0
🚀 Cotal 0.4.0 is out!
This release makes the chat read/write boundary genuinely broker-enforced, hardens the agent control plane top to bottom, and adds self-healing mesh connections.
Grab it: npm i cotal-ai@0.4.0
🔐 Channel read ACLs (broker-enforced)
The agent-file channels / publish fields are split into three explicit concepts — subscribe (active read set), allowSubscribe (read ACL), allowPublish (post ACL, default-deny) — with subscribe ⊆ allowSubscribe enforced fail-loud. Chat reads/writes are now contained at the broker like DM/TASK: bind-only live-tail durables (an agent can't widen its own filter), name-scoped history reads, and per-channel read grants pinned to the request subject. A follow-up review closed an ACL token-aliasing hole and tightened DM/TASK metadata grants.
⚠️ Breaking: the loader rejects the oldchannels/publishfield names. Migrate agent files and personas tosubscribe/allowSubscribe/allowPublish.
🛡️ Control-plane security hardening
- Three-tier control authz (self-service / privileged / admin), default-deny, fail-closed routing.
spawnis a declared capability; destructive / cross-agent ops (incl.purge) are admin-only.- Loopback bind by default (
127.0.0.1);--openis now an explicit, auth-independent choice. - Spawned-agent environment isolation — only the declared allow-list is passed, never
process.env. - Fork-bomb / churn bounding:
MAX_AGENTSceiling + minimum-lifetime floor + recursive child reaping. attachterminal read/write scoped to own children, or admin.definePersonacontent/policy split with a write-once owner — a peer can't grant itself a capability or seize ownership.
♻️ Self-healing mesh connection
The endpoint rebuilds itself on a terminal NATS close (unacked messages redeliver on the rebound durables, so nothing is lost), plus a manual CotalEndpoint.reconnect(), a cotal_reconnect tool (Claude Code + OpenCode), and an OpenCode /reconnect command.
🧰 CLI & connectors
cotal personasmanagement + dynamic shell completion; barecotalprints help;cotal setupis explicit; spawn names auto-number against the live mesh.- Opt-in per-connector MCP server sharing for spawned agents.
- Agent transcript mirroring is now opt-in (default off).
- OpenCode:
/newcontext reset keeps operator logins; spawned agents reuse local auth; the busy guard releases on any turn end so channel push survives human turns.
🐛 Fixes
- Wildcard channel subscriptions work (
c+c.>). - Deterministic, fail-loud peer-name resolution.
- Spawn denials name the missing capability instead of blaming the manager.
What's Changed
- feat(core): self-healing mesh connection + manual reconnect by @davidfarah2003 in #48
- feat(security): control-plane hardening — three-tier authz, definePersona policy split, spawn bounding by @davidfarah2003 in #49
- fix(security): control-plane hardening follow-up + docs (re-targeted to main) by @davidfarah2003 in #51
- fix(core): make wildcard channel subscriptions work (
c+c.>) by @davidfarah2003 in #52 - docs: restructure docs and add cross-tool agent entry points by @davidfarah2003 in #53
- docs: fill package.json descriptions and list cmux + hermes in README by @davidfarah2003 in #54
- feat(manager): auto-number spawn names on collision by @davidfarah2003 in #55
- feat(opencode): adopt /new as a context reset and keep operator logins by @davidfarah2003 in #57
- feat(cli): auto-number
cotal spawnnames against the live mesh by @davidfarah2003 in #58 - fix(opencode): reuse local auth for spawned agents by @davidfarah2003 in #59
- fix(opencode): release busy guard on any turn end so channel push survives human turns by @davidfarah2003 in #60
- fix(core): make peer name resolution deterministic and fail-loud by @davidfarah2003 in #61
- feat(connector): opt-in per-connector MCP server sharing for spawned agents by @davidfarah2003 in #62
- fix: operator persona can spawn, and spawn errors name the real cause by @davidfarah2003 in #63
- feat(core): broker-enforced channel read ACLs (subscribe/allowSubscribe/allowPublish) by @davidfarah2003 in #64
- feat(cli): cotal personas management + dynamic shell completion by @davidfarah2003 in #65
- chore: changesets for 0.4.0 release by @davidfarah2003 in #66
Full Changelog: v0.3.2...v0.4.0
v0.3.2
🚀 Cotal 0.3.2 is out!
Managed Claude agents now start cleanly on fresh workspaces — we clear the new back-to-back confirm gates so nothing hangs at starting….
Grab it: npm i cotal-ai@0.3.2
What's Changed
- ci: keep release notes clean by @Lanzelot1 in #47
Full Changelog: v0.3.1...v0.3.2