4 posts tagged claude

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.

herdctl architecture showing scheduled triggers and Discord messages flowing into the herdctl fleet manager, which spawns Docker-isolated and native agents

Enabling docker mode is really easy:

herdctl-agent.yaml
name: my cool agent

# this is all you need to add
docker:
enabled: true

A full agent definition now looks something like this:

herdctl-agent.yaml
name: Gardener

# this is all you need to add
docker:
enabled: true

# locked-down permissions for our agent - see https://herdctl.dev/guides/permissions/ for more information
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- ... etc

# we can attach any number of agentic jobs to run on any number of schedules
schedules:
weather:
type: interval
interval: 72h # every 72 hours
prompt: |
Give me a weather report for the next 7 days and give me a summary of what the weather will be like this week.
For example, "Sunny in the 80s until Wednesday, then expect rain most afternoons and a cold front moving in on Saturday."
Look at your .md files in this project and decide if any of my garden needs attention based on the weather.
If it does, be sure to mention it in your final message.

# optionally add our agent to discord/slack
chat:
discord:
# discord chat config here

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.

Continue reading

herdctl: an orchestration layer for Claude Code

I love Claude Code, but there are three things I really wish it could do:

  1. Invoke itself, on a schedule or in response to events
  2. Let me talk to it over discord or slack
  3. 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.

Continue reading

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:

  1. Find that my test suite is failing
  2. Open up Claude Code
  3. "Please run pnpm test and fix the failures"
  4. Wait

Maybe there's only one failing test out of the ~1000 tests in the suite, so we can kinda optimize it a little:

  1. Look to see which test file was causing the problem
  2. pnpm test /path/to/that/file.test.ts
  3. Open up Claude Code
  4. Copy/paste the pnpm test ... command and its output and hit enter
  5. 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?:

$ pnpm test /path/to/that/file.test.ts
$ claudify
Continue reading