← All work
active · 1 min read

Warden

An autonomous agent that operates the homelab end to end, proposing changes, running deployments, and keeping a durable memory of past decisions so the why survives between sessions, under its own least-privilege identity.

PythonAgentsAutomationGenAI
Status
active
Active since
Apr 2026
Last updated
July 2026
Changes shipped
31

The operating agent for the lab; among the most-iterated projects by shipped-change count.

Warden is the agent that actually runs the homelab. It proposes changes, opens and merges pull requests, runs deployments, and verifies the result, operating under its own least-privilege identity rather than mine, so its blast radius is bounded and every action is attributable.

How it works

The agent is a Postgres-backed service on the cluster, with its own credentials and its own place in the change workflow. A run is a closed loop rather than a one-shot script: it proposes a change, opens a pull request, waits on the same CI and protection gates a human would, merges, deploys, and then verifies the result before calling the work done. Its durable memory, the Steward platform, is read at the start of a run and written back at the end, so decisions and their reasoning carry from one session to the next.

Key decisions

  • It acts as itself, not as me: a dedicated least-privilege identity means every action is attributable to the agent and its blast radius is bounded by its own scoped permissions, never my personal access.
  • It goes through the front door: changes land as pull requests through the same review and CI gates as any other contributor, so an autonomous actor is held to the same bar and nothing bypasses protection.
  • Verify is part of the loop: a change isn’t “done” at merge; the agent confirms the deployed result, which is what lets it run unattended without quietly leaving things broken.
  • Memory is what makes it more than a runbook: persisting the why behind past decisions stops it relitigating settled calls and lets it build on its own history instead of starting cold each time. The full story is in the linked post.

Recent changes

  • Reconcile approved pr merges
  • Pr approval prompts respect quiet hours
  • Harden approval solicitation alerting
  • Harden container image
  • Decommission onboard hosts
  • Slim pr approval prompt