Meshfleet v0.9.0 — Scale + wire-up preview
The next release focuses on the known sendMessage bottleneck (3.8ms/msg at 10k scale) and finishes wiring the v0.8 routing features into the live route_work path. Preview of the four items, their design, and the timeline.
The v0.8.x series shipped eight releases: resilience push, smart routing, benchmarks, template versioning, template sharing, and the dashboard TUI. 10/10 GitHub issues are closed. 181 tests pass. The v1.0 perf gates we promised in the ROADMAP are verified.
v0.9.0 is the bridge release between v0.8.x and v1.0. It has exactly four items, all focused on two themes: scale (the one remaining perf bottleneck) and wire-up (finishing the v0.8 routing features that exist as modules but aren’t fully integrated into route_work).
The four items
1. Batch writes for sendMessage
The known bottleneck. Every sendMessage call rewrites the full JSON ledger — loadData + saveData round-trip. At 10k messages on a single fleet, that’s ~3.8ms per message, or 35–38 seconds total. The v1.0 gate (10k messages with no drops) is met, but the latency is painful at scale.
Design options being evaluated:
- Append-only event log for messages — write the new message to
agent-mesh.events.log(already used for structured events), periodically compact into the JSON ledger - Write coalescing — batch pending writes from multiple
sendMessagecalls within a 10ms window - In-memory mutation + atomic rename — keep the ledger in memory, write to
agent-mesh.json.tmp, thenrename()(atomic on POSIX). NoloadDataper send; onlyJSON.stringify+ write
Target: 10k messages in under 5 seconds (currently 35s). The benchmark suite in benchmark/bench.ts will be the gate.
2. Wire skill-taxonomy into route_work
The taxonomy module is built and tested (src/skill-taxonomy.ts, 9 tests, v0.8.1). The user can register skills in a hierarchy:
{
"frontend": { "react": ["nextjs", "remix"], "vue": ["nuxt"] },
"backend": { "node": ["express", "fastify"] }
}
But route_work doesn’t use it yet. The change: when scoring, also look up the agent’s skills in the taxonomy and add ancestor/descendant matches with decaying weight. A react skill would then match a nextjs-only agent at lower weight (distance=2 in the tree).
The change is contained to src/core.ts:routeWork() — the taxonomy module is already complete.
3. Wire synonyms into role/skill parsing
The synonym table is built and tested (src/synonyms.ts, 9 tests, v0.8.3). route_work calls expandKeywordsWithSynonyms() on the description, but it doesn’t expand the role and skills of registered capabilities before scoring.
The change: when scoring a capability, also consider the synonym-expanded role name and skill names. An agent with role react would match descriptions containing “jsx” or “reactjs” (the reverse direction of the current getSynonyms() reverse-lookup).
4. Per-version fixture tests for COMPATIBILITY.md
COMPATIBILITY.md was shipped in v0.8.4. It documents the API + ledger schema guarantees per version. But there’s no automated test that exercises each released schema_version against a fixture.
The change: generate a fixture ledger per released version (e.g. test/fixtures/ledger-v0.json, test/fixtures/ledger-v1.json), run loadDataFromFile against each in CI, assert the parsed MeshData is valid. This prevents future schema changes from breaking old ledgers.
Timeline
Target: end of July 2026. The four items are independent and can ship in any order. If sendMessage batch writes are clean enough, the v0.9.0 release also rolls the codebase into v1.0 API freeze (skipping a separate v0.9.1).
What stays the same
- No new tools. v0.9.0 is pure performance + integration work.
- No breaking changes. All four items are internal optimizations and integrations of existing modules.
- No new dependencies. The taxonomy, synonyms, and benchmark modules are already in the repo. The batch-writes work uses
fs.renameSync(built into Node) or the existing event log.
How to follow along
- Watch the GitHub repo for release tags
- Subscribe via RSS (6 posts and counting)
- Check the ROADMAP — the v0.9.0 section is the canonical source of truth
Try v0.8.7 in the meantime
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
Add to ~/.config/opencode/opencode.jsonc and restart OpenCode. Or once published: npm install -g agent-mesh. Then try the frontend-bug-bash example from examples/ with route_work("ui bug", top_n=3) to see synonym expansion in action.
v0.9.0 is the last step before v1.0. After it ships, the API freezes and the mesh is production-ready.