Rabbit Holing
In this style 10/6
Five months, four architectures, one deletion. How “give agents knowledge” became “train a model from scratch”, one honest failure at a time.
Each step below was the reasonable next question. Each one was answered by measurement, and the answer pointed somewhere else.
The steps
| When | Step | What was built | What the measurement said |
|---|---|---|---|
| 2026-02 | Knowledge for agents | Agent Zone: infrastructure knowledge as HTML for people and JSON for agents, plus an MCP server. 190+ articles in two days. | Agents can read. They still need somewhere to act. |
| 2026-04 | An organisation of agents | Dream Team design: roles from a software company as Kubernetes pods. Original plan named Temporal and a distributed SQL store. | Neither landed in this era. The fleet shipped on a chat-and-webhook substrate instead. |
| 2026-04-28 | A runtime substrate | agent-runtime: sidecar + main. Heartbeats, Mattermost webhooks as the wake signal, a cheap-model wake filter, a daily dollar budget. | Waking on chat is a firehose. Most wakes were filtered after the fact and still cost money. |
| 2026-05-06 | From orchestrated to emergent | Agent Hub design: agents always running, self-organising over Mattermost, “a terrarium”. | Surprising is not the same as productive. The builder-tier A/B reports of mid-May measured cost per landed change instead. |
| 2026-05-10 | A harness POC | agent-harness: a provider-agnostic LLM interface and tool loop. | Survived. Became the eval harness for everything after. |
| 2026-05-29 | Move the cluster | a Mac → carlo (k3s). | Hardware chases the workload. First of three moves. |
| 2026-06-10 | Make the bus structural | Mattermost tags → ActiveMQ Artemis destinations: a durable queue per agent for work, topics per group for fan-out. Wake filtering by subscription, not by reading everything. | Right idea. Bolted onto the wrong centre: the org chart was the workflow engine, and it could not say what “done” was. |
| 2026-06-20 | Move the cluster again | carlo → Mac-in-colima for the control plane, monte for serving. | Three nodes, one direct link, a DNS seam. Operable, barely. |
| 2026-07-02 | Greenfield | One Temporal engine at every scale; git the only write path to infrastructure; Kubernetes the substrate contract. Built in phases by handed-off worker sessions, each gated by an oversight session I ran. | Soak on the old system: 0 of 10 real items merged. |
| 2026-07-06 | Cut over, delete | Six pipeline fixes; yield 40% with zero false merges. I signed the go. Old cluster deleted, database archived, Mattermost retired. | The measurement that ended a five-month build took one day. |
| 2026-07-11 | The platform wants a coder | SnapDragon-Coder: fine-tune a large open model on verified Go tasks so the builder tier can run locally. | 64 of 77 on the frozen set, then the quantisation was found to be the quality killer. |
| 2026-07-25 | Park the platform | Training mode: every agent workload to zero, the big card freed. | The interesting problem had moved from “orchestrate the model” to “what is in the model”. shellm, then Marilyn.1 |
What each step left behind
- From Agent Zone: the habit of writing knowledge where a machine can read it. Returns as LiLM.
- From Dream Team: the builder tiers and the reviewer roles. The wake-filter idea returns as escalation: a small model decides whether to call a big one.
- From the bus: the conviction that work must be a durable, acknowledged message with an idempotency key. Temporal is that conviction with a UI.
- From Bifrost: the idea that a model call is routed by workload, with a local tier first and a cloud tier as fallback. It survived the cutover as the LiteLLM gateway; the reasoning is on Local or cloud.
- From the cutover: the rule that a platform is measured by yield on real items, not by how many agents are running. And the rule that the old system stays intact until I sign the one-way door.
- From the three cluster moves: machines were renamed and cards moved between boxes; hardware chases the workload, not the other way round.
Why keep this page
Because the lineage is the point of the site. A reader who only sees Marilyn sees a from-scratch language model with no explanation of why an SRE would build one. The explanation is this table: every layer above the model was tried first, and the measurements kept pointing down.
Sources
Numbers on this page are quoted from the lab's own records. The records are private; each note gives the record's date.
- lab record, 2026-07-06 ↩