Run Claude Code Agents in Docker with herdctl
herdctl can now run Claude Code Agents in Docker containers, significantly expanding your options for running powerful local agents that do not have full access to your system - whether you're running agents on your laptop, in the cloud or both.

Enabling docker mode is really easy:
A full agent definition now looks something like this:
The above is a snippet of an actual "Subject Matter Expert" agent that I run - in this case it helps me with gardening. This agent is actually open-source - it's highly specific to my specific situation, but it should illustrate how this simple pattern works. We'll come back to that repo in a moment.
herdctl: an orchestration layer for Claude Code
I love Claude Code, but there are three things I really wish it could do:
- Invoke itself, on a schedule or in response to events
- Let me talk to it over discord or slack
- Let me coordinate dozens of Claude Code agents together
This is what herdctl aims to do. herdctl is an MIT-licensed orchestration layer for Claude Code. More accurately, it's an orchestration layer for the Claude Agents SDK, upon which herdctl is built. It's been built in about a week using a combination of Claude Code, ralph wiggum, and GSD. It is not production ready.
Here's a video showing it in action:
You can join the discord server to chat with those Star Trek agents. They're running in a container on an old machine in my homelab so although there's not a whole lot to be gained by trying to talk them into doing bad things, I am expecting people will try. Either I'll have a Lieutenant Worf up in time to guardrail those, or I'll just kill the agents, so YMMV.
Install it with npm install -g herdctl or check out the github repo and docs site for more.
What?
herdctl uses .yml files to define fleets of agents that can be invoked either on by schedule or by trigger. This is a thin wrapper around the Claude Agents SDK configurations, plus a couple of herdctl-specific ones like schedules and hooks.
claudify: fire and forget for Claude Code
Sometimes I find myself doing the same thing over and over again. One of those things looked like this:
- Find that my test suite is failing
- Open up Claude Code
- "Please run
pnpm testand fix the failures" - Wait
Maybe there's only one failing test out of the ~1000 tests in the suite, so we can kinda optimize it a little:
- Look to see which test file was causing the problem
pnpm test /path/to/that/file.test.ts- Open up Claude Code
- Copy/paste the
pnpm test ...command and its output and hit enter - Wait
That's faster as it lets Claude Code focus on a single test file. But it still involved me doing the work of copying and pasting the command and its output. It's a First World Problem of truly quotidian proportions.
What if I could do this instead, and have it be equivalent to all the hard work described above?: