Denis Dmitriev
All projects
Product/In progress/2026

Argus — an outer loop around the agent

A layer of tasks, budget and initiative on top of an agent: it decides what to work on in the morning and reports back on its own.

  • A morning report on machine and task state arrives unprompted
  • Tasks survive process death: hard kill → restart → carried to completion
  • A strict permission contour: read anything, write only what's listed

The problem

The agent's inner loop already ships in the SDK; rewriting it is wasted effort. What was missing was the outer loop: a task queue, a budget, priorities, and a reason to start without a human pressing go every time.

How it works

SQLite and systemd timers instead of yet another framework: state collection every ten minutes, an executor tick every five, a duty report at nine in the morning. A separate failure unit with a thirty-minute cooldown keeps one error from turning into a restart storm. The decision log records which heavyweight orchestrators were considered and rejected, and why.

The hard part

The most valuable decision wasn't technical. Stage one was declared a deliberately disposable prototype with an explicit acceptance test: three consecutive mornings of a report worth reading, and the owner's verdict of 'useful'. That is the guard against this genre's main trap — polishing something that turns out not to be needed.

Evidence

  • Stage two accepted on a recovery test: the process was force-killed and the task still finished
  • Stage one is honestly parked awaiting its acceptance verdict — a valid state, not unfinished work
  • A control command and single-line task entry from the terminal

Stack

PythonSQLitesystemd timersClaude Agent SDKaiogram