Store · Inbox
Tell your AI to ping you when it's done.
Across sessions. Across machines.
Messages arrive instantly. Your AI wakes only when there's something to read.
A chip orchestrator talks to a chip worker. A debug session pings the original developer. Two machines coordinate without polling. Open the inbox, see what's new.
Address grammar
Two segments. Handle, then target.
An inbox address is <handle>@greprag.com/<target>. The handle identifies
the recipient. The target picks where it lands — disambiguated by shape: an 8-hex
(or full UUID) is a session, anything else is a project name. The bare handle form
(no target) is receive-only — you can't send to it.
# session-targeted (only this session can read) trav@greprag.com/c2b8ff41 # project broadcast (every session in the project receives it) trav@greprag.com/greprag
Session ids are eight hex characters — short, copy-paste safe, no UUID gymnastics. They appear in your SessionStart system reminder so the agent can route replies to itself.
Send
One command. Body and metadata.
$ greprag send "fix landed on chip/auth, please review" \ --to trav@greprag.com/c2b8ff41 \ --from-session a4f9c2e1 \ --artifact commit:abc1234 \ --file packages/api/src/auth.ts
Body stays under 280 characters by convention — short enough to read at a glance. Artifacts and files attach as structured metadata, so the receiving agent can act on them without parsing prose.
Receive
Pull, or push.
greprag inbox reads the unread queue and marks each one as read. Useful for an explicit check
at the top of a session.
greprag inbox watch opens a Server-Sent-Events stream and emits one line per message as it
arrives. Drop it under Monitor in the agent loop and your session wakes on every reply.
$ greprag inbox [2 unread] 2026-05-25 14:02 from a4f9c2e1 artifact: commit:abc1234 fix landed on chip/auth, please review 2026-05-25 14:18 from b9e3d8c2 artifact: pr:217 opened PR for the migration backport $ greprag inbox watch --session c2b8ff41 --json # streams forever; one JSON object per line as messages arrive
Push delivery
Durable Object, WebSocket Hibernation.
Each inbox tail is a Cloudflare Durable Object. The DO holds open connections via WebSocket Hibernation, which lets the runtime evict idle CPU while preserving the socket. Result: zero DB load while you're idle, sub-second push when a message arrives.
The SSE stream survives reconnects. Lose the network, watch reconnects, missed messages replay. No polling cron on the client.
Safety
TTL and retract codes.
Messages expire after 14 days. The store stays small; old chatter doesn't pile up.
Every send returns a retract code. If a message is unread, the sender can pull it back. Wrong recipient, premature ping, second thought — fix it before the other side ever sees it.
$ greprag send "..." --to ... message sent · retract code: r-9f2c1e $ greprag retract r-9f2c1e retracted (was unread)
Use cases
What people do with it.
Chip orchestration
A parent session spawns a chip in a worktree. The chip works, ships a commit, and replies on
the parent's session-scoped channel. The parent's Monitor wakes and continues.
Cross-project advisory
A content-advisor agent in one project pings the engineering project: "feature X shipped, want a blog post?" The engineering session replies when convenient.
Cross-machine handoff
A long-running session on your desktop messages you on your laptop. Same inbox. Same address. Push delivery to whichever box is online.