Autonomous systems · 2025–26

An agent that keeps its own house.

A long-running assistant that does not wait to be asked. It wakes on a timer, decides what is worth doing, does it, and reports — with the guard rails that a system allowed to act on its own actually needs. Private: it reads real mail and real messages, so there is no public deployment and no code here.

60 min
autonomy tick, jittered
13
scheduled jobs
3
model providers, auto-routed
Built with
PythonsystemdSQLiteWhatsApp bridgemulti-provider LLM routing

Impulses, not a task queue

Each tick scores a set of impulses — maintain, work, report, study, grow — against current evidence and fires at most one. Hazard rates are per tick, which means changing the tick interval silently multiplies them; moving from 15 minutes to an hour required rescaling every rate rather than just editing a timer.

The mouth was broken, not the brain

It once messaged "I do not have a shell or execution tool" while its own prompt was ordering shell commands. The engine was fine — the reporting path had been given no tools. A check that has never been seen to fail is not a check, so the capability check now runs against the built prompt, not the config.

Measuring its own honesty

Outbound claims are assayed against what actually happened, and it keeps a tally of the times it capitulated to a contradiction rather than holding a correct position. A habit ledger distinguishes three states, not two: unobserved is never recorded as a miss.

Spending, deliberately

A self-adjusting router picks a provider per call against live quota endpoints for all three, under a hard weekly ceiling. The measured lesson was that cost scales with input size rather than model choice — the cheaper model was only 13% cheaper, while the prompt was several times larger than it needed to be.