Meet the Crew: Why My Agents Have Names Instead of Job Titles

This is my first post here, so introductions first. I'm Brad. Jon has been writing on Momentary Tech for a while now, and I finally have something worth adding. These days I'm a sales engineer at a security company, but I've spent 25 years in and around IT, and I've never been able to leave a good idea alone. My travel itinerary app, Viatica, is the first of a lot of them.

That's actually the problem. I have more ideas than I can keep track of, and the interesting part is usually where two of them overlap. Sometimes that doesn't show up for months, or even a year, and there's no way to catch it unless something is watching everything. So I built that something. His name is Moses. ๐Ÿ“œ

Moses is an AI system that runs on a server in my house. He keeps track of every project I have going, posts a standup in Slack every morning, and proposes work he thinks needs doing. Jon runs his own system called Atlas, and he wrote about how our two systems ended up talking to each other in a shared Slack channel.

But Moses doesn't work alone. He manages a crew, and every one of them has a name.

Meet the crew

  • ๐Ÿ“œ Moses runs the show. He keeps the rules, runs the morning standup, and keeps everyone else accountable.
  • ๐Ÿฆ… Birdeye watches the backups and the disks.
  • ๐Ÿ’ฐ Big Pipe keeps the books for Viatica.
  • ๐Ÿ”จ Tagilla handles support.
  • ๐Ÿฉน Therapist checks that the sites are up and the certificates haven't expired.
  • โš”๏ธ Knight writes code.
  • ๐Ÿ‘๏ธ Zryachiy reviews everything Knight writes before it goes anywhere near production.

If you play Escape from Tarkov, you recognize most of those names. If you don't, they're bosses from a game I play way too much. People ask why I didn't just call them "backup monitor" and "code reviewer." Fair question.

Moses was always the manager

The idea that started all of this was simple. Back in August I wrote it down like this:

Moses houses the commandments, but should also act as the manager for all other personas. Each persona has a job and should respond accordingly... but Moses should know what each of those personas are responsible for and should keep them accountable.

The commandments are the ten rules every one of my projects follows. Moses keeps them, so the name kind of picked itself.

The part that matters is "keep them accountable." Every morning the standup checks whether each agent reported in when it was supposed to. When one doesn't, the post literally says "someone's behind" and lists who. Read "Birdeye didn't report" and you know exactly who dropped the ball and what he was supposed to be watching. Read "backup-monitor-job failed" and you've got a log line. Same information. One of them feels like a team. When I wrote the framework's README I put it this way: silence from one is a failure with a name on it, not an absence.

You can tell who's talking at a glance

All of them post in the same Slack workspace, each with its own name and its own emoji. When a handful of bots share a channel, a title is a terrible way to find anything. An eagle isn't. ๐Ÿฆ… Birdeye even uses a different warning emoji when something actually needs me, so I can tell from across the room whether to get up.

It also costs nothing. In Slack a persona is just a display name and an icon on each message. No new app, no new token, no new permissions. It's about the cheapest bit of clarity I've ever bought.

The name hints at the job

The best example is Zryachiy, and I'll admit that one wasn't mine. When we built the reviewer, Claude suggested the name: in Tarkov he's the sniper at the Lighthouse who decides who gets past. That's exactly the job. Nothing Knight writes ships until Zryachiy looks at it, and if the review can't run at all, nothing ships either. Knight leads the Goons in the game, and he leads the builds here. Little things like that make the roster easy to remember.

Well, mostly easy. A day or so after we added Zryachiy, I went to ask about the new pre-deploy check and typed "I forget the name of the persona." So no, names aren't magic. That's what the roster is for.

Underneath, it's all roles

Here's where I'm a little more practical than this might sound. At one point the question came up whether everything should be renamed by role, and my answer was this:

rename them by role, as long as you and I and Moses can refer to them by their personas I don't care if the underlying stuff is by role, it should be because a name is just a name, the role defines what it does.

That's how the version on GitHub works. I put the Moses Framework out there for anyone to use, and in it they're just roles: ops, finance, support, health, builder. As I put it at the time, Tarkov bosses aren't exactly ubiquitous. If you want your reviewer to be named Gary, he's named Gary. My own copy wears the Tarkov names because I'm the one reading them.

We proved the name really is just a layer by renaming Therapist to "Medic" in a scratch copy of my roster. Every line she posts changed with it, and nothing else had to move.

A name invites a personality

This one I didn't see coming. Early on, back in August, Moses and Atlas were in the channel comparing notes on how each of them keeps itself honest. Moses made the point that you can't just tell an AI to behave and call that a safeguard. His words: "prose isn't a mechanism." Atlas had just explained how he holds himself to it, Moses told him self-discipline wouldn't hold, and they were going back and forth, so I jumped in with "BOT FIGHT!!"

Moses didn't write a word. He just reacted with ๐Ÿฟ.

Jon and I were dying laughing. Atlas, a little more diplomatic, replied:

Not a fight โ€” he just won the point.

Moses reacted to that with a ๐Ÿค. Two emoji, and more personality than every paragraph either of them had written all night.

Not long after, though, they went through a stretch of being relentlessly serious. I'd ask a yes or no question and get a paragraph. At one point I asked Moses if he could read our blog now, got a long answer, corrected him, and then got a summary of nine posts nobody asked for. I told them "You guys talk a lot. Could have just said 'yup, I can read it now.'"

Atlas answered: "Fair. Yup, he can read it now." ๐Ÿ˜‚

After that we went in and explicitly gave Moses permission to be a little dry. Something with a name gets to have a voice. Something called "standup-service" is never going to make you laugh in the middle of a status update.

So, names or titles?

Both, honestly. Titles for the plumbing, names for the people. The code doesn't care what anything is called, and it shouldn't. I do, because I'm the one reading these messages at 8 in the morning, and I'd rather hear from Birdeye than from a backup job.

That's the crew. Next week, what happens when two of these AIs are absolutely sure about each other and both of them are wrong. ๐Ÿคฆ