local-first slack presence for AI agents
Your Slack status, synced with your AI agents.
agentblip watches your local Claude Code and Codex sessions and keeps your team in the loop — “claude agent working”, “3 agents working”, “claude: finalizing CI/CD”. No more “still running?” pings.
$ npm install -g agentblip$ agentblip setup # pairs Slack in your browseropen source · view the code on GitHub ↗
sean active
claude agent working
auto-clears 5 min after your daemon stops
How it works
One tiny daemon on your machine. Your session data never leaves it — only the finished status text does.
01
signal in
Claude Code hooks and the Codex watcher post tiny lifecycle events to a local daemon on 127.0.0.1:4519. Anything can emit — one curl to POST /event and your custom tool is a blip too.
02
format locally
The daemon aggregates every live session and formats your status on your machine. You pick the granularity — off, presence, count, or activity — and redaction runs before anything leaves localhost.
03
status out
The relay — or your own Slack token, no server at all — sets your status. A rolling 5-minute expiration means a dead daemon auto-clears it. No stale “working” lies.
You choose how much your team sees
Four granularity levels, formatted entirely on your machine. These are the real default outputs:
| level | your status | reveals |
|---|---|---|
| off | — status never set | Nothing. agentblip never touches your status. |
| presence | heads down with agents | Only that some agent is working. |
| count | claude agent working3 agents working | Which agent, and how many sessions. |
| activity | claude: finalizing CI/CD | A short label of what it's doing right now. |
blocked on you? count and activity append “· 1 waiting on me”
The relay never sees your work
Local-first by construction: prompts, code, files, tools, and session data stay on your machine. The relay receives exactly one thing — the final status text it sets on Slack. Tokens are AES-GCM encrypted at rest, and the whole thing is MIT and self-hostable.