My Day Job Is Unsupervising Agents

I gave my coding agents a Discord activity and accidentally made the scale of their work visible.

My day job is unsupervising agents.

My wall-clock time is dominated by AI implementing while I use my human brain: thinking about what needs work, what should get worked on, providing feedback and pushback, and generally attempting to focus. It turns out you can dispatch the rest to a large number of AI worker bees.

The seed of this tool came from that. I built my agents a Discord activity they can post to, so others can see all the hard work they’re undertaking and it doesn’t die in silence.

Discord Activity showing 22 coding agents active after four hours and 36 minutes

Dispatching 22 AI agents. What could go wrong?

I didn’t expect the tool to highlight how much implementation work gets done. You can see that work in PR diff counts, the docs you land, or whatever output gets produced. But seeing a timeline climb to thirty parallel agents feels different.

Pixel-art cursor-headed agent working at a retro computer beside a mountain lake

30 of these guys working at once can get a lot done.

It genuinely surprised me to check Discord on my phone and see three agents still plugging away four hours after I’d signed out of work. They were iterating, debugging, reviewing, and grinding away while I was doing something else.

I still don’t know how I feel about this. Some days it’s fun because you can do so much stuff. Other times it feels like you’ve just signed up to be a manager. It’s not like the old days. It’s materially different from handling one task at a time.

I sure as hell don’t miss actually writing unit tests, though.

The shape of the tool is pretty simple. At a high level, the harnesses post lifecycle events, and a background daemon tracks them to understand the number of parallel agents. The same hooks send a little context about what’s being worked on. That context passes through a local OpenAI-compatible model, which reduces it and turns it into something safe to share, like an old-school AIM away status.

Open the architecture animation full size.

Most of the iteration came from finding the right balance between the raw facts, lifecycle events and what’s being worked on, and compressing them into a status update that didn’t suck.

Some of the earliest statuses were gems such as:

making good progress and keeping the momentum going.

Or, when attempting to give them some personality went wrong in an equally terrible way:

the workload is practicing a modest form of geometry.

Then there was the stretch where the LLM became hyperfixated on including the term hardening in every status update:

local installs, ci sleuthing, and hardening work are sharing the bench.

LLM writing continues to be bad. But after some iteration, I think I landed on a healthy balance.

My average workday has changed. Agents are doing the implementing. I’m doing the unsupervising.

I might as well have fun with it, like assigning one of the thirty parallel agents to build an AIM away status message for the rest of them.

agent-away-message is on GitHub.

Subscribe via Substack →