Null Operator
The studio's own dispatch harness — narrow jobs, worker models, a test-and-typecheck gate, and a human decision.
- 3 (OpenCode, Codex, Hermes over SSH)
- RUN-2026-0001
Problem
A studio built on agents needs a way to hand out small, well-specified jobs — implement this pure function, make this test pass, validate this script — without a person babysitting every one, and without trusting any single model's claim that it finished. Self-reported "done" is not evidence. The studio needed a contract that makes a job's completion verifiable independent of who or what did the work.
System
The lead agent writes a failing test first, then decomposes the job and dispatches it to an interchangeable worker backend. Today there are three: OpenCode running GLM 5.3 Flash, Codex running GPT-5.6 Sol/Luna, and a Hermes agent (Nous Research runtime) reached over SSH. Every worker receives the same working agreement — AGENTS.md — as its operating instructions: touch only the files named in the job, do not edit the test, run strict TypeScript, no unrelated refactors.
lead writes failing test → decompose job → dispatch to worker backend → worker implements → gate (typecheck + named test) → accept or reject
The gate, not the worker, decides. A job passes only if npm run typecheck and the specific named test both succeed after the change; a worker's own final message ("GATE: pass") is a claim, not a result, and is checked against the actual command output. Every run is captured as a run record (RUN-YYYY-NNNN) that logs roles, tools, artifacts, critiques and human decisions — the same schema used for this run, RUN-2026-0001.
In this run, three jobs were dispatched: two to OpenCode running GLM 5.3 Flash (src/lib/ids.ts and src/lib/rss.ts, one file each) and one to Codex running GPT-5.6 Sol (src/lib/registry.ts and scripts/validate-registry.ts). All three gates passed on the first attempt. Cost and duration are not reported here because they live in dispatch logs that are not committed; the run record states only what was dispatched and whether the gate passed.
Human gates
- Publication approval
- Repository transfers
- Deployment and DNS
- External commitments
Roles (Operator, Builder, Critic, Archivist, Publisher) are computational scopes, not people. A human retains strategic direction, publication approval, and any consequential external action; nothing in this pattern deploys, merges to main, or transfers a repository on its own.
Provenance
Null Operator is a generalization of a dispatch harness first built inside a personal project and of earlier fleet runs that produced teaching decks. The contract, the gate, and the run records are original to Null Design; the worker runtimes underneath are third-party.
Status and next
Active. Classified as active private infrastructure whose pattern is public. The pattern lives, generalised, inside the site repository nulldesign/null.design (agents/dispatch.sh, AGENTS.md, registry/runs), created on 2026-09-01. Recommendation on file: split the harness into its own repository once it stabilises.
Facts
| Label | Value |
|---|---|
| worker backends | 3 (OpenCode, Codex, Hermes over SSH) |
| first recorded run | RUN-2026-0001 |