How 3AM works
What 3AM does with an alert, from the moment it fires to a verified fix, told through one real incident.
3AM runs inside your network, next to your monitoring. When an alert fires, it gathers evidence from your live systems, proves the cause, and proposes a fix. With your approval, it makes the change and checks that it worked. Everything it does is written to a signed audit log first.
Here is one incident from start to finish: the core banking database goes read-only.
1. An alert fires
Alertmanager fires MySQLReadOnly for core-banking-db. 3AM reads every alert source every 15 seconds, or takes
alerts pushed by webhook. It opens an incident and waits 20 seconds for related alerts to join it, so one failure
is one incident, with one ticket and one message thread, however many alerts it sets off.
2. It works out what's affected
3AM knows which service the alert belongs to, who owns it, what code it runs and what depends on it. It learns this from your monitoring labels, CMDB, clusters and repositories, and you can correct it on the Estate page.
3. It proves the cause
A pack lists the known causes of an alert, each with read-only checks: a PromQL query, a SQL query, a Kubernetes read. 3AM runs every candidate's checks at once:
confirmed db_read_only The primary database is in read_only mode
refuted db_connection_exhaustion A client is leaking database connections
refuted db_unreachable The database is down or unreachableA cause counts as proven only when its checks pass on live data, and it wasn't already true while things were healthy. A check that returns no data proves nothing.
When no pack fits, 3AM looks wider: what changed just before (a schema, a setting, a deployed image), which metrics moved, which errors are new. Outside packs, a cause needs two independent lines of evidence. How 3AM finds the cause
4. It rehearses the fix and asks
The fix for this cause is SET GLOBAL read_only = OFF. 3AM rehearses it first (SQL in a transaction that is rolled
back; Kubernetes as a server-side dry run), then asks in your approval channel:
Fix on core-banking-db: SET GLOBAL read_only = OFF
Proven: the primary database is read-only.
Evidence: read_only=ON, super_read_only=ON
Reversible: yes.Whether it asks, and who, depends on the service's autonomy:
| Level | What 3AM does |
|---|---|
| Shadow (the default) | Works everything out and records what it would have done. Asks no one, changes nothing |
| L1 | Asks for approval before every fix |
| L2 | Like L1, but runs fixes marked safe without asking, such as restarting a stateless service |
Raising a service's autonomy needs two people to approve. Safety rails
5. It fixes and verifies
After approval, 3AM makes the change and re-runs the cause's checks until they no longer confirm it. Only then is the incident mitigated. If the fix didn't help, it tries the next candidate, each approved in turn, before handing over.
When nothing is proven
3AM never acts on a hunch. Within 90 seconds it hands the incident to the people on call, with what's affected, what changed, and what it already ruled out. If exactly one thing changed just before the failure, such as a dropped column or a new image, it says how to undo it, or, with drafted fixes turned on, asks for approval to undo it (Restore first).
Where the models fit
The models never act. Checks prove causes, and fixes come from packs and your own connectors.
- System 1 is a small model that checks each cause, fix and sentence against the evidence, and can veto a fix the evidence doesn't support.
- The investigator, Llama 3.3 70B by default, digs through read-only actions when the checks leave an incident unproven. Its ideas count only once 3AM's own checks prove them.
It learns your estate
Every closed incident teaches 3AM something: which fixes worked and what your team says happened. Causes that keep being right rank higher; causes that keep being wrong stop proposing fixes. Learning
Next
Check the requirements, then follow the Quickstart.
Overview
3AM is the on-prem AI on-call engineer. Install it inside your network, connect your tools, and let it prove causes and fix incidents with your approval.
Requirements
What to have ready before installing 3AM. A Linux server or a Kubernetes cluster, somewhere for the models to run, and access to the tools it should watch.