Changelog

Every release of the Agent Mesh MCP server.

v0.9.0

Added

  • +Witnessed messaging (receipts ledger): every ack now writes a timestamped receipt keyed (message, agent, action). New `receipt` MCP tool writes non-consuming annotations (seen, r-ack, retracted, …) and new `get_receipts` returns the full trail for a message: who saw it, who acted on it, when. Ledger schema v2 with automatic migration — v1 acknowledged flags are backfilled as receipts, so existing audit history has no gap.
  • +Fleet broadcast: send_message accepts to_agent_id: "*", delivering to every other agent in the fleet. Recipient list is resolved and captured at send time; SSE push notifies every recipient; each recipient acks independently, and `acknowledged` becomes true only when all have acked. send_message now returns `recipients` alongside `message_id`.

Changed

  • ~Message.acknowledged is now a derived field (true when every addressed recipient holds an ack receipt). Existing single-recipient behavior is unchanged.

v0.8.7

Added

  • +Fleet dashboard TUI: npx agent-mesh-dashboard (or npx agent-mesh dashboard) shows live fleets, recent agents (with retry counts), and recent events. Refreshes every 1s (configurable via --interval). ANSI in-place updates. Ctrl+C to exit.

v0.8.6

Added

  • +Fleet template sharing: exportFleetTemplate(name, file_path, version?) writes a portable meshfleet-template-v1 JSON. importFleetTemplate(file_path, rename?) reads, validates the schema, and inserts (auto-suffix on conflict).

v0.8.5

Added

  • +Fleet template versioning: re-saving a template now creates a new version (auto-increment) instead of overwriting. getFleetTemplate(name, version?) returns latest or specific. listFleetTemplateVersions(name) and deleteFleetTemplate(name, version?) round out the API. FleetTemplate interface gained a 'version' field.

v0.8.4

Added

  • +Performance benchmarks: benchmark/bench.ts + BENCHMARKS.md. v1.0 gates met — spawn bookkeeping 6.4ms p50 (target <100ms), 10k messages persisted without drops. Known bottleneck: sendMessage rewrites the full ledger (~3.8ms/msg at 10k scale); batch writes are a v0.9+ follow-up.

v0.8.3

Added

  • +Synonym expansion (lightweight semantic routing): new src/synonyms.ts module with a curated table for 30+ dev terms. route_work now expands 'ui' to also match a frontend agent, 'db' to match a database agent, etc. Zero network cost, no ML dep. Override via setSynonymOverrides().

v0.8.2

Added

  • +Routing feedback loop: new record_routing_outcome(agent_id, capability_key, success) MCP tool. Future route_work matches weight their score by accumulated outcomes (Wilson-style). RouteMatch.weight field added.

v0.8.1

Added

  • +Skill taxonomy (hierarchical matching): new src/skill-taxonomy.ts module. Loads a JSON hierarchy like { frontend: { react: ['nextjs', 'remix'] } } and matches keywords against ancestors and descendants with decaying weight. Wire into route_work in v0.9.

v0.8.0

Added

  • +Automatic retry with exponential backoff: agents that fail transiently (non-zero exit, heartbeat watchdog, timeout, spawn error) are respawned up to 3 times with 1s/2s/4s + ±20% jitter; permanent failure after exhaustion; configurable via AGENT_MESH_RETRY_BASE_MS
  • +Partial result recovery on startup: recoverInterruptedAgents() flips agents stuck in 'running' to a new 'interrupted' status with a clear error message — no more stale fleet_status after a crash
  • +Ledger schema versioning: every save stamps schema_version: 1; migrateLedger() upgrades v0 ledgers on load
  • +route_work top_n parameter: fan out work to the N best-scoring agents; stable tie-break by agent_id
  • +npm publish prep: package.json ships with files whitelist (16 files, 29.3 kB), prepublishOnly runs build + tests, repository + bugs + homepage filled in

v0.7.0

Added

  • +Real-time inbox push via SSE: subscribe_inbox(agent_id) MCP tool returns a stream URL agents can connect to for real-time push of incoming P2P messages
  • +Standalone HTTP SSE server on port 13579 (MESHFLEET_SSE_PORT) serving GET /inbox/:agent_id/stream with heartbeat comments every 30s
  • +src/realtime.ts: subscriber registry with per-agent connection cap (default 5), backpressure handling, SSE formatting
  • +src/sse-server.ts: HTTP server with per-agent cap, heartbeat, graceful shutdown
  • +notifySubscribers hooked into send_message handler so every new message pushes to active SSE clients
  • +15 new unit tests for the realtime module (90 total, all passing)
  • +Bumped version to 0.7.0

Changed

  • ~Startup log now reports the SSE port when the HTTP server starts successfully

v0.6.0

Added

  • +Fleet templates: save_fleet_template, list_fleet_templates, get_fleet_template, delete_fleet_template, spawn_from_template
  • +Named collections of agent specs stored in the JSON ledger under 'templates' key for reuse
  • +Template validation: lowercase letters, numbers, dashes, underscores; 1-32 agents; no duplicate names
  • +15 new unit tests (75 total, all passing)

v0.5.1

Added

  • +ping MCP tool: minimal liveness check returning { status: 'ok', timestamp }
  • +get_health MCP tool: deeper health report — ledger size, fleet/agent/message counts, uptime, last event timestamp, status detection (ok/degraded/error)
  • +Read-side rate limiting on list_fleets and fleet_status (600 reads/hour per IP)
  • +Storage introspection via getLedgerSize() (combined JSON ledger + event log bytes)
  • +11 new unit tests (60 total, all passing)

v0.5.0

Added

  • +CLI inspector: npx agent-mesh inspect shows all fleets, one fleet, metrics, recent events
  • +getFleetMetrics with 9 metric fields (total_fleets, completed_fleets, failed_fleets, running_fleets, total_agents, total_messages, avg_fleet_duration_ms, success_rate, total_capabilities)
  • +formatFleetSummary, formatAgentRow, formatEventLog: pure formatting helpers for terminal display
  • +bin field in package.json: npx agent-mesh resolves to the inspector
  • +npm run inspect script for local development
  • +14 new unit tests (51 total, all passing)

v0.4.0

Added

  • +Per-fleet timeout: set_fleet_timeout overrides AGENT_MESH_AGENT_TIMEOUT_MS per fleet
  • +Structured event log: every fleet_created, agent_spawned, fleet_timeout_set, spawn_fleet_called event appended to ~/.config/opencode/agent-mesh.events.log (NDJSON)
  • +list_fleets MCP tool: returns all fleets with status + agent counts (total, complete, failed, running)
  • +Wire appendEvent into spawn_fleet and set_fleet_timeout handlers
  • +10 new unit tests (36 total, all passing)

v0.3.0

Added

  • +P2P message bus: send_message, get_inbox, ack_message (5 types: handoff, question, result, alert, request_help)
  • +Capability registry: register_capability, route_work (keyword + role overlap scoring)
  • +Premade agent discovery: list_agents scans .opencode/agents/ for 100+ specialized personalities
  • +Dynamic attachment: attach_agent joins a running fleet mid-flight
  • +spawn_fleet accepts an optional agent field to use a premade agent definition (--agent flag on opencode run)
  • +Auto-registration of capabilities from agent frontmatter on spawn
  • +Timeout watchdog with configurable AGENT_MESH_AGENT_TIMEOUT_MS (default 30 min)
  • +Spawn error handler for failed child processes
  • +Ledger corruption recovery (auto-reset to empty data on parse error)
  • +Child PID tracking for observability
  • +26 unit tests covering all core functions
  • +Test isolation via in-memory setLedgerOverride pattern
  • +GitHub Actions CI: install, typecheck, test on push/PR to main
  • +AGENT-MESH-SPEC.md (v0.1 core architecture)
  • +Brand: meshfleet.app

Changed

  • ~Refactored: extracted pure data layer to src/core.ts (416 LOC, testable) from src/index.ts (440 LOC MCP transport)
  • ~Bumped package.json to 0.3.0 with keywords, license, engines, test/typecheck scripts

v0.2.0

Added

  • +P2P messaging on top of v0.1 fleet primitives
  • +Capability registry with skill-based routing
  • +5 message types (handoff, question, result, alert, request_help)
  • +64 KB payload size limit
  • +SPEC-P2P.md documentation

v0.1.0

Added

  • +Initial release
  • +spawn_fleet: spawn N parallel agents as independent opencode run processes
  • +fleet_status: check fleet and agent lifecycle state
  • +collect_results: aggregate agent outputs
  • +JSON ledger persistence (~/.config/opencode/agent-mesh.json)
  • +Independent process execution (bypasses OpenCode's 30-minute background task timeout)
  • +Schema for Fleet and Agent records