Two rows of the harness changelog, typing themselves out character by character. The first is a fact of the record; the second is why this page exists at all.
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
This harness improves itself. A human said no anyway.
Swayambhu — स्वयम्भू, self-born — is a fleetsmith harness watching its own runs, evaluating them deterministically, and proposing its own improvements. The loops turns itself. But nothing it proposes becomes real until it passes the one element it can never generate: a witness.
The second row above is that witness working. The rejected proposal was
plausible and well-evidenced — and the reviewer turned it back, recording the
reason verbatim in decisions.jsonl. Most systems would have merged it. This
one shows the no.
A self-born system, witnessed. The model proposes; deterministic checks dispose; the witness decides.
Sit in the reviewer’s seat · Open the Forge
An autonomous system that uses code, execution traces, and evaluation feedback to modify and optimize its own operating environment.
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
one model call. deterministic gates. git revert.
Every agentic CLI grew its own harness format. The concepts are isomorphic —
an agent has a role, a goal, capabilities, a handoff to the next agent. The
formats are not: a .claude/agents/*.md, an .opencode/agents/*.md, a
.goose/recipes/*.yaml each say the same thing a different way.
So you write the same specialist three times. And because nothing links them, they drift: you sharpen the prompt in Claude Code and forget opencode, you fix a handoff in goose and the others rot. The formats are not the problem — the hand-porting is.
Swayambhu treats that shared shape as what it is: a compile target.
One spec — fleet.yaml — declares the agents, their capabilities, their
skills, their handoff contracts once. The compiler emits the
.claude/, .opencode/, and .goose/ harnesses from that single source.
Capabilities, not tool names. Contracts, not vibes. The formats are derived;
the spec is the truth.
This is not a simulation of the compiler. It is the compiler — the same
buildAll() that ships in the fleetsmith package, bundled into your browser
and recompiling every spec you type against it. No backend, no video, no mock.
The Forge ● live · fleetsmith@0.5.0 · c1767e1
This is not a simulation of the compiler. It is the compiler —
the same buildAll() that ships in the npm package, bundled into
your browser. Edit the spec on the left; three harnesses recompile on the right.
editing the spec recompiles here…
The Forge compiles and validates. It does not run agents, call models, or
execute the eval fleets' --exec path. Gates must be
reproducible without a model; so is this page.
Edit the spec on the left. Three harness tabs update on the right. The validator and linter object in their real formats — the same bytes the node CLI produces.
Three guided edits, so you never have to be fluent in the YAML to feel the guardrails bite:
- Make it parallel —
pattern: pipeline → fanout; the orchestrator reshapes across all three targets. - Give the verifier a pen — the real guard objects: an editing agent that runs in parallel with another editor will overwrite work, so the compiler refuses with its real message.
- Break a handoff contract — drop the artifact contract and the build flags that receivers get no durable context.
Capabilities land on one axis the formats all share; contracts keep the handoffs honest. Where a target can check something deterministically, fleetsmith emits the check, not an instruction.
Where a target can check something deterministically, fleetsmith emits the check, not the instruction. Each handoff produces a gate script — a deterministic test that the declared artifact actually reached the next agent.
And the gate does not just run; it records its verdict. When a run finished without a handoff file, the gate blocked the crossing and logged the reason. Nobody had to write a telemetry line for this — the gate already knew, it was just throwing the verdict away.
gate_block domain-analyst no handoff file gate_block domain-analyst no handoff file gate_block domain-analyst no handoff file feedback fleet-architect skill: brief was too vague gate_block domain-analyst no handoff file gate_block fleet-architect no handoff file feedback skill-smith skill: methodology felt generic on the first pass▶ recorded run · machine-captured
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
The telemetry events were read from _fleet/local/, which
per the two-tier workspace design is gitignored: they are real run output
captured from the working tree, not commit-pinned like the rest.
gate_block domain-analyst "no handoff file" — repeated run after run, for
one laptop and for the fleet alike. That event, filtered and summed, is the
fuel for the whole self-improvement loop you reach in Act III.
Run a fleetsmith fleet and the run records itself. Five event kinds —
run_start, invoke_agent, gate_block, feedback, run_end — stream into
events.jsonl as the loop turns. No instrumentation pass, no dashboards, no
“add telemetry” ticket. The gate verdicts that were already being computed are
now written instead of discarded.
gate_block domain-analyst no handoff file gate_block domain-analyst no handoff file gate_block domain-analyst no handoff file feedback fleet-architect skill: brief was too vague gate_block domain-analyst no handoff file gate_block fleet-architect no handoff file feedback skill-smith skill: methodology felt generic on the first pass▶ recorded run · machine-captured
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
The telemetry events were read from _fleet/local/, which
per the two-tier workspace design is gitignored: they are real run output
captured from the working tree, not commit-pinned like the rest.
Every line here was produced by a real run — machine-captured working-tree output, not a fixture. The blocks are the raw signal: domain-analyst blocked at the handoff over and over, a skill-smith feedback that the methodology “felt generic”. These are the observations Act III’s proposer reasons over.
Aggregated telemetry becomes a health table: per-agent utility, failure risk, and a per-actor breakdown. One insight the table has to earn: in an aggregate, “fails for everyone” and “fails for one laptop” look identical — and mean opposite things.
| agent | utility | failureRisk | blocks | passes |
|---|---|---|---|---|
domain-analyst | 0 | 1 | 4 | 0 |
fleet-architect | 0 | 1 | 1 | 0 |
skill-smith | 1 | 0 | 0 | |
harness-qa | 0 | 0 | 0 |
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
The telemetry events were read from _fleet/local/, which
per the two-tier workspace design is gitignored: they are real run output
captured from the working tree, not commit-pinned like the rest.
Here the breakdown is explicit. domain-analyst shows failureRisk: 1 with
every block being the same no handoff file gate — but the per-actor rows
show one actor hit it exactly once while three hits came from a single
developer’s laptop. The aggregate hides the distribution; the actors column
exposes it. That distinction — fleet-wide failure versus one-machine noise —
is exactly what decides whether a proposed fix is worth anything.
Self-improvement is only honest if its signal is real. So the eval stage asks: is a measured delta above the noise floor, or is it a coin flip?
The recorded floor for this fleet’s eval suite is deterministic — floor: 0,
“deterministic across two runs; any non-zero delta is real”. The rule that
follows is structural: a delta below the measured floor is reported as
“no signal”, never as a win. The gate has a floor, and below it nothing is
promoted.
floor: 0 Deterministic across two runs; any non-zero delta is real.▶ recorded replay · commit c1767e1
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
This is the discipline that keeps Stage 1 → Stage 2 progression from being a self-congratulation loop. The engine cannot score its own improvement above the noise it has measured. If a change can’t beat the floor, it cannot cross the bridge — no matter how confident the proposer sounds.
The loop has five stages — OBSERVE → EVALUATE → MUTATE → VALIDATE → PROMOTE — and across all of them there is exactly one model call.
- OBSERVE
- EVALUATE
- MUTATE
- VALIDATE
- PROMOTE
Every stage is a solid deterministic block — except one: the proposer. This is the only cell you can't replay.
Everything else is deterministic: telemetry, health, validation, the eval suite, patching, the merge. The model is the proposer — it reads rich feedback (validator errors, QA findings, failing eval cases) and proposes a single typed change. The model proposes; deterministic checks dispose.
That asymmetry is the whole architecture. A nondeterministic model proposes; deterministic gates evaluate the proposal, compile it, run it against the held-out corpus, and either let it cross or delete the branch. The one thing the model cannot do is decide whether its own proposal survives.
There is exactly one model call in the whole system — everything else is deterministic. This is the only cell you can’t replay.
The system’s first-ever evolution cycle produced three proposals. Two were
accepted and tagged — fleet-gen/1, fleet-gen/2. The third was rejected,
the reason recorded verbatim in the decision log. The reviewer’s seat is where
you make that call yourself, before you see what actually happened.
The Reviewer's Seat
The system's first evolution cycle produced three proposals. Two crossed. One was rejected — this is the one the site wants you to judge, before you see what the witness actually decided.
Context — what the loop observed
gate_block domain-analyst no handoff file gate_block domain-analyst no handoff file gate_block domain-analyst no handoff file feedback fleet-architect skill: brief was too vague gate_block domain-analyst no handoff file gate_block fleet-architect no handoff file feedback skill-smith skill: methodology felt generic on the first pass▶ recorded run · machine-captured
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
The telemetry events were read from _fleet/local/, which
per the two-tier workspace design is gitignored: they are real run output
captured from the working tree, not commit-pinned like the rest.
The proposal
The proposal body was deleted with its branch at the source — only the branch name, the op type, and the reviewer's recorded reason survive. The site does not reconstruct the two bullets or the confidence score the planning docs describe: that would be inventing evidence. You judge on the record that remains.
▶ recorded replay · commit c1767e1
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
The recorded verdict
pb-2 invents a drift-inventory responsibility that duplicates 'fleetsmith qa --built', encoding in agent prose what a deterministic command already checks. pb-1 alone was sound; resubmit without the inventory step.
A learned note that restates what a deterministic command already checks isn't knowledge — it's noise with authority.
▶ recorded replay · commit c1767e1
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
The crossings — fleet-gen/1, fleet-gen/2
The two proposals the witness accepted make the crossing.
fleet-evolve/evolve-1785851610258-fleet-architect-playbook → fleet-gen/1
# Proposal — learned note for "fleet-architect" - Branch: `fleet-evolve/evolve-1785851610258-fleet-architect-playbook` - Applied: added pb-fleet-architect-1; added pb-fleet-architect-2 This adds an **advisory** note to the agent's playbook. It does not modify the agent definition, which is human-authored and protected. ## Rationale (as given by the proposer) - **add-playbook-bullet** — The only failing check is drift between the spec and the compiled agent/recipe files across all three targets, which is exactly the gap between editing fleet.yaml and rebuilding. Since the definition is protected, an advisory bullet is the only lever. (confidence: 0.8) - **add-playbook-bullet** — A gate_block event with reason 'no handoff file' is the sole observed block for this actor; the bullet names the exact artifact the contract already declares, without changing the contract. (confidence: 0.75) ## Evidence - drift vs built output: .claude/agents/fleet-architect.md:1: differs from the spec (hand-edited, or the build is stale) - drift vs built output: .opencode/agents/skill-smith.md:1: differs from the spec (hand-edited, or the build is stale) - drift vs built output: .goose/recipes/fleet-architect.yaml:1: differs from the spec (hand-edited, or the build is stale) - gate_block: no handoff file - health.observed.blocks: 1, passes: 0 ## Review Learned notes are references, not rules, and accumulated memory measurably degrades alignment — so this is not auto-applied. Merge or delete the branch.
Added two bullets to _fleet/shared/playbooks/fleet-architect.md — the Bifröst crossing.
fleet-evolve/evolve-1785851610258-skill-smith-playbook → fleet-gen/2
# Proposal — learned note for "skill-smith" - Branch: `fleet-evolve/evolve-1785851610258-skill-smith-playbook` - Applied: added pb-skill-smith-1; added pb-skill-smith-2 This adds an **advisory** note to the agent's playbook. It does not modify the agent definition, which is human-authored and protected. ## Rationale (as given by the proposer) - **add-playbook-bullet** — The single observed feedback event says the methodology 'felt generic on the first pass'. The agent's own goal demands methodology 'researched from the codebase', so the missing behavior is a hard grounding requirement — cite real artifacts — which is exactly what an advisory bullet can enforce without touching the protected definition. (confidence: 0.72) - **add-playbook-bullet** — The failing 'drift vs built output' check flags skill-smith.md differing from the spec across all three targets. skill-smith has edit+run capability and writes inside fleet.yaml, so the reusable lesson is to edit the source of truth and rebuild rather than touch compiled artifacts. (confidence: 0.55) ## Evidence - feedback: skill: methodology felt generic on the first pass - goal: Every skill carries real methodology researched from the codebase and domain standards, not vibes. - drift vs built output: .claude/agents/skill-smith.md:1: differs from the spec (hand-edited, or the build is stale) - drift vs built output: .opencode/agents/skill-smith.md:1 and .goose/recipes/skill-smith.yaml:1 differ from the spec - role: ... inside fleet.yaml ## Review Learned notes are references, not rules, and accumulated memory measurably degrades alignment — so this is not auto-applied. Merge or delete the branch.
Added two bullets to _fleet/shared/playbooks/skill-smith.md — the Bifröst crossing.
The changelog lands
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
The proposal the human rejected was a learned note for domain-analyst —
plausible, well-evidenced. Watch the choices most people make versus the stamp
that was actually recorded. The recorded reason is one sentence, verbatim:
Everything marked ▶ is the verbatim recorded output of a real fleetsmith
session. Tracked artifacts (proposals, the decision log, the changelog) are
pinned to commit c1767e1 of the
fleetsmith repository.
Nothing model-derived was re-run for this website, because the one step that
involves a model is the one step that doesn't replay deterministically —
which is precisely the product's point.
…a learned note that restates what a deterministic command already checks isn’t knowledge — it’s noise with authority.
That inverts the usual demo. Any system can show a green checkmark. Only a real system with a real witness can show a no. And this page does not ask you to trust that the gate works — it hands you the exact decision the gate made and lets you disagree with it.
An optimizer with write access to its own scorecard edits the scorecard.
That is not a warning; it is the founding lesson of self-modifying systems. The Darwin Gödel Machine, scored by a function counting marker tokens, “improved” its score by deleting the markers. The reward function was inside the sandbox it was optimizing.
So the wall is structural, not advisory. The validation, the QA battery, the
eval corpus, the tests — and every human-authored agent and skill — are
off-limits, enforced in-process by protected.js and again out-of-process
by CI, because a control inside the agent’s runtime is reachable by inputs that
influence the agent.
The protected-path manifest renders in Scene 9 from _fleet/shared/evolution/protected.json.
The loop may only modify what evolution itself generated: advisory playbook
bullets, on a reviewable branch. Everything that changes meaning waits for a
human crossing. git revert fleet-gen/N is the rollback. The archive — git —
never lies, because the loop cannot reach the parts of itself that keep it
honest.
Every defensible claim on this site was paid for the usual way: something broke first. The confession timeline is the record of that — the dogfood failures, each one found by running the loop on its own fleet.
- The loop that was unreachable on every fleet. Health had a flaw that silently disabled evolution entirely before the first cycle could run.
- The health report that reported no signal where the loop had, in fact, never been given the data to move.
- Proposals that weren’t independent. The first-generation proposals leaned on a shared observation; independence had to be explicitly tested.
- A drift check that went red on the fleet’s own accepted work — the compiler rebuilt files the loop had legitimately changed, so drift had to be measured against the rebuilt tree.
- A judge that disagreed with itself. The advisory evaluation tool could not be trusted to gate, and is now explicitly outside the promotion gate.
- A permission rule that was well-formed and inert — correct on paper, doing nothing in practice until a run proved it.
The honest wording matters: none of these were bugs hidden until users hit them. They surfaced because the tool runs on itself, continuously, and surfaces its own failures in the record.
Every one of these was found by running the thing on itself. That’s the product.
A harness that improves itself, under a witness. Start here — real commands, no wizardry:
npm install -g fleetsmith
fleetsmith init review-bot --pattern generate-verify --domain "PR review"
fleetsmith validate review-bot/fleet.yaml
fleetsmith build review-bot/fleet.yaml --target all
- GitHub:
subhransusekhar/fleetsmith - Read the mechanics:
docs/evolution.md - See what it refuses to do: What it will not do
The one-sentence takeaway you can carry out the door:
Swayambhu is a system that modifies its own operating environment — with one model call in the whole loop, deterministic gates on everything else, and a human witness whose stamp is the only door to merge. Self-born. Witnessed. The model proposes; the checks dispose; the witness decides.
The Chamber ● live · fleetsmith@0.5.0 · c1767e1
Try to make it eat itself. The real mutation engine — the
same applyOps that ships in the package — pointed at a sample
spec. Every refusal below is the real engine's real error text. Attack it.
free-form ops editor
Craft any op the schema allows. The engine disposes of it — or, if you find a hole, the site has produced a security report. The editor is fenced from network and storage.
* These are the in-process guards; the out-of-process half lives in CI, where a browser can't take you. The redundancy is deliberate: any control inside the agent's runtime is reachable by inputs that influence the agent.
The Living Memory ● live · fleetsmith@0.5.0 · c1767e1
The real ACE playbook machinery. Type a lesson; retype it nearly verbatim and watch it MERGE — the counter ticks up instead of a duplicate appearing. Paraphrase does not merge here, and the panel below says exactly why.
Feed a lesson
Try: add the same lesson twice → it merges. Add a paraphrase → it accumulates. Add 21 distinct lessons → eviction by ratio.
Playbook 0/20
The honest limit
Paraphrase does not merge here. Measured against real
phrasings, a paraphrase ("cite file paths as evidence" / "a brief citing
no paths was not researched") scores ~0.67, while two
genuinely different lessons sharing a template ("Watch X closely
whenever this agent runs") score ~0.75. The paraphrase
scores lower than the false pair — so no threshold separates
them, and none is claimed to.
| pair | similarity | merges? |
|---|---|---|
| verbatim restatement | ≥ 0.8 | yes |
| paraphrase | ~0.67 | no |
| templated-distinct | ~0.75 | no |
Accumulated memory measurably degrades alignment — which is why these are references, not rules, and why the budget is a budget. Recognising paraphrase needs semantics, which belongs to the memory backend, not a deterministic text merger.
How to use 10 steps · Enter to advance
A keyboard-driven terminal. Each step is a real command from the README, mapped 1:1 — the site and repo never teach different sequences. No free-form execution; this is a teaching deck in terminal clothing.
Source: README.md · How to use section. Cross-checked by test/guided-terminal.test.js.
The Observatory
The loop, performed. Drag the playhead to replay the cycle event-by-event. ←/→ steps; space plays/pauses. The MUTATE stage is the only non-deterministic glyph — the one model call.
— drag or press → to begin —