riffpad

Your AI coding agents,
synced to your phone.

Riffpad bridges Claude Code, Codex and other CLI agents to your phone — watch progress, approve actions and steer sessions without staying chained to the desk.

Send this to your AI agent — the rest is automatic.

for your AI agent
Refactor the auth middleware to use the new session store
Thought for 4s, read 3 files, listed 1 directory (ctrl+o to expand)
Edit(src/auth/middleware.ts)
+42 −18 lines (ctrl+o to expand)
Edit(src/auth/session.ts)
+27 −9 lines (ctrl+o to expand)
Bash(npm test)
42 passed · 0 failed · 1.8s
src/old.ts is unused now — I'll delete it.
Bash(rm src/old.ts)
Waiting…
Bash command
rm src/old.ts
Delete the unused file
Do you want to proceed?
1. Yes
2. Yes, always allow deletes in src/
3. No
Esc to cancel · Tab to amend · or decide from your phone
09:41
claude · api · 37263dsynced
cwd: ~/projects/apicli: claude

Middleware switched to the new session store — 42 tests green.

Edit src/auth/middleware.ts
Edit src/auth/session.ts
$ npm test

src/old.ts is unused now — I'll delete it.

$ rm src/old.ts
Bash:rm src/old.ts
Send a message…

Live demo — approve or reject from the phone and watch the Mac react.

// architecture

One daemon, three pipes.

The CLI agents stay on your computer. The daemon captures their stream, the relay forwards encrypted envelopes, and your phone drives approvals and steering.

One daemon, three pipes.clientyour phonerelayzero-knowledgedaemonyour computerClaude CodeCodexKimiand more…eventsapprovalseventsapprovals
// how-it-works

Three hops. Zero cloud custody.

The loop is short, and every hop is encrypted.

01

Install the daemon

One binary with adaptors for the coding CLIs you already use. It wraps or attaches to your sessions and owns the keys locally.

Claude CodeCodexKimiDeepSeek
02

Pair your phone

Scan a QR code to exchange device keys (X25519). Each session derives an ephemeral key of its own.

pair · X25519 · ephemeral
03

Supervise anywhere

Watch encrypted events, approve, reject and steer — over cellular, in the subway, from bed.

riffpadnow
approval request
Bash:rm src/old.ts
// security

Zero-knowledge by design

The relay cannot read your sessions. The product is built so it never has to.

Local-first

Code, repos and API keys never leave your computer. The daemon only bridges the CLI to your phone.

End-to-end encrypted

X25519 key exchange plus AES-256-GCM. Keys live on your daemon and your phone.

Relay routes, never reads

api.riffpad.ai forwards ciphertext and keeps no message history. No logs, no content store.

Read-only by default

Viewing is passive. Approve, reject, pause and prompt are explicit actions — and the daemon has a one-key kill switch.

daemon · plaintext
Bash(rm src/old.ts)
42 passed · 0 failed · 1.8s
encrypt · x25519 + aes-256-gcm
relay · zero-knowledge
DlkLOsy74fzFI8kfhBNdxS0PfEKKm9JfaZ93glTDQkNgzjpfG9K8A2t2njqheORMALBA7iLUi7kRNEVerB6Pbtzp5R4JdoB11Bi/YE3tT1gbNdIi/2YyagFU4HmIzQoAbanAgNCa///=jH10s713AzBc0s/rm4hXagvk7pxi
m3x3V8U5CRcRXk+caIgnQ=BerAVwwORNp5f7sX=q9RRyD3Mlm6DAVE4RQa5kihW7nlQ0BzqN3czunDU2gJ5=WA0zugQ9zcIZdM7Tmx/6J9OPLCEXici2ZRvdwshzduYt0hjNjoGT7hStbOQet4p4m5w18G91MfNRKGhV1PU9
1Z0Qr7NBQIJo9SQ2NLW9=poU/3ZhJsedJFFwEKWx0qfkwpbGYy3rq5t8lGgoeSwOOt4KttcgOpW93USbthoxqPQ2JRJMneLCsalswLvrMbQq2aXDVND/Wf7yER1uSRukPpk75bNGlRx9n3QzssL7dWD928=Yg0VxCusH3VuV
butF5ikys5mta0=zoU0jWb+S7/zGOdWRftlbYjgqlKnflxruUXq9HSvKPWz75MxGYwRSPWTSEXAOiywt4Mo1UI2nxVl+iTtQaj6gKvmeErk9xfrHM/u21rY47p6B9bHaLuUePq2wwWzGQl8nn8uK/ABgpDJbON5ltGNK+/RB
zi+HJxKg35lTCuv5=gU8Qf9NG9mBw/Z=Hund+iyUq91dcGX8Kzj2Wmr+t1cXTPUx=x49jrLWnIAiXyHAi/dWVS=Cs1/pt7WmNpj08t4iQuuoppbV71DjjUGDrx=8ILtDd9yWvtkI9V+t2KE7zvp8KHQpyPpQp21xRzC+dXOT
decrypt · keys never leave devices
client · plaintext
Bash(rm src/old.ts)
42 passed · 0 failed · 1.8s
// faq

Common questions

Today: Claude Code and Codex, via structured output plus hooks. DeepSeek CLI, Kimi and GLM are next, with tmux/PTY as the universal fallback.

Stop babysitting the terminal.

Open the app, pair your daemon, and approve from the subway instead of the desk chair.

GitHub sign-in · end-to-end encrypted · zero-knowledge relay