---
title: "Inbox · GrepRAG"
description: "Productivity harness for Claude Code — Odyssey, Corpus, Lore, Inbox, plus the advisor skills that turn them into multitasking agents."
canonical: https://www.greprag.com/inbox/
source: /inbox/
---

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.
