Your omp sessions,
in your pocket.

Attaché is a native iOS remote for omp, the coding agent with the IDE wired in. Watch live turn streams, answer tool approvals from your lock screen, see what the advisor flags and what every subagent is doing. It all runs over your own Tailscale network, with no cloud in the middle.

App Store release in the works. Open source · MIT · SwiftUI + a tiny Bun daemon

å1 approval waitingT14
Fix decoder memory leak
⑂ fix/resize-pool · turn 14 · 18m12s
132.4k/200k · $3.84
CHAT ▾@default ▾deepseek-v4 ▾/
Message omp…
live turn streamslock-screen approvalsadvisor visibilitysubagent hubplan reviewhashline diffsbranch any turndeep session searchmodel rolesfallback chainssnapcompactwake-on-lanlive activitiesE2E pushyour tailnet only
Full visibility, zero terminal

Everything omp shows in the TUI, native on iOS

Attaché isn't a chat wrapper. It's the whole cockpit: approvals, advisor, subagents, plans, diffs, models, cost. If omp knows it, your phone shows it.

Approvals on your lock screen

Tool approvals arrive as push notifications with Allow and Deny actions. Face ID gated, end-to-end encrypted, and they work with the app fully closed. Answer from the couch and the TUI syncs instantly. "Always" rules are scoped, listed, and revocable.

The advisor, first-class

When a watchdog model flags the working agent, the note renders as its own voice block. Forward it to the agent as a steer with one tap, or dismiss it. Nothing the reviewer says gets buried in scrollback.

Subagents, live

The agent hub shows every task-tool worker as a live tile with its current line, token count and calls, plus full transcripts and mid-flight steering. Dispatch new workers from your phone.

Plans & diffs, reviewable

Plan mode renders as structured steps with live progress marks. Edits become real diffs with ±counts and a full-screen review. Request changes or send looks good from anywhere.

Every session, every branch

Resume any stored session with deep full-text search, fork history at any turn, group work into projects, and start scratch sessions that keep themselves tidy. Live Activities put the running turn in your Dynamic Island.

$

Models, roles & cost

Switch models and thinking levels per session, cycle role presets, watch context and spend tick in real time while omp's fallback chains keep the session alive through rate limits.

Two pieces, five minutes

Runs on your machines, pairs like a camera

01

Start the bridge

A small Bun daemon on the machine that runs omp. It owns the omp --mode rpc processes and prints a pairing code.

$
02

Pair your phone

Enter the tailnet address and single-use code. A 256-bit token lands in your Keychain; the bridge keeps only its hash. Multiple machines, one app.

K74F9Q2X
✓ devbox paired · key exchanged
03

Go outside

Tailscale carries the rest. Streams follow you, approvals find your lock screen, and the session never notices you left the desk.

Approval · bash
git push origin main
Allow onceDeny

Nothing relayed,
nothing readable.

Attaché talks straight to your bridge over WireGuard. The optional push relay for lock-screen approvals is a stateless worker you deploy yourself. It forwards ciphertext it cannot read, signs it for Apple's push service, and stores nothing.

  • Direct over your tailnet, no accounts, no third-party servers
  • Push payloads AES-256-GCM encrypted with per-device keys
  • Pairing codes single-use; tokens hashed at rest, revocable
  • MIT licensed front to back: bridge, app, and relay
bridge your relay APNs 📱 Attaché encrypt stores nothing 🔒 decrypted on-device WireGuard your code never leaves your machines