SwarmOps
ProjectGoals
View as Markdown

Goals#

SwarmOps is a version control system, written in Rust, for swarms of coding agents: tens of agent processes on one host committing into one repository at once, every command answering in JSON, and the work going back to git so that CI and deployments run as before. It is built for one host first and then, offline-first, for several. This page states what SwarmOps sets out to do, how each goal is measured, where its target is written down, what has been measured so far, and which milestone delivers it. docs/perf.md holds every measurement, docs/known-limitations.md what is still open, and docs/roadmap.md the milestones, in detail.

Who it is for#

  • People who run agent swarms. 10 to 50 Claude Code or LangGraph processes working in one repository on one host, where agents in separate git worktrees serialize nothing and leave the merging to whoever pushes last.
  • The agents themselves. A program reads a stable error code, an exit code and whether a retry can help; it does not parse prose. It reaches the store through the CLI or an MCP server.
  • Teams that keep git. The store imports a git history and exports the landed work back to git, so a repository's CI, review and deployment keep their source of truth until the team decides otherwise. Planned: the store fetches from and pushes to GitHub itself, and people keep stock git against a store (docs/roadmap.md).

Goals#

"Stated in" names the public document that states the target. "Measured" cites a section of docs/perf.md, or says that no measurement exists yet. The milestones are those of docs/roadmap.md; the order of those from M5 on is settled once the pilot has run.

#GoalMetricTargetStated inMeasuredMilestone
G1Many writers, one storeCommits by concurrent agent processes; E_BUSY failures10 to 50 processes; no E_BUSY (retryable, after the 10 s lock timeout) and no lost commitREADME (intro); perf.md, "32 agents committing through the binary" (the plan's "0 failures")32 × 1,000 commits: E_BUSY 0, 71.7 commits/s, meta.elapsed_ms p99 621 ms, spread 1.00× ("v0.1.0 — just perf in a quiet window"). 50 processes: not yet measuredM1 (done); a FIFO hand-off on the lock, M6
G2Cheap commitsCommit latency, syncs excluded≤ 5 ms + 0.3 ms per changed fileperf.md, "M0 fsync latency" and "32 agents committing through the binary"; known-limitations, "Full fsync is slow"Without syncs: not yet measured. With full fsync: an uncontended commit 19 ms p50; 256 new objects written and synced on 32 threads in 72.9 ms, against the target's 82 ms ("v0.1.0 — just perf in a quiet window"; the 82 ms in "M1 store level")M2's journal-sync decision, after the pilot
G3Fast readsLookup and snapshot latency< 1 msperf.md, "Index lookups"Index lookups ≤ 6.13 µs; a snapshot and lookup ≤ 152.9 µs p99 at 100,000 changesets; with 256 refs, 1.55 ms p50 and 3.00 ms p99, over the target ("v0.1.0 — just perf in a quiet window")M1 (done); the many-refs case is not scheduled yet
G4Landing under a swarm's loadLands/s, p99 latency, retry rate, lost lands, at 32 and 50 landing processesAt 50 processes: ≥ 20 lands/s, p99 < 500 ms, retries < 5 %, nothing lostknown-limitations, "Landing retries under a burst"; README, "Roadmap"Not yet measured. A probe on a loaded host (known-limitations, same entry) landed every change exactly once, with 22 %, 44 % and 44 % of lands retried at 8, 16 and 32 processesM4's landing measurements and landing model, after the pilot
G5DurabilityAcknowledged commits lost after a crash or a power loss0, with full fsync as the only modeREADME, "Why SwarmOps"; CONTRIBUTING, "The rules"Crash sweeps, injected I/O errors and modelled power-loss images pass through the real binary; a literal SIGKILL on a real device is not tested yet (known-limitations, "Durability"). The fsync cost that keeps the default: p99 5.41 ms per durable write ("M0 fsync latency")M1, M1.5 (done); M6
G6An agent contractStable E_* codes, exit codes and schema; MCPCodes, exit codes, the envelope and the schema change only as the versioning policy allows; every code pinned by a golden envelopedocs/policies/versioning-and-stability.md; known-limitations, "Golden envelopes cover 27 of the 37 error codes"37 codes, 27 pinned by golden envelopes; JSON Schema for 91 types (architecture.md, "The contract"); MCP server since M1.5M1, M1.5 (done); the remaining ten codes are not scheduled yet
G7A faithful git round tripCommits missing or rewritten after import, land and export; lossy classesNone missing, rewritten 0, git fsck --strict passes; each of the six lossy classes refused unless --lossy names itREADME, "Bring a git repository in" and "Send the work back to git"; docs/pilot.md, "Success criteria" 1 and 4Fixtures pass with three git versions every week (CONTRIBUTING, "Continuous integration"); real repositories: not yet measured (known-limitations, "No test reads a real repository yet")M3, M8 (done); the pilot
G8PortabilityPlatforms built, tested and releasedmacOS and Windows beside LinuxREADME, "Roadmap"; docs/policies/msrv-and-platforms.mdx86_64 Linux tested; aarch64 Linux smoke-tested under QEMUM12
G9WorkspacesAn agent builds and tests a change on disk before it lands itSparse workspaces, with an adapter for Claude Code's worktree hooksREADME, "Roadmap"Not builtM5
G10Integrity toolsRepair, cleanup and detectionfsck and repair, gc, unsupported-filesystem detection, bounded reads, the next store FORMATREADME, "Roadmap"; known-limitations, "Verification and repair"Not built; verify --deep checked 128,306 objects in 1,758 ms ("v0.1.0 — just perf in a quiet window")M6
G11ReviewChange requests and a landing gateBlame, change requests, their classification, approvals and a landing gateREADME, "Roadmap" and "SwarmOps and git"Not builtM7
G12Simulation and a benchmark gateRegressions caught before they landThe store under a deterministic simulator and random kills; just bench fails on a regression over 20 %README, "Roadmap"; perf.md (its first paragraph)No gate yet (known-limitations, "No benchmark gate")M9
G13Several hosts, offline-first (topology 3: local SwarmOps, remote SwarmOps)Sync between hosts without an always-on serverA full store on every host; so clone so://…, fetch, push, sync and sync status against one upstream, over ssh; every confirmed land upstream exactly onceREADME, "Roadmap"; docs/roadmap.md, "Topology 3"Today through a git remote, one writing host at a time (M8)M11
G14Safetyunsafe, fuzzing, supply chainNo unsafe code; four fuzz targets; cargo deny over every lockfile; workflows pinned and checkedCONTRIBUTING, "The rules"; SECURITY.mdHolds in every just check and in the weekly scheduled runEvery milestone
G15Works together with GitHubThe three topologies' acceptance criteria (G16, G17, G13)All pass in CI with git 2.39.5, 2.43.0 and 2.56.0, and topology 2's in an opt-in run against GitHubdocs/roadmap.md, "Goal"Not yet measured: no topology is served natively; topology 2 runs through a hand-moved bare clone (docs/roadmap.md, "Where we are")M13, M14, M11
G16Topology 1: local git, remote SwarmOpsStock git's clone, fetch, pull and push against swarmops serve; ids after a round trip; a no-op fetch's costEvery listed git command passes over ssh and HTTP; the same id at every ref and git fsck --strict clean; a no-op fetch and a clone at most 2× git's own serverdocs/roadmap.md, "Topology 1"Not yet measured; not builtM14
G17Topology 2: local SwarmOps, remote GitHubso clone, fetch, push and sync against a git remote; commits rewritten; CI on GitHub; cost of one new commitrewritten 0 over any number of round trips; GitHub's push workflow runs unchanged; one commit's fetch or push at most 1.5× as costly on 12,000 commits as on 1,000docs/roadmap.md, "Topology 2"Not yet measured; not builtM13

Non-goals#

  • A general-purpose git replacement. Parity with git is not a v1 goal: no user hooks, signing, submodules or LFS.
  • A cluster. SwarmOps is one program with no daemon and no external database. It does not scale horizontally, and an always-on RPC server is a follow-up after v1, not a milestone. The planned swarmops serve (M14, M11) runs per connection, under ssh or as a CGI program, so it adds no daemon.
  • Writes without a lock. Object writes take no lock; metadata writes take one, which orders every commit and ref move.
  • Speed bought with durability. No fast mode exists unless a measurement in docs/perf.md justifies it.
  • A benchmark against git worktrees. It is not on the roadmap; the README's comparison with git is judged from the design and the code.

Engineering principles#

  • Rust, with no unsafe. unsafe is forbidden in every crate of the workspace.
  • Full fsync by default. A commit returns only once its journal frame is on disk.
  • Serde types at the store's edge. Store-facing types carry no filesystem paths, so every operation can later run behind an RPC boundary.
  • A fixed hash contract. Byte layouts and the hash recipe never change in place; a new layout gets a new kind or version header.
  • Every claim measured. A performance statement cites docs/perf.md, with the host, its load and the date.
  • Built from its own specification. New work follows the clean-room policy: design material from third parties reaches the code only as functional requirements in SwarmOps' own words.

How goals change#

A goal's target changes only with a measurement recorded in docs/perf.md that justifies the change, and a line in CHANGELOG.md that says what changed and why. A goal is added or dropped the same way, with the reason in the changelog. A measured value in the table is replaced when a newer run in docs/perf.md supersedes it.

Edit on GitHub

On this page