Skip to content
SB.NGNZ
001 / DATA · 2026

ARGOS

An append-only log of a life, that any agent can plug into.

FIG. 1 / DATA
MAILMESSAGESCALENDARSENSORSONE WRITERCONTRACT AT THE EDGEAPPEND-ONLY EVENT LOGOBSERVERCURSOR AT 210DERIVED TIERCURSOR AT 610REBUILT READERCATCHING UP FROM 410ANY NEW AGENTATTACHES ANYWHEREONE WRITER. MANY READERS. NOBODY WAITS FOR ANYBODY.EACH CONSUMER KEEPS ITS OWN POSITION01020304
One writer, many readers. Every consumer keeps its own position in the log, so a new agent attaches wherever it wants and a broken one catches up on its own.

01 / BRIEF

The observation layer behind the fleet. Mail, messages, calendar, weather, phone and a wearable all land in one append-only event log, and everything downstream reads from there.

Most assistants are built the other way around: each integration owns its own copy of the world, so every new agent means another sync, another credential, another thing to break. Argos inverts it. There is one log, and plugging a new agent into a life is a matter of pointing it at a cursor.

Seventeen small services, around twenty-six thousand lines of TypeScript. None of them is interesting alone. What is interesting is the contract between them.

02 / HOW IT WORKS

One writer. Every source goes through a single writer that validates the shape of an event by its kind before it enters the log. One writer means the log can never disagree with itself, and a contract at the edge means a bad event is rejected where it is cheap to reject.

Append-only. Nothing is updated and nothing is deleted. What happened stays exactly as it was recorded, which turns the log into a history rather than a snapshot. Derived state is not stored anywhere sacred: it is computed from the log, so it can be thrown away and rebuilt whenever the way we interpret events changes.

One cursor per consumer. Every reader keeps its own position. This is the whole design in one sentence, and it buys three things: a consumer that was broken for three days catches up on its own, a new consumer can read history that predates it, and no reader can slow another one down. Plugging a new agent in is not an integration project, it is a cursor.

Tiers, not a pipeline. Observers write raw events. Derived tiers read them and write their own conclusions back into the same log, as events. So the reasoning is auditable too: not only what arrived, but what the system made of it and when.

Polling over push, deliberately. Push was faster and depended on infrastructure that was going away. Polling cost about ten minutes of latency and bought total independence. When that infrastructure was finally destroyed, the log did not notice.

03 / DECISIONS

One writer, many readers. The most valuable property in the system, and the cheapest to give up by accident. Two writers means two truths.

A log, not a queue. A queue forgets what it delivered. A log lets you ask a question tomorrow about data that arrived today, with code that did not exist yet when it arrived.

Validate at the edge, by kind. Cheap where the event enters, impossible once it is downstream of four consumers.

Own the eyes. The layer that sees your life should not live on infrastructure you do not control. Argos was moved off a dying platform service by service, with the event count and the checksum verified on both ends, and kept running the whole time.

04 / STATUS

Running on the machine in the corner of the room, feeding the fleet.