Harness control layer

The harnesses, and how we actually drive them.

Elf's Agent Fabric is the managed layer that hands work to agent harnesses and keeps a verifiable record of what ran. This page names the mechanism behind every lane rather than printing a checkmark — including the lanes that are partial, unwired, or absent.

Every figure on this page was verified against a live system on 1 August 2026.

The roster

Four lanes, and one absence

OH-MY-PI

OMP

The native dispatch lane.

Driven through Fabric dispatch with a native adapter. This is the only harness Fabric dispatch itself accepts today.

Live · staging

OPENAI

Codex

The headless execution lane.

Driven headlessly through codex-dispatch, native Codex CLI execution. A real path, and a separate one — it does not transit Fabric.

Live · separate path

ANTHROPIC

Claude Code

The interactive lane.

Driven by injecting into a live tmux session, not by headless execution. Model calls on this lane do not transit the gateway.

Live · not headless

SST (OPEN SOURCE)

OpenCode

Adapter written, not yet connected.

A FabricPort adapter over the OpenCode server HTTP API is published at v0.1.2. Nothing imports it yet, so it drives no work today.

Built · not wired

GOOGLE

Gemini CLI

Not supported.

Listed because its absence is a fact worth stating: it appears in no harness config and on no live route.

Not supported

Side by side

Capability matrix

What each lane actually does, read out of the running configuration rather than a roadmap. A “no” here is a real no.

CapabilityOMPCodexClaude CodeOpenCode
Fabric dispatchyes (native adapter)no — codex-dispatchno — pty injectionadapter built, unwired
Headless executionyesyes (native exec)novia HTTP API
Gateway-governed model callsyesyesno — bypasses gatewayn/a
Signed dispatch receiptyesnonon/a
Grove worktree isolationyesyesyesyes
Hush secret resolutionyesyesyesyes
Runs in productionno — staging onlyn/a (local)n/a (local)no

The gateway

One governed path to the models

134models served
169deployments
7live providers

Counted from a live authenticated request to the gateway on 1 August 2026, not from a catalogue file. One lane is a deliberate exception: Claude Code calls do not transit the gateway, so they are not covered by these figures.

The differentiator

A dispatch that cannot quietly lie

Requested vs effective

A receipt binds what was asked for — harness, model, account — to what actually served the request. Drift is visible instead of silent.

Proof chain

A ten-token proof chain over the adapter protocol, plus a SHA-256 binding to the run transcript.

Refuses on mismatch

If the chain does not verify, the dispatch fails loud with a typed error. It does not fall back and it does not proceed.

Underneath

What every lane sits on

Hush

Stage-split secrets. No plaintext secret at rest, in any repo, at any stage.

Grove

Every agent works in an isolated git worktree. Canonical checkouts stay golden.

Self-hosted forge + registry

Forgejo at git.ch5.me and a private Verdaccio registry at npm.ch5.me.

Model gateway

A single LiteLLM gateway fronting every governed model call, across 7 live providers.

On the roadmap

Named, not implied

Soon

Production enablement

The Fabric dispatch workflow is currently disabled in the production config. Staging only.

Soon

Cross-box orchestration

Today the control plane is single-box. Hub, gateway and auth all sit on one host.

Soon

Session teleport

Moving a live session between hosts currently returns an unavailable-adapter error.

Soon

Broader harness coverage

The OpenCode adapter needs a consumer. Fabric dispatch accepts one harness today.

What this page does not claim

The other half of an honest spec sheet

  • That it runs in production — the production workflow flag is off.
  • That it is proven at scale — the receipt corpus is 4 records over about 34 hours.
  • That it orchestrates a fleet — the control plane is single-box.
  • That it is harness-agnostic — Fabric dispatch accepts exactly one harness.
  • That every model call is governed — the Claude Code lane bypasses the gateway.
  • Any uptime, SLA, cost-saved, or total-agents-dispatched figure. We cannot produce them.

This is the layer underneath Elf.

The control layer is infrastructure — worth reading if you care how the work actually gets done. Elf is the part you use: chat, browse, read docs, and keep your thread.

Go to elf.dance