A tiny daemon on your Mac runs Claude Code in the background. Every tool call streams to your phone in real time — approve, send a follow-up prompt, or hit the kill switch from across the room. Code stays local; only event metadata syncs.
Free tier · ₹0 forever · BYOK from day one · No credit card
// type a request — the agent does the rest
$ offsync new "rewrite the webhook to verify signatures"
▎ Reading apps/server/src/routes/billing.ts…
▎ Diff prepared (12 lines added, 4 removed)
▎ tool_call → write_file awaiting approval…
One tool_call_requested event · fanned out to every surface · raced against your local CLI prompt
The flow
No code leaves your Mac. The daemon publishes only event metadata — what tool ran, what diff was prepared, exit codes — so your phone shows the right card and you can steer without ever opening a laptop.
A tiny background process spawns claude in stream-json mode and parses every event. Files, BYOK keys, and the Claude session stay on the Mac you're sitting at.
Settings shows a QR with an ephemeral X25519 public key. Scan it from the phone, confirm the fingerprint matches, done. Same scan derives a shared secret for future E2E payloads — no static long-term keys.
Every assistant_text, tool_call, and tool_result streams to the phone in real time. Send a follow-up prompt, approve a risky tool, or hit the kill switch — all from the cockpit.
Surfaces
M1 alpha is the Mac daemon plus the Android cockpit. Windows, iOS, team chat, and the web replay viewer are mapped on the roadmap with concrete milestones — no “coming soon” vapor.
Spawns claude, parses stream-json, publishes to the relay. Tray + kill-switch hotkey + Settings window. Apple Silicon, macOS 12+.
QR-scan pairing with X25519 DH, live AgentEvent stream, prompt input, kill switch. Side-load APK today; Play Store at M3.
Same daemon, three install channels: npm, NSIS .exe, portable .zip. Identical wire protocol — your Android cockpit pairs to any Mac or Windows machine you own.
SwiftUI rebuild of the cockpit. Same protocol as Android. TestFlight invites open after Apple Org enrolment + Sign in with Apple land.
Channel-level approval flows. Block Kit + Discord buttons, HTTP-interaction bot (no gateway). Same event stream the phone subscribes to.
Browse archived sessions from any browser. Same card-stack rendering as the phone, read-only. For when you want to revisit yesterday's debug session at a real keyboard.
Stack
The daemon is agent-neutral by design. M1 ships against Anthropic's claude CLI; the same parser + relay slot in around any agent that emits structured stream-json — adapters land at M3.
BYOK lives in macOS Keychain only — never on our backend, never on the relay. The daemon spawns claude with whatever auth your CLI already has, or an explicit key you set.
QR-scan pairing uses X25519 ephemeral keys — both halves are GC'd seconds after pairing. The shared secret feeds end-to-end payload encryption at M2; the backend never holds either secret half.
Every session is a strictly ordered, replay-from-seq stream. Reconnects pick up exactly where they left off — no duplicate events, no lost approvals. Per-machine isolation in the relay.
A two-minute install. No credit card. The free tier is enough to get the feel.