A 24/7 multi-agent monitoring fleet
Three specialised agents, file-backed memory, and a daily schedule of research and risk jobs — humans still own irreversible action.
What changed. Overnight collection and synthesis run without a person in the loop; action still waits for a human. The fleet was built over twelve months of iteration.
Stack. multi-agent orchestration · file-backed memory · scheduled jobs · multimodel routing
Context
An operator running a research and monitoring desk cannot read every overnight feed by morning. Positions, public-market prints, news, and geopolitical watches arrive on different clocks. A single chatbot that “keeps an eye on things” either goes silent or writes a fluent brief on stale files. The studio needed a fleet that would still make sense after a model swap — context in files, not in a vendor’s chat history.
This is an operating system for collection and synthesis. It is not an investment product and it does not publish returns.
Task
Design a set of specialised agents that collect, structure, and criticise overnight, then hand a human a brief at the point of action. Jobs must keep running when one model vendor blips. Success of a job must be visible as an artifact, not as a chatbot saying it is done. Architectural decisions and daily operations must not live in the same process.
What we built
Three agents with hard domain walls. An operational agent sits on Telegram as the daytime entry point: questions, monitors, morning briefs. A research agent runs in the background — hypotheses, checks against data, writes into the knowledge base without waiting for a prompt. An architectural agent sees the whole system in scheduled sessions: new components, documentation, coordination protocols.
About fifty jobs run per day via a scheduler: geopolitics watches, market and options-flow ingest, risk layers, research cycles, and system hygiene (state snapshots, reconciliation, backups). Four Bayesian scenario models update on a calendar, each with a small set of mutually exclusive paths; they feed briefs and a contrarian pass, they do not fire trades.
Memory is files. A long-term store (rooms, drawers, links), a kanban for agent tasks, a wiki capped so agents read compiled pages instead of raw dumps, a shared hourly state.json, inbox files between agents, and JSONL reports from every cron. Switching the flagship model does not empty the house.
Models are routed by cost and job: a mid-tier model for briefs, a senior model for architecture and synthesis, a local model for cheap watchdogs, a fast external model for parallel red-team narratives, a small model for mechanical extraction.
Risk is layered: an intraday snapshot on a timer and on move triggers; a deterministic morning audit against historical percentiles; a cross-cycle diff that only surfaces material change; a weekly what-if that asks several models for shock narratives and synthesises them. The operational agent does not grade its own homework.
What changed
The desk receives structured digests instead of a blank morning. Collection runs overnight. A person still owns send, spend, and publish. Twelve months of iteration produced a fleet that survives a model upgrade because the operating record is on disk.
What we would do differently
Attach an external evidence check to every cron from the start: a non-empty artifact, a fresh mtime, a hash that is not last week’s. File-backed memory was the right bet. The failure mode we learned later on other pipelines — a job that exits zero and writes nothing — was already available here. The dashboard should have treated a missing report as a failed night, not as a quiet one.
Related service: AI agents and automation