v0.8.1 · The AI-native SDLC plays

One spec.
Three agent harnesses.

Describe a fleet of AI agents once — roles, skills, handoff graph — and compile it into native harnesses for Claude Code, opencode and goose. No hand-porting agents between tools.

curl -fsSL https://infinia-harness.adid.dev/install.sh | sh
macOS · Linux · Windows Node ≥ 18, or no Node at all MIT core · AGPL enterprise One runtime dependency

Capabilities, not tool names. Handover as a contract, not a convention.

A compiler for agent teams

Every agentic CLI grew its own harness format. Claude Code has subagents, Agent Skills and teams; opencode has primary/subagent markdown and commands; goose has recipes and sub-recipes. The concepts are isomorphic — a named specialist with a prompt, scoped permissions, a methodology, and a way to pass work on. Infinia Harness treats that shared shape as a compile target.

fleet.yaml ──► fleetsmith ──┬──► .claude/agents/*.md + .claude/skills/*/SKILL.md + CLAUDE.md
                            ├──► .opencode/agents/*.md + commands/ + skills/ + AGENTS.md
                            ├──► .goose/recipes/*.yaml (+ AGENTS.md, read first-class by goose)
                            └──► _fleet/ (portable handover protocol: handoffs + ledger)
Claude Code
subagents · Agent Skills · CLAUDE.md
SubagentStop handover gate
opencode
primary + subagents · commands · skills
permission.task handoff graph
goose
recipes + sub-recipes · AGENTS.md
response.json_schema validation
5
fleet patterns, from pipeline to expert-pool
3
compile targets from one source spec
1
model call in the whole self-evolution loop
0
features gated behind the enterprise tier

The parts a hand-written harness keeps getting wrong

Each of these is a defect people hit repeatedly when they wire an agent team by hand. The compiler emits the fix rather than an instruction to remember it.

🧭

Capabilities, not tool names

Agents declare read/edit/run/web/spawn. Each adapter maps that onto its own permission model — a Claude Code tools: allowlist, opencode allow/deny maps, goose extensions. Least privilege survives the port.

🤝

Handover as a contract

Every edge in the fleet carries an artifact plus acceptance criteria. The protocol is file-based — the only channel all three tools share — so behaviour is portable, auditable and resumable. The message is the doorbell; the file is the payload.

🚧

Enforced gates, not advice

Where a target can check something deterministically, the compiler emits the check. A SubagentStop hook blocks an agent until its handoff file is complete; a PreToolUse hook blocks edits to the paths a fleet must not touch; a denied opencode agent disappears from the task tool entirely.

🔁

Loops that stop three ways

Declare loop: { until, max, check } on a phase or a schedule: on the fleet. Each compiles to a bounded loop on every target — ending on success, on no progress, or at the cap, rather than only burning the budget.

📈

A harness that grades itself

qa is a deterministic verification battery; eval measures whether skills actually trigger, against a held-out corpus with a real noise floor; evolve proposes its own improvements on a branch, for review.

🗄️

Prompts built for caching

Agent bodies are invariant for a given spec — no dates, no run counters — so a repeatedly-run fleet keeps its prompt cache instead of rebuilding it. Per-run state lives in handoff files.

The AI-native SDLC, compiled in

A fleet run is a miniature software development lifecycle: a request arrives, gets decomposed, designed, built, verified and shipped through a chain of files. Anthropic's AI-native SDLC playbook names the mechanisms that turn that chain into an audit trail. v0.8 compiles them into every generated harness — five plays, each one replacing an instruction an agent could ignore with something a runtime enforces.

fleet:
  guardrails:
    protectedPaths: [ test/**, fixtures/** ]   # a hook, not a sentence
  ci: github                                   # qa + eval on every config change
📝

An intent file, before any agent runs

The orchestrator writes 00-intent.md in phase zero — problem, outcome, constraints, what is out of scope — and confirms it with whoever asked. Every agent reads it first and is told it outranks the brief. Previously the request lived in one agent's context and reached the rest as a paraphrase.

🛡️

Protected paths, actually blocked

guardrails.protectedPaths compiles to a Claude Code PreToolUse hook that blocks the edit, explains why and records it, and to permission.edit denies on opencode. A fleet's own gate scripts are protected whether you list them or not.

✅

Show the output, not the claim

An agent accountable to a phase's check now runs it and pastes the literal output under ## Verification — and the handover gate refuses to let it stop without one. The producer tests its own work before the verifier ever sees it.

🔎

Review in named passes

Verifiers run defects, compliance-with-the-intent and policy as three tagged passes, rank Important over Nit with a cap on nits, and skip anything a deterministic check already enforces. A finding made twice is labelled a harness defect, so the fix lands in the skill rather than only in the artifact.

⚙️

Config-regression CI

ci: github emits a workflow that runs qa --built . and eval --stage 2 whenever the spec, the compiled harness or the shared tier changes. Both commands are deterministic, so it needs no API key and costs nothing but CI minutes.

🧾

The run becomes the record

Intent, handoff chain and final verdict are one reviewable trail: who asked for what, what each agent produced, what the checks said, and who accepted it. Blocked edits and gate verdicts are logged alongside as run telemetry.

Nothing to migrate

Both new spec keys default to absent, and an existing fleet.yaml keeps compiling unchanged apart from gaining the intent template and the intent read step. The playbook mapping, including what was deliberately left out and why, is in docs/research/ai-native-sdlc-playbook-2026-09.md.

OSS is complete on its own

The file backend and git are the supported open-source answer, forever. Enterprise adds a shared cortex on top — and every enterprise capability names the core answer it degrades to. Nothing is enterprise-only.

Open source

fleetsmith

MIT · one runtime dependency
  • Compile to Claude Code, opencode and goose
  • Five fleet patterns and the handoff graph
  • File-based handover protocol under _fleet/
  • Enforced handover gate, capability mapping, loop bounds
  • qa, eval and evolve self-improvement
  • Team knowledge shared through git, PR-gated
Quick start
Enterprise

fleetsmith-ee

AGPL-3.0-only · needs a RelataDB cortex
  • See teammates' in-flight work before a commit exists
  • Team-wide semantic recall, mid-task
  • Org knowledge import — meetings, calls, decisions
  • Cross-developer file and task overlap detection
  • Purpose-scoped audit and an approval channel
  • A cortex admin console over the whole grid
How the grid works
Degradation is the design

No configuration means exactly OSS behaviour. An unreachable or unlicensed cortex means one warning, stale-marked grid files, and runs that still complete. Grid state is advisory: it may never gate an agent or alter a QA verdict.

One command, both editions

The installer asks what it needs and defaults safely to everything else. Piped into a shell with no terminal attached, every question takes its default and the run is fully non-interactive — so the same command works in CI.

curl -fsSL https://infinia-harness.adid.dev/install.sh | sh

Installs the OSS edition. Detects Node, picks npm or the standalone binary, writes ~/.fleetsmith/env.sh, and touches nothing outside your home directory.

Install

Run the command above, then load the environment it wrote.

. ~/.fleetsmith/env.sh

Describe your fleet

Pick a pattern from the shape of your work, then edit the generated spec.

fleetsmith init my-fleet --pattern pipeline --domain "what your team does"

Compile it

Validate first — the validator catches design smells, not just schema errors.

fleetsmith validate fleet.yaml
fleetsmith build fleet.yaml --target all

Run it

Restart your agent CLI in the project. The fleet's agents and skills are now native to it — in Claude Code, say "build a harness for this project" and the bundled meta-fleet takes over.

Prefer to read before you run? The installer is plain POSIX shell and is served from this site — read install.sh first, or run it with --dry-run to see every action it would take without taking any.

Build the harness, not the plumbing

Start with the quick start if you want a fleet running in ten minutes, or the architecture if you want to know what it emits and why before you install anything.