Wiki · The Colony & the Method
Agent instant-status contract — READ THIS FIRST (2026-07-14)
[redacted: category] — 1 internal hostname. Nothing else was altered. The document is otherwise exactly as it is written in the repository, and the sha256 below is of the original, so what was ingested stays checkable.How to read this page
Three ways to read this page. Precise is the document itself, exactly as it is written in the repository. Plain and Clear were written for this website to help you meet that document — they are about it. They are not it, and they are not evidence.
Eighty-four pages about the colony. Each agent is an Elixir process holding a generative model and doing inference, attached to a body that logs into a Minecraft world as an ordinary player. Around that sit the broadcast suite that films them and the runbooks that keep the whole thing running. There are typed specifications for each organ of the model, plus the world and genome specs. There are also the adversarial review personas used to attack a proposed change before it ships.
It is for the reader curious how a running system is put together and how it is held to account. The accountability half is the more distinctive. There is a lab protocol governing evidence and attribution, and a claim fence that restricts the vocabulary a claim is allowed to use. There is a public gate log. And there is a standing invitation to reproduce any verdict from the commit and the seed named in its receipt.
Start with the public read, then the lab protocol, then the falsification invitation. If you want the mathematics rather than the operations, go straight to the typed organ specs.
What it is not: a description of a mind, and not all one kind of document. A large part of this corpus is design and planning — specs marked as proposed rather than applied, organs designed but not built, plans that were later superseded — and each page states which it is. A specification is not a running system, and these pages are careful about the difference; the reader should be too. Eight documents were withheld from publication because they describe private infrastructure.
Your browser cannot switch reading levels, so the document itself is shown.
Precise — the source document
This is the document. Rendered from the repository at the commit above, with nothing rewritten for the web. A gate re-renders it on every deploy and fails the build if a single byte differs.
Any Claude/LLM/agent joining a fresh chat in this repo: your first tool call must be to fetch the state, not to grep the repo. Grepping for state (as happened 2026-07-14 post-reboot when a fresh agent searched for "resonance" across viewer/docs to answer "what is my door lifecycle") means the wiring failed you. This doc + the endpoint below fix that permanently.
The ONE call that answers everything
curl -s http://127.0.0.1:8090/api/status
Returns in a single response:
stack— UP / PARTIAL / DOWN (the operator's coarse "are we open")journey_current_step— the exact vector the operator is on RIGHT NOW, with its live-check detail (e.g. "NOT rebooted (measured, not assumed)"), the step's description, and the next 3 predicted stepsdoor_open— every door in the lifecycle circle:open/locked/circle_ok/predictionstudio_ports— every surface's live probe (obs, mediamtx, console, overlays, publisher, colony, colonycam, gaia, relay)gaia_up— Gaia's liveness only (the cheap:8096tcp probe reused frommission())gaia_gate— deliberately NOT a verdict. This route never runs Gaia's lint, so it never claims its result; the field names the gate (node viewer/gaia/verify_gaia.cjs) instead.hud_up/hud_surface/hud_api— the HUD is a native WPF widget, not a webpage: there is no URL that shows it (Ctrl+Shift+H/ tray icon /hud_widget_open.vbs).:8100is a loopback-only JSON API.endpoints— a curated MAP of every actionable endpoint with a one-line purpose (so the agent never has to grep to know what to call)laws— the 7 non-negotiable operating laws inlined, so they can't be lost
Honesty fixes to this route (2026-07-16) — three false claims it used to make
This route is what every fresh agent trusts first, so its own lies are the most expensive kind. Three were found and fixed by measuring it rather than reading it:
gaia_upwas PERMANENTLYfalse,gaia_gatepermanently"unreachable". The route probed Gaia's/api/gaiaenvelope with a 3000ms timeout — but that envelope is a measured ~20s / 611KB computation (every seat route computes it in full before filtering,gaia_server.cjs:150). The call could never complete, so the fields were hard-coded lies by construction, while Gaia served 200s the whole time — and the same payload'sstudio_ports.gaia.upsaidtrue, contradicting itself. Liveness now reusesmission()'s already-computed cheap tcp probe (free). Same defect class as the HUD'sgaia_driftupstream, fixed the same day: never aim a short timeout at Gaia's envelope.gaia_gateclaimed"green"without running the lint — asserting a verdict from the mere fact that JSON parsed. Now reports liveness only and names the gate.hud_urladvertisedhttp://[redacted: internal-hostname]:8100/hud— false twice::8100binds loopback (the name resolves to.196, so it looks reachable and is not — a claimdocs/HUD.mdhad already retired), andGET /hudis a 404 (the native rewrite deleted the page). Replaced withhud_surface+hud_api.
Bonus: removing the doomed 3s Gaia await roughly halved the route's latency (5.75s → 2.77s).
If /api/status is down, the door itself is down — that's a different kind of problem (see
docs/DOOR_LIFECYCLE_SEQUENCES.md §1 boot + §appendix incident). But if the door is up (:8090
answers), /api/status MUST answer.
Answering the operator's common questions from /api/status alone
| Operator asks | Field to read | No grep needed |
|---|---|---|
| "what state is my door lifecycle" | door_open.* (each door's open/locked/circle_ok/prediction) |
✓ |
| "what is Gaia resonance" | door_open.gaia, plus curl :8096/api/gaia for the signals |
✓ |
| "what could I do next" | journey_current_step.predicts_next |
✓ |
| "what do you predict I will do" | same field (the journey plan IS the prediction) | ✓ |
| "what should I have already predicted" | journey_current_step gives the current vector, and every closed door's prediction states what should have already been true |
✓ |
| "what do you see that you did not predict" | diff studio_ports vs the journey's expected state at this step |
✓ |
| "what might I see that was not predictable" | Gaia's drift seat — curl :8096/api/gaia/drift |
✓ |
The rule
No fresh session ever grep-hunts for state. Ever. If you find yourself grepping to answer a
"what is the state of X" question, that means /api/status is either down (report it) or missing a
field (extend the endpoint in viewer/launcher.cjs; don't paper over it with a search). The living
map on /door is the visual counterpart; /api/status is the machine counterpart. Both are
first-class.
For humans opening a new chat
Paste NEW_CHAT_LAUNCH_PROMPT.md as the first message. It directs the fresh agent to hit
/api/status before anything else — including reading CLAUDE.md.
sha256 2b037c97bf8909ab — of the original file, so what was ingested stays checkable.
Plain — written for this website, not the source document
This page sets a rule for any assistant joining the project in a fresh session. The rule is short: ask the running system for its state, rather than hunting through files for it.
One call returns everything at once. Whether the stack is up. Which step the operator is on right now, and the journey plan, which the page treats as the prediction of what he does next. Which doors in the lifecycle are open or locked. Which surfaces are answering. And the operating laws, written out inside the response so they cannot be lost.
The page exists because the rule was broken. After a restart, a fresh assistant searched the files to answer a question the status call already answered. The page treats that as the wiring failing the assistant, not the other way round.
Much of the rest is a correction. The status call had itself been making three false claims. Each was found by measuring the call rather than reading it, and each was replaced by something narrower and true: liveness instead of a verdict, and the name of a check instead of its result.
Plain · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is 2b037c97bf8909ab
Clear — written for this website, not the source document
An operating contract for machine assistants, written after one of them wasted effort. It says that the first thing a fresh session does is fetch the state, not search the repository for it.
The page names a single call that answers everything in one response. It lists what comes back. First, a coarse up, partial or down for the whole stack. Then the exact step the operator is on, with a live check rather than an assumption, its description, and the steps the journey plan predicts next. Then the open or locked condition of every door in the lifecycle, a live probe of every surface, and the liveness of the neighbouring visibility service. Then several fields about a widget, a curated map of every actionable endpoint with a one-line purpose, and the operating laws inlined so they cannot go missing.
One field is called out as deliberately not a verdict. The call never runs that service's own check, so it never reports its result. Instead it names the check a reader can run.
The longest section is a self-correction. Three claims the call used to make were false, and the page says these are the most expensive kind of lie because every fresh assistant trusts this route first. In one case a liveness probe was aimed at an expensive computation with a short timeout, so the answer could never arrive and the field was false by construction, while a neighbouring field in the same response said the opposite. In another, a verdict was asserted from nothing more than the fact that some data parsed. In the third, an address was advertised for a widget that has no such page and does not listen where the name suggested. Each was fixed by narrowing the claim, and removing the doomed wait also roughly halved how long the call takes.
A table then shows how several of the operator's usual questions are answered from that one response alone, with no searching.
The closing rule is blunt. If you find yourself searching for the state of something, either the call is down, which is worth reporting, or it is missing a field, which is worth adding. Neither is a reason to go looking by hand.
Clear · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is 2b037c97bf8909ab