← All posts

Meshfleet v0.8.7 — Templates, dashboard, and a complete v0.8.x series

v0.8.5–0.8.7 add fleet template versioning, portable export/import sharing, and a live dashboard TUI. The full v0.8 series: 8 releases, 181 tests, all open issues closed.

The first two v0.8.x posts covered the resilience push (v0.8.0) and the smart routing work (v0.8.1–0.8.4). This post wraps up the series with the three releases that close it out: v0.8.5, v0.8.6, and v0.8.7. Together they add versioned templates, portable sharing, and a live dashboard. After v0.8.7, every open GitHub issue is resolved.

v0.8.5 — Fleet template versioning

Before v0.8.5, save_fleet_template(name, agents) would throw if the name already existed. That was the safe behavior, but it made templates effectively write-once: a tweak meant either renaming or wiping the old one. v0.8.5 introduces versioning.

saveFleetTemplate(name, agents, description?, version?) now creates a new version on each save. If version is omitted, it defaults to max(existing) + 1. The internal ledger key is ${name}@v${version} so versions coexist in the same templates dict without collision.

The new API surface:

// Save v1
const v1 = saveFleetTemplate("code-review", agents, "initial");
// → { name: "code-review", version: 1, ... }

// Save v2 (auto-increment)
const v2 = saveFleetTemplate("code-review", agentsV2, "improved prompts");
// → { name: "code-review", version: 2, ... }

// Get specific version
const t1 = getFleetTemplate("code-review", 1);
const tLatest = getFleetTemplate("code-review"); // latest

// List all versions
const all = listFleetTemplateVersions("code-review");
// → sorted newest-first

// Delete one version (or all)
deleteFleetTemplate("code-review", 1);
deleteFleetTemplate("code-review"); // removes every version

The FleetTemplate interface gained a version: number field. spawnFromTemplate(name, version?) respects the version argument. Closes #6.

v0.8.6 — Fleet template sharing

v0.8.6 adds portable export/import. You can now move a fleet template between machines — or back it up, or share it in a Git repo.

exportFleetTemplate(name, file_path, version?) writes a portable JSON file with the schema marker meshfleet-template-v1:

{
  "schema": "meshfleet-template-v1",
  "name": "code-review",
  "version": 1,
  "description": "3-agent code review pipeline",
  "agents": [...],
  "exported_at": 1762137600000
}

importFleetTemplate(file_path, rename?) reads, validates the schema, and inserts. If the name already exists and no rename is given, a timestamp suffix is appended (e.g. code-review-2026-07-02T17-50-00) so existing work is never silently clobbered. Throws on missing file, unparseable JSON, unknown schema, or missing required fields.

// On machine A
exportFleetTemplate("code-review", "./code-review.json");

// On machine B
const imported = importFleetTemplate("./code-review.json");
// → { name: "code-review", version: 1, ... }

// Or rename on import
const renamed = importFleetTemplate("./code-review.json", "code-review-v2");
// → { name: "code-review-v2", version: 1, ... }

Closes #7.

v0.8.7 — Fleet dashboard TUI

The last open issue (#8) was a request for a TUI showing running fleets, messages, and agent status. v0.8.7 ships exactly that as a new bin entry:

npx agent-mesh-dashboard        # refresh every 1s (default)
npx agent-mesh-dashboard --interval 500   # custom interval
npx agent-mesh-dashboard --once   # one-shot inspection

The dashboard reads the same JSON ledger as the MCP server — no IPC, no daemon, just polls the ledger and event log on the configured interval. ANSI cursor moves for in-place updates; Ctrl+C to exit. Verified against a live ledger with 13 fleets, including interrupted agents (proving the v0.8.0 recovery feature is working in production).

The view:

Meshfleet Dashboard — 2026-07-02 22:53:11  (Ctrl+C to exit)

Fleets (13)
  ✓ bc34d339  complete   agents=  3 (run=0 done=3 fail=0) 34m46s
  ✗ 5db4167a  failed     agents=  2 (run=0 done=0 fail=2) 567ms
  ◐ eeeb4e7f  running    agents=  3 (run=0 done=0 fail=0) 41m16s
  ...

Recent Agents (last 10)
  896d0605  cfb1ce9e  hool-dev-canon       interrupted  2s
  ...

Recent Events (last 20)
  22:53:08  agent_retry_scheduled       a2 f1 (attempt 2)
  22:53:10  agent_failed_permanent      a2 f1
  ...

The v0.8.x series at a glance

VersionThemeHighlights
v0.8.0Hardening pushRetry with exponential backoff, partial result recovery, ledger schema versioning, route_work top_n
v0.8.1Skill taxonomyHierarchical skill matching with ancestor/descendant decay
v0.8.2Routing feedback looprecord_routing_outcome + Wilson-style score adjustment
v0.8.3Synonym expansionCurated synonym table for 30+ dev terms
v0.8.4Performance benchmarksSelf-contained suite; v1.0 gates verified
v0.8.5Template versioningRe-saving creates a new version; get/list/delete(version?)
v0.8.6Template sharingPortable meshfleet-template-v1 JSON export/import
v0.8.7Dashboard TUInpx agent-mesh-dashboard — live fleets, agents, events

By the numbers

  • 8 releases on GitHub (v0.7.0 through v0.8.7)
  • 181 tests across 17 files, all passing on the 3 OS × 3 Node CI matrix
  • 10/10 GitHub issues closed (every starter issue is shipped or documented)
  • 3 OS × 3 Node CI green on every release
  • 17 pages on meshfleet.app, including 5 blog posts
  • 15 MCP tools + 5 supporting modules (retry, recovery, taxonomy, feedback, synonyms)
  • One npm command away from public: npm install -g agent-mesh (ready, blocked on user npm login)

What the v0.8 series unblocks

The original v0.8 plan from the ROADMAP called for “smart routing” as the headline. We delivered that and more:

  • Reliability: retry + recovery means the mesh survives transient failures and crashes.
  • Intelligence: taxonomy + feedback + synonyms mean routing gets the right agent, not just the agent whose role contains the exact keyword.
  • Observability: dashboard + benchmarks + events mean the user can see what’s happening and the v1.0 perf promises are measurable.
  • Reusability: versioning + sharing mean templates are first-class artifacts that can be versioned, shared, and rolled back.

The next milestone is v0.9 — batch writes (fixing the 3.8ms/message sendMessage bottleneck), and then v1.0 with API freeze, distributed ledger option, and the npm publish that turns npm install -g agent-mesh into reality.

Try it

git clone https://github.com/johnmwhitman/agent-mesh.git \
  ~/.config/opencode/mcp-servers/agent-mesh
cd ~/.config/opencode/mcp-servers/agent-mesh
npm install && npm run build

Or once published: npm install -g agent-mesh.

Add to ~/.config/opencode/opencode.jsonc and restart OpenCode. Then try:

  • npx agent-mesh-dashboard to watch your fleet live
  • save_fleet_template with the code-review-trio example from examples/
  • route_work("audit authentication security", top_n=3) to see the fan-out routing

Full release notes: GitHub releases Roadmap: ROADMAP.md Compat: COMPATIBILITY.md Benchmarks: BENCHMARKS.md

Built this. Open-sourced it. Would love your feedback.