Operations
The agent bill arrives, and nobody knows which project consumed what. With Anvil Coder, usage is written at the project and in the run per step, a cap stops the run before it hurts, and the service speaks up when something needs your attention.
The real risk of an autonomously working system is not the single expensive run, but continuous operation that goes unnoticed. That is why a cap measures the month rather than the single run, and the check happens before the next one starts.
Four occasions report on their own: a failed run, a completed run, a requested approval and a run that stalls. Each member decides per occasion whether the message appears in the cockpit, arrives by e-mail, or both; in the cockpit it defaults to on, by e-mail to off. The owner of an organisation additionally switches on a Slack message per occasion, sent to a webhook of their own.
Settings and channels are described in thedocumentation (in German).
Anvil Coder exposes its metrics in the usual format; Prometheus and Grafana are the intended chain. Tracing reaches across the queue: a job remains one coherent operation from the coordinator into the worker, even though a message sits in between.
A monitor observes the running operation, compiles findings, restarts what hangs and repairs what can be repaired automatically. A recurring check run establishes whether the chain as a whole still holds, instead of relying on the absence of alarms: a hermetic test run in the same namespace, on its own channels and without a model.
Both complement an operations team, they do not replace it. A system that monitors itself still needs someone who reads the findings.
Without work the worker fleet scales down to zero. The trigger is the backlog in the queue: when work is waiting, the workers come back. The base load, that is coordinator, databases, message bus, login and monitoring, keeps running. Idle is therefore cheaper than operation, but not free.
What is switched on in the rented service, and what you switch yourself when you run Anvil Coder on your own: