{"id":50124744,"url":"https://github.com/syncable-dev/memfleet-public","last_synced_at":"2026-05-23T19:04:14.857Z","repository":{"id":357344438,"uuid":"1214312150","full_name":"syncable-dev/memfleet-public","owner":"syncable-dev","description":"Structural intent coordination for agent fleets. Typed intent, precomputed blast radius, O(1) coordination reads — no prose, no timing windows.","archived":false,"fork":false,"pushed_at":"2026-05-12T10:17:33.000Z","size":192,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T12:25:23.646Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syncable-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-18T11:59:33.000Z","updated_at":"2026-05-12T10:17:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/syncable-dev/memfleet-public","commit_stats":null,"previous_names":["syncable-dev/memfleet-public"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/syncable-dev/memfleet-public","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemfleet-public","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemfleet-public/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemfleet-public/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemfleet-public/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syncable-dev","download_url":"https://codeload.github.com/syncable-dev/memfleet-public/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemfleet-public/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33408498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T18:09:33.147Z","status":"ssl_error","status_checked_at":"2026-05-23T18:09:31.380Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-23T19:04:04.646Z","updated_at":"2026-05-23T19:04:14.848Z","avatar_url":"https://github.com/syncable-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/memfleet-benchmarks.svg\" alt=\"MemFleet — fewer fire drills, faster releases, a fleet that compounds\" width=\"100%\"/\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eYour agent fleet deserves \u003ci\u003ea shared lane\u003c/i\u003e.\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://memfleet.io\"\u003e📖 Docs\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://github.com/syncable-dev/memfleet-public/stargazers\"\u003e⭐ Star us\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://www.npmjs.com/package/memfleet\"\u003enpm\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://github.com/syncable-dev/memfleet-public/issues\"\u003eIssues\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  MemFleet is the coordination layer for a fleet of coding agents. Agents announce what they're about to change before they touch a file — so the rest of the fleet can route around it, instead of finding out the hard way during a merge.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eGet a 10-agent fleet on shared coordination in under 90 seconds.\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eTyped intent\u003c/b\u003e · no prose, no timing windows \u0026nbsp;·\u0026nbsp; \u003cb\u003eO(1) reads\u003c/b\u003e · 1 ms publish \u0026nbsp;·\u0026nbsp; \u003cb\u003e0.01%\u003c/b\u003e overhead at full load\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/memfleet\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/memfleet?style=flat-square\u0026color=00D4C8\u0026logo=npm\u0026logoColor=white\u0026label=npm\u0026cacheSeconds=300\" alt=\"npm version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/syncable-dev/memfleet-public/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/syncable-dev/memfleet-public?style=flat-square\u0026color=00D4C8\u0026logo=github\u0026logoColor=white\u0026label=stars\u0026cacheSeconds=300\" alt=\"Stars\"/\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-Proprietary%20EULA-0A1628?style=flat-square\" alt=\"License\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/runtime-Rust-orange?style=flat-square\u0026logo=rust\" alt=\"Rust\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MCP-native-00D4C8?style=flat-square\" alt=\"MCP\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/early%20access-active-f59e0b?style=flat-square\" alt=\"Early Access\"/\u003e\n\u003c/p\u003e\n\n---\n\n## What it does (in plain English)\n\n**Three things, every fleet pass.**\n\n🚦 \u0026nbsp; **Stop interrupting humans.**\nBefore a merge would conflict, MemFleet sees the collision coming and routes one agent around it. The destructive merge conflicts that used to page a developer drop by **96%** — from 77 down to 3 across our biggest benchmark run.\n\n⏱️ \u0026nbsp; **Ship faster, even when ten agents are working at once.**\nSame tasks, same model, same repo — coordinated runs finish in **45% less wall-clock** at peak. That's almost twenty minutes saved on a single fleet pass. Your team gets its afternoon back.\n\n🤖 \u0026nbsp; **Get fleet leverage instead of fleet chaos.**\nWhen ten agents touch the same area, **nine of them step aside** the moment they see another agent is already on it. One agent does the work, the rest move on to something useful. No duplicate edits, no stomped changes.\n\n💰 \u0026nbsp; **Stop burning tokens on work that never survives the merge.**\nIn an uncoordinated 10-agent fleet, roughly **90% of tokens go to edits that get thrown away** — agents producing work destined to collide with each other. MemFleet routes the redundant agents away before they spawn. That's about **$18 of every $20** in fleet spend that doesn't need to burn.\n\nThe trade-off you'd expect — coordination overhead — comes in at **0.01% of runtime**. Essentially free.\n\n---\n\n## Numbers\n\nMeasured A/B: same agents, same model, same overlap zones, the only variable is whether MemFleet coordination is on or off. Three densities, three runs, 475 real agent invocations on Claude Haiku.\n\n| What we measured | 2 agents/zone | 5 agents/zone | **10 agents/zone** |\n|---|---:|---:|---:|\n| **Merge conflicts escalated to humans** | −57% | −85% | **−96%** |\n| **Wall-clock saved on a fleet pass** | 20% | **45%** | 38% |\n| **Redundant agent work eliminated** | 52% | 74% | **90%** |\n| **Tokens spent on collision-bound work** (production projection) | ~50% | ~74% | **~90%** prevented |\n| Tokens saved as measured in the bench harness | — | — | −25.7% (floor) |\n| Code locations protected from overwrite | 118 | 327 | **1,040** |\n| Coordination overhead | 0.00% | 0.01% | 0.01% |\n| Publish-intent latency (p95) | 1 ms | 1 ms | 1 ms |\n\nWall-clock peaks at five agents because the harness runs sequentially — at ten agents the skip path itself takes time. In a truly parallel fleet (every CI runner, every Cursor pane), that drops further.\n\n**About the two token numbers.** In our bench, every \"skipped\" agent still spawns a fresh Claude Code subprocess just to call `publish_intent` and exit — paying about 249K tokens of cold-start overhead it would never pay in production. That floors the *measured* saving at −25.7%. In a real fleet where agents are already running and `publish_intent` is a one-millisecond tool call inside the agent, the same coordination prevents roughly **93M of 103M baseline tokens** from being spent at all. That's the **−90%** production projection — same MemFleet, same coordination, same conflict prevention, just minus the harness artefact.\n\nFull result JSONs, methodology, and disclosures: [`benchmark/README.md`](benchmark/README.md).\n\n---\n\n## Why it compounds\n\nThe more agents you run in parallel, the more value coordination delivers. Two agents fighting over the same file? You save one redundant edit. Ten agents on the same module? You save nine. The curve isn't linear — it's `(N−1)/N`, and we've measured it at three points:\n\n```\n2 agents  →  52% of would-be collisions skipped\n5 agents  →  74% skipped\n10 agents →  90% skipped\n```\n\nThis is what \"fleet equivalent\" means in practice — a 10-agent fleet only spends 1 agent's worth of compute on each overlap zone, but you still get the coverage of having ten agents looking at the problem. You're not paying for redundancy you don't need.\n\n---\n\n## Get access\n\nMemFleet is in **early access**. Phase 1 (intent registry, episode store, conflict classifier, Y-doc, MCP) is stable and shipping. Phase 2 (leases, shadow overlays, intent-aware auto-merge) and Phase 3 (in-process Memtrace, signed provenance, policy engine) are in flight.\n\n→ **Install: `npm install -g memfleet`** — binary, 10 skills, MCP server, all configured in one command.\n\nClaude Code, Claude Desktop, and Cursor (v2.4+) pick up the tools and skills automatically.\n\n\u003e 🔒 **Privacy.** MemFleet runs locally. Your code never leaves your machine. The broker holds typed intents and episode metadata — function names, change kinds, blast-radius node IDs — never source bodies.\n\n---\n\n## Why MemFleet exists\n\nTen coding agents on the same repo is great until two of them rename the same function at the same time. The naive answers don't scale:\n\n- **Have each agent write a paragraph explaining its intent.** Costs ~200 tokens per edit, vendor-specific, no way to query it structurally.\n- **Broadcast every edit on a timing window.** Works for two agents. Floods at ten. Breaks on network jitter.\n\nBoth produce the same outcome: silent collisions, overwrites, and a human pulled into a merge conflict that should never have reached them.\n\n**MemFleet treats intent as a structural type, not a paragraph.** Every edit emits a typed `IntentKind` with a precomputed impact set, attached to the graph nodes it touches. Any agent reading those nodes sees the coordination picture — O(1), one millisecond, no prose, no timing window.\n\n```rust\npub enum IntentKind {\n    Refactor    { pattern: RefactorPattern },\n    FeatureAdd  { surface: FeatureSurface },\n    BugFix      { defect: DefectClass },\n    Cleanup     { kind: CleanupKind },\n    Performance { axis: PerfAxis },\n    SecurityFix { severity: Severity, cve: Option\u003cString\u003e },\n    TestAdd     { covers: Vec\u003cNodeIdentity\u003e },\n    DocsOnly,\n    Exploratory,\n}\n```\n\nOne typed intent ≈ 20 tokens. One prose rationale ≈ 200+. Across a 10-agent fleet running 100 edits, that's roughly **90,000 tokens saved per fleet-turn** — before counting the agents who didn't run because they saw an active intent and skipped.\n\n---\n\n## How conflicts get classified\n\nNot every collision is the same. MemFleet sorts them into three buckets so the right one gets the right response:\n\n| Class | What it is | What MemFleet does |\n|---|---|---|\n| **A — clean** | New symbol, no overlap with anyone | Auto-accepted, zero coordination cost |\n| **B — auto-merged** | Two agents touched the same symbol but the changes are compatible | Last-writer-wins, loser gets a typed replan hint — no human involved |\n| **C — destructive** | Removes a live symbol, or breaks an active caller | Blocked at intent time, structured conflict report |\n\n**Class C is the one that used to wake a developer up.** That's the number the headline `96% fewer` refers to. Class B used to look like a conflict too, but MemFleet resolves it automatically — those don't show up in your inbox either.\n\n---\n\n## 8 MCP tools\n\n| Tool | Purpose |\n|:--|:--|\n| `publish_intent` | Register what you're about to change. Returns blast radius + any active conflicts. |\n| `record_episode` | Record what actually happened. Classifies A/B/C, precomputes impact, updates rollups. |\n| `get_node_state` | One call: who else is working on this symbol, what changed recently, conflict density. |\n| `get_episode` | Fetch a single episode by id. |\n| `query_episodes` | Filtered search by node, intent kind, or time range. |\n| `ydoc_read` | Read the Y-doc thread + NodeState blob for a symbol. |\n| `subscribe` | Stream filtered events with a budget. |\n| `fleet_status` | Active intents, open subscriptions, conflict counts by class. |\n\n---\n\n## 10 agent skills\n\nMemFleet ships skills that teach agents how to use the broker — no prompt engineering required. They fire automatically based on what you ask.\n\n| | Skill | You say… |\n|:--|:------|:---------|\n| **Intent** | `memfleet-publish-intent` | *\"I'm about to refactor X\"* |\n| **Episode** | `memfleet-record-episode` | *\"I just edited X\"* |\n| **Node state** | `memfleet-node-state` | *\"is anyone working on X\"* |\n| **Query** | `memfleet-query-episodes` | *\"what changed today\"* |\n| **Subscribe** | `memfleet-subscribe` | *\"watch the auth module\"* |\n| **Status** | `memfleet-fleet-status` | *\"how busy is the fleet\"* |\n\nPlus **4 workflow skills** that chain multiple tools with decision logic: `memfleet-first` (meta-router), `memfleet-safe-edit`, `memfleet-conflict-resolution`, and `memfleet-fleet-coordination`.\n\n---\n\n## Architecture\n\n```\nAgent (Claude Code / Cursor / CI bot)\n        │  MCP (stdio or SSE)\n        ▼\nmemfleet-mcp          ← single MCP endpoint agents see\n        │\n        ▼\nbroker crate          ← intent registry, episode store, CRDT classifier,\n        │               rollup cache, subscription router, Y-doc, provenance log\n        ▼\nMemtraceBackend trait ← Phase 1: over-MCP client to a running memtrace-mcp\n                        Phase 3: in-process trait swap, zero other code changes\n```\n\nMemFleet is **composition**, not replacement: it uses Memtrace for structural blast radius today and will embed it in-process in Phase 3.\n\n---\n\n## Compatibility\n\n| Editor / Agent | MCP Tools | Skills | Install |\n|:---------------|:---------:|:------:|:--------|\n| **Claude Code** | ✅ | ✅ | `npm install -g memfleet` — fully automatic |\n| **Claude Desktop** | ✅ | ✅ | Automatic — shared with Claude Code |\n| **Cursor** (v2.4+) | ✅ | ✅ | `npm install -g memfleet` — fully automatic |\n| **Windsurf** | ✅ | Coming soon | Add MCP server manually |\n| **VS Code (Copilot)** | ✅ | — | Add MCP server manually |\n| **Any MCP client** | ✅ | — | Add MCP server manually |\n\n---\n\n## Setup\n\n### Claude Code + Claude Desktop\n\n`npm install -g memfleet` handles everything — binary, 10 skills, MCP server, plugin, marketplace.\n\nFor manual setup:\n\n```bash\nclaude plugin marketplace add syncable-dev/memfleet-public\nclaude plugin install memfleet-skills@memfleet --scope user\nclaude mcp add memfleet -- memfleet mcp\n```\n\n### Cursor\n\n`npm install -g memfleet` writes the MCP server to `~/.cursor/mcp.json` and the 10 skills to `~/.cursor/skills/memfleet-*/SKILL.md`. Cursor v2.4+ picks them up on next launch.\n\nProject-local install (skills travel with the repo):\n\n```bash\nmemfleet install --only cursor --local\n```\n\n### Other editors (Windsurf, VS Code, Cline)\n\nAfter `npm install -g memfleet`, add the MCP server to your editor config:\n\n```json\n{\n  \"mcpServers\": {\n    \"memfleet\": {\n      \"command\": \"memfleet\",\n      \"args\": [\"mcp\"],\n      \"env\": { \"RUST_LOG\": \"info\" }\n    }\n  }\n}\n```\n\n### Uninstall\n\n```bash\nmemfleet uninstall\nnpm uninstall -g memfleet\n```\n\n---\n\n## Requirements\n\n| Dependency | Purpose |\n|:-----------|:--------|\n| **Node.js ≥ 18** | npm installation |\n| **Rust toolchain** | Only if building from source — binaries are prebuilt |\n| **Memtrace** (optional) | Full structural impact analysis — Phase 1 broker runs without it via stub |\n\n---\n\n## License \u0026 ownership\n\n**Proprietary EULA.** Free to use during early access and for individual developers after general availability. Broker + classifier are closed-source.\n\nBenchmark suite under MIT in [`benchmark/`](benchmark/README.md) — fully reproducible.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://memfleet.io\"\u003ememfleet.io\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://www.npmjs.com/package/memfleet\"\u003enpm\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://github.com/syncable-dev/memfleet-public/issues\"\u003eIssues\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Built by \u003ca href=\"https://syncable.dev\"\u003eSyncable\u003c/a\u003e · Copenhagen 🇩🇰\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyncable-dev%2Fmemfleet-public","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyncable-dev%2Fmemfleet-public","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyncable-dev%2Fmemfleet-public/lists"}