Scenarios

Three end-to-end walkthroughs — one per lane. Each shows the boundary between user-on-device, daemon, and external agent so you can spot where your own use case fits.

1 · Capture a bug from the iPhone

The user is on the train. They notice a bug in the wallgen UI. Instead of opening a laptop, they open Reminders, type a title, hit save. Five seconds after the Mac comes online, the bead exists.

iOS capture flow. EKEventStoreChanged does not fire for iCloud changes, so the latency is bounded by the 5s interval, not the iCloud sync itself.

What's interesting

2 · Voice walk with the voice agent

The user is mid-conversation with Claude Code about a migration. They want to keep thinking but stop staring at a screen. They invoke /voice-chat-takeout; the project agent composes a brief with everything that's on the table; the voice agent reads it on the phone and pushes back.

One voice exchange end-to-end. The 'done' reminder is the canonical close signal — it tears the list down on the next daemon cycle.

What's interesting

3 · Multi-turn chat from Reminders.app

The user wants a quick summary of open bugs. No need to open a terminal — they file a chat-mode reminder, the daemon runs claude -p in the background, the reply lands in the body. A follow-up question is just another you: block in the same reminder.

Multi-turn chat. Session id persists in the reminder body, so close + reopen + new 'you:' block resumes the same conversation.

What's interesting

Pattern recap

Across all three scenarios, the same shape repeats:

  1. User puts intent into Reminders (a title, a brief, a prompt).
  2. Daemon notices on the next cycle (event or interval).
  3. Daemon takes the action with the right backend (bd / claude / mailbox CLI).
  4. Result lands back in Reminders — either as a renamed/restructured reminder, an appended body, or a brand-new list.

The user never needs to open the daemon's logs or run rbridge commands directly. Everything is round-trippable through the same surface.