Skip to content
← writing

Your Slack status should know what your agents are doing

ai
agents
slack
open source
claude code

Here's a small thing that started bugging me. I'd fire off two or three coding agents, a Claude Code session churning through a refactor, Codex grinding on tests, then go make coffee. My Slack dot is green. I'm not there. A teammate pings "still running?" and the honest answer is I don't know, I'm in the kitchen. The agents are the ones working. My status is telling everyone about me.

That's backwards. If a machine on my desk is doing an hour of work with my name on it, the least it can do is say so.

So I built agentblip. It watches your local agent sessions and keeps your Slack status honest: claude agent working, 3 agents working, agentblip: finalizing CI/CD. No more "still running?" pings, because the answer is already sitting next to your name.

How it works

There's a tiny daemon on your machine listening on 127.0.0.1:4519. Claude Code hooks and a Codex watcher post little lifecycle events to it (started, working, waiting on you, done). The daemon aggregates whatever's live and writes your status. Anything can feed it. It's one curl to POST /event and your own script is a blip too.

The part I actually care about is where the formatting happens. It happens on your machine, before anything leaves localhost. The hosted relay that talks to Slack only ever sees the finished string, "3 agents working", never your prompts, your file paths, or what the agent is doing. Your work stays yours. That was a design line I didn't want to cross, so the architecture makes it impossible rather than promising to be careful.

There's also a rolling five-minute expiration on the status. If the daemon dies, your laptop sleeps, the wifi drops, Slack clears it on its own. A status that says "working" when nothing is working is worse than no status, so it expires itself instead of lying.

The hard part wasn't the hooks

Wiring up hooks is easy. The thing that took real thought: agentblip must never stomp on a status you set. If you've got "on vacation" or "in a meeting" up, it needs to notice, back off, and leave it alone. When you clear it, agentblip quietly resumes.

That's the default (I call it "respect"). There's an "overwrite" mode too, and it's polite about it: it saves whatever it displaced and puts it back when your agents finish. Getting that right, reading the current status, deciding whose it is, restoring it after a crash, was most of the work. The little green dot is the easy 10%.

You decide how much it says

Four levels, and you can change them live:

  • off: it never touches your status.
  • presence: "heads down with agents", nothing more.
  • count: "3 agents working".
  • activity: a short label of what's happening, agentblip: editing README.md.

That last one leads with the repo name by default, which reads better than the agent name once you've got sessions in three different projects. There's a redaction list if a project name or an activity label should never make it to your status.

And because staring at your own Slack to see the state is silly, there's a little native menu bar app for macOS: a colored blip that goes green with a count while agents work, with a dropdown to pause, change the detail level, and see the live sessions.

The honest part

It's v0.2 and it looks like it. The menu bar app is unsigned, so the first launch needs an xattr to clear Gatekeeper. Turning on the "don't clobber my status" reading requires re-pairing Slack once to grant a read scope. The hosted relay is single-workspace until I flip on public distribution. None of that is hard, it's just not done yet. It's all MIT and the whole thing is a few small TypeScript packages plus a SwiftUI app, so it's easy to read and easy to self-host if you'd rather run your own relay.

Get it

install
npm install -g agentblip && agentblip setup

agentblip setup pairs Slack in your browser and offers to install the Claude Code hooks. After that your status just tracks your agents.

Site: agentblip.com. Code: github.com/seangeng/agentblip. Package: npm i -g agentblip. The Mac menu bar app is a download on the site, or build it from apps/menubar in the repo.