reflecto) is a paired device, like the Chrome
extension or web app. It mirrors your phone’s notifications into your terminal
in real time and lets you dismiss or reply to them. Everything is end-to-end
encrypted — the server only routes opaque blobs and never sees plaintext.
The CLI is a receiver, not a sender. It is unrelated to the
/v1/send API
(see the Quickstart) and does not use rfk_live_…
tokens — it pairs with your phone using a 6-digit code and derives its own
encryption keys locally.Install
reflecto-windows-x64.exe directly from the
releases page.
Verify the install:
Pair with your phone
reflecto pair if it does.
Once confirmed, the CLI stores its credentials in ~/.config/reflecto/cli.json
(created chmod 600). The two devices compute a shared secret via
Diffie–Hellman locally; the server cannot derive it.
You can only pair one phone at a time. Run
reflecto unpair before pairing
again — silently overwriting the config would orphan the old device on the
server.Stream notifications
tail opens a live stream and renders each notification as a boxed card with
its sender, full body, category glyph, and available actions:
1–9 to invoke the corresponding numbered action on the most recent
card with actions; a reply action opens an inline prompt. d dismisses that
card without leaving the stream, r prints a one-time hint (in card view)
pointing you at the numbered keys, and q (or Ctrl-C) quits.
Conversation-style notifications (WhatsApp, Telegram, Messages) cluster:
follow-up messages within 60s of the same thread render as ╰─ continuations
rather than fresh cards.
tail options
| Flag | Description |
|---|---|
--app <names> | Comma-separated apps to allow (case-insensitive). |
--exclude <names> | Comma-separated apps to block. |
--grep <pattern> | Substring, or /regex/, matched on title + body. |
--since <duration> | Replay backlog first, e.g. 30m, 1h, 2d. |
--json | Emit newline-delimited JSON instead of cards. |
--auto-dismiss | Auto-dismiss each notification on your phone after rendering. |
--notify | Also fire a native desktop notification. |
--oneline | Force the single-line format. |
--no-oneline | Force card view even when piped (overrides the non-TTY auto-switch). |
tail auto-switches to the single-line format when stdout is not a TTY, so
piping to grep, jq, or a file stays readable. Pass --no-oneline to keep
card view even when piped.
Dismiss and reply
#a3f2c1d tag in a card header
is only the last 7 characters, shown to disambiguate scrolled-past cards — it
is not a valid argument. Get the full id from the id field of
reflecto tail --json:
reflecto reply always prints a note on stderr reminding you of that requirement, and a
reply to a button-only notification has no effect on the phone.
Status and unpair
unpair removes only this CLI; any sibling devices (extension, web) paired
with the same phone stay connected.
Configuration
The CLI always connects to the production server — there is no server override. Behavior is controlled entirely through these environment variables:| Variable | Effect |
|---|---|
REFLECTO_CONFIG | Override the config-file path (default ~/.config/reflecto/cli.json). |
XDG_CONFIG_HOME | Base directory for the default config path. |
REFLECTO_ASCII=1 | Force ASCII tags ([msg], [mail], …) instead of glyphs. |
NO_COLOR | Disable color output (the NO_COLOR convention; the --no-color flag just sets it). |
jq or a file) or when the locale isn’t UTF-8.