Skip to content
SB.NGNZ
001 / DATA · 2026

ARGOS

Um log append-only de uma vida, no qual qualquer agente se pluga.

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
Um escritor, muitos leitores. Cada consumidor guarda a própria posição no log, então um agente novo se engancha onde quiser e um quebrado se atualiza sozinho.

01 / O QUE É

A camada de observação por trás da frota. Email, mensagens, agenda, clima, telefone e um wearable chegam todos a um único log de eventos append-only, e tudo o que vem depois lê dali.

A maioria dos assistentes é construída ao contrário: cada integração é dona da própria cópia do mundo, então cada agente novo significa mais uma sincronização, mais uma credencial, mais uma coisa para quebrar. O Argos inverte isso. Existe um único log, e plugar um agente novo numa vida é questão de apontá-lo para um cursor.

Dezessete serviços pequenos, cerca de vinte e seis mil linhas de TypeScript. Nenhum deles é interessante sozinho. O que é interessante é o contrato entre eles.

02 / COMO FUNCIONA

Um só escritor. Cada fonte passa por um único escritor que valida o formato de um evento pelo seu kind antes de ele entrar no log. Um só escritor significa que o log nunca pode se contradizer, e um contrato na borda significa que um evento ruim é rejeitado onde é barato rejeitá-lo.

Append-only. Nada é atualizado e nada é apagado. O que aconteceu permanece exatamente como foi registrado, o que transforma o log em uma história, não em uma foto. O estado derivado não é guardado em lugar nenhum sagrado: é calculado a partir do log, então pode ser descartado e reconstruído sempre que a forma como os eventos são interpretados mudar.

Um cursor por consumidor. Cada leitor mantém sua própria posição. Esse é todo o design em uma frase, e ele compra três coisas: um consumidor que ficou quebrado por três dias se atualiza sozinho, um consumidor novo pode ler histórico anterior à sua existência, e nenhum leitor consegue atrasar outro. Plugar um agente novo não é um projeto de integração, é um cursor.

Camadas, não um pipeline. Os observadores escrevem eventos crus. As camadas derivadas os leem e escrevem suas próprias conclusões de volta no mesmo log, como eventos. Assim o raciocínio também é auditável: não só o que chegou, mas o que o sistema fez com isso e quando.

Polling em vez de push, de propósito. Push era mais rápido e dependia de infraestrutura que estava prestes a sumir. Polling custou cerca de dez minutos de latência e comprou independência total. Quando essa infraestrutura finalmente foi destruída, o log nem percebeu.

03 / DECISÕES

Um só escritor, muitos leitores. A propriedade mais valiosa do sistema, e a mais barata de perder por acidente. Dois escritores são duas verdades.

Um log, não uma fila. Uma fila esquece o que entregou. Um log permite fazer amanhã uma pergunta sobre dados que chegaram hoje, com código que ainda não existia quando chegaram.

Validar na borda, por kind. Barato onde o evento entra, impossível depois que já passou por quatro consumidores.

Os olhos são próprios. A camada que vê a sua vida não deveria viver em infraestrutura que você não controla. O Argos foi migrado de uma plataforma moribunda, serviço por serviço, com a contagem de eventos e o checksum verificados nas duas pontas, e continuou rodando o tempo todo.

04 / STATUS

Rodando na máquina no canto do quarto, alimentando a frota.