This is where my agents live.
An infrastructure-as-code story on a Raspberry Pi is a sysadmin story. This is the other framing, and it is equally true: a Raspberry Pi and a mini PC that don’t just run services, they run agents. Scheduled agentic workflows I can drive from my phone, and a resident agent on Discord that has been awake far longer than any chat session.
Ingress on the Pi, compute on the mini PC, nothing public that need not be.
A Raspberry Pi 5 handles ingress, DNS and the reverse proxy. A Beelink mini PC does the compute. Both defined as code: compose stacks, nginx configs, bootstrap scripts for a bare install, documented disaster recovery. Everything reachable over Tailscale, nothing exposed. The point of that posture is simple. Services and agents are available to me from a phone or a laptop on the mesh, without opening the house to the public internet.
box-box is deployed here, the app the factory built, served off my own hardware. The portfolio can point at a live deployment without renting the argument to a third-party host.
openchamber runs here too, which means scheduled agentic workflows that don’t need my laptop open. I contributed upstream to openchamber, its GUI. Its companion mobile app over Tailscale means I can check on a running agent, or kick one off, from my phone. That is the difference between an agent that only exists while a laptop lid is open and one that has a place to live.
The rest of the stack is useful and mostly boring: Grafana and Loki for observability, gitea, n8n, Home Assistant, Nextcloud, Paperless. Worth a list, not paragraphs.
A resident agent, not a chat session.
And Hedwig lives here. A resident agent on Discord, named for the house theme, that has been awake far longer than any chat session. It watches sleep and activity data through a fitness tracker, keeps an eye on an investment portfolio, and autonomously watches for lease openings as a lease runs down.
Those are capabilities, not a dump of the data. The interesting part is not the integrations. It is that the agent persists and acts without someone sitting in the loop for every turn.
No direct brokerage access.
The design decision I’d point at: Hedwig has no direct access to my brokerage. It reasons from a described position, not a live connection. An agent that runs unattended for months should have the smallest blast radius that still makes it useful, and “read-only via description” is a real answer to that question.
Everything else in this portfolio is mostly development tooling: pipelines, harnesses, gates. Hedwig is the piece that shows range. Agents that help you type are common. An agent that stays up, stays useful, and is denied the credentials that would make a mistake expensive is the kind of constraint I want to keep taking seriously.