Intern
3 min read
On this page
Ah, the Autonomous Intern. A glorious little housing meant to sit on your desk with its LEDs flashing, letting you know it's hard at work on whatever you threw at the agent it's running.
Out of the box, the Intern is a Raspberry Pi 5 with 4 GB of RAM and a 64 GB SD card. It ships with a factory install (the docs imply Debian Bookworm), and when you plug it in, it boots into access point mode. You connect to its wifi network (Intern-XXXX) and set it up from there.
You can also pop the case open by removing four screws, minding the wires for the LED array. With some tweezers you can pop the SD card and flash it with whatever you want. It's a Pi! Have some fun with it.
Well, I had some fun with it. I reworked the setup script Autonomous provides with some defaults that I preferred:
- Debian Trixie instead of Bookworm
- Caddy instead of nginx
- Hermes instead of OpenClaw (the stock default)
- Supermemory dropped for the default Hermes memory (recommended by Teknium, who leads Hermes)
The agent
The brain is now Hermes, the agent from Nous Research. It runs as a gateway service on the Pi and talks over whatever channels you wire up. Bring your own model (I point it at OpenRouter) and pick it in a little web dashboard. Caddy sits out front, serving the setup page and proxying the backend. Nothing fancy, just the parts I trust doing the jobs I want.
Memory
This is the part I went back and forth on. I started by self-hosting Honcho as a memory backend: Postgres, pgvector, Redis, a deriver worker, the whole Docker stack. It worked, and it was also a fragile, RAM-hungry pile of moving parts for what it actually bought me on a 4 GB Pi.
So I ripped it out. The default Hermes memory is just a small MEMORY.md the agent keeps current, plus skills it writes for itself. No vector database, no embeddings bill, and a lot less to run.
Reaching it
The Intern lives on my desk, but I don't want to be at my desk to use it. Tailscale handles that. The dashboard is published to my tailnet only, SSH goes over the tailnet, and a firewall locks the rest down so nothing interesting is exposed to the local network. From my phone or my laptop, anywhere, it's just there.
The LEDs
Those flashing LEDs aren't just for show. The backend drives the ring to track what the agent is doing. On my build, getting it to follow Hermes took a small bridge that feeds Hermes' activity to the backend's LED API, so the ring breathes one color when it's idle, another while it's thinking, another while it's running a tool.
The Rabbit R1
There's one more goodie in the script: a shim that lets you pair a Rabbit R1 to the Intern using the R1's built-in OpenClaw pairing. Scan a QR and the R1 becomes a pocket remote for the agent. I wrote that part up on its own: Replacing Rabbit's Brain.
One script
It's all one script. Flash a Raspberry Pi 5 with Debian Trixie, run it, and you get the whole stack: agent, web layer, memory, remote access, LEDs, and the optional R1 channel. It's idempotent, so you can re-run it without thinking too hard, and it works out on its own whether to run wifi onboarding or use a connection you've already got.
Repo's here: github.com/iammatthias/intern.