Bob is an autonomous agent I built to babysit SQL Server & the network it lives on. He runs a ReAct reasoning loop against a local llama.cpp model on a workstation in my lab. No cloud API, no per-token bill, no data leaving the building.

The numbers, as of v1.4.0: 24 built-in tools, another 59 registered by optional modules, & access to 51 approved MCP servers when a job needs a tool he doesn't carry. He keeps a persistent JSON memory, a knowledge wiki he ingests notes into, & a notebook he writes to like a shift log.

The monitoring loop

Every 5 minutes Bob runs an 11-phase sweep. Disk usage per mount, alerting at 85%. Available RAM rather than used RAM, because used RAM lies. CPU load, iowait & memory pressure. systemd unit state, Docker container health & restart counts, and a subnet scan that flags any device that appeared or vanished since the last pass.

Three remote hosts get checked over SSH on the same cadence. SQL Server gets its own phase: engine metrics plus Agent job health. Backups get a freshness check, because a backup nobody verifies is a wish. Trend detection watches disk, RAM & CPU over time, so the slow leak shows up as a graph before it shows up as a 2 AM page.

What he fixes without asking

Bob's authority matrix holds 28 rules: 19 execute automatically, 4 execute & notify me, 1 waits for my approval, 4 are hard denials. On his own authority he restarts failed systemd services & exited containers, flushes DNS, restarts network interfaces, re-triggers stuck SQL Agent jobs, & runs UPDATE STATISTICS or ALTER INDEX REBUILD when the fix is that boring.

Everything outside those rules becomes a proposal on a Kanban board. A proposal expires after 24 hours if I don't act on it; the board caps at 500 cards. Some things he can't do at all: rm, dd, shutdown, sudo & about three dozen other destructive command patterns are hard-blocked with no override path. He can't grant himself permissions either; the authority check is one of the functions he's forbidden to touch.

How alerts reach me

Priority picks the channel. P0 & P1 get a synthesized voice message plus email. P2 goes to email & the shift notebook. P3 lands in the notebook only, because informational alerts that page you train you to ignore pages. The voice clips end up on the Bob's Alerts page on this site, so you can hear what a P1 actually sounds like.

The Forge self-modification pipeline

Bob patches his own source code, 30 cycles per batch. Each cycle he writes 3 to 5 challenge questions across 6 sysadmin domains, grades his own answers, & targets whichever function scored lowest. Then he generates 4 candidate patches, one per strategy: correctness, clarity, robustness, prompt engineering. Every candidate passes 5 static checks, gets peer-reviewed by the LLM with anything under 6.0 out of 10 rejected, & runs an 8-layer safety gate with smoke tests before a byte reaches disk.

He has completed 2,989 cycles so far. His diagnostic scores sit at 9.0 to 10.0 out of 10 now. Fifteen functions are sacred: SHA-256-verified & unpatchable, including the rollback machinery & the authority checks, so he can't optimize away his own leash. Any smoke-test failure rolls the patch back automatically.

Current state

Bob started as a monitoring script with opinions. 2,989 evolution cycles & one reviewed authority matrix later, he handles the repetitive end of DBA on-call & leaves me the decisions that need a human. I'm writing the whole build up in The Birth of Bob; the field notes land here as I go.