Conductor — Mobile Mirror for Claude Code
A secure mobile mirror to follow and steer a Claude Code session remotely
- 23
- Workspaces parsed
- 791
- Messages processed
- 16
- Bugs fixed (self-audit)
The challenge
Saad relies on Claude Code locally in VSCode for most of his development work, but that ties him to his desk: there’s no way to know, once away from the screen, that a long-running task has finished or that a tool-use approval is pending. Claude Code exposes no official API to query that state remotely. The challenge was to build a reliable mirror of that working session on his phone, without exposing source code to a third-party server, without a fixed shared password, and while honestly scoping the limits of a tool built for a single user on a single machine.
The solution
Conductor was built as a TypeScript monorepo (pnpm workspaces, strict mode) around three components sharing a single @conductor/types package as the source of truth for the wire protocol:
- a NestJS 10 daemon, running as a Windows service, storing local state in better-sqlite3, watching session files with chokidar, and streaming updates over WebSocket;
- an installable Angular 18 PWA for the phone (standalone components, Signals, Angular Material, CodeMirror 6, xterm.js) receiving lockscreen push notifications via web-push/VAPID;
- a VSCode companion extension that watches Claude Code’s own JSONL transcript files and can remotely trigger opening a new conversation or accepting a proposed diff.
The results
With no official API exposing Claude Code’s approval state, Saad documented and embraced a heuristic: watching the session’s JSONL transcript for a characteristic stale-state pattern — an honest, best-effort solution, explicitly labeled "best-effort" rather than guaranteed. He functionally verified the tool against his own real data: 23 workspaces, 249 chat sessions, and 791 messages correctly parsed and displayed, with an end-to-end test confirming all 23 workspace cards rendered with zero console errors. The project remains a single-author, single-machine personal tool — not one with proven long-term daily-driver use.
Methodology and project management
Once the MVP was complete, Saad ran his own four-pass code audit, uncovering 5 critical and 11 high-severity bugs — including the headline approval-notification feature being completely non-functional end-to-end (the service worker was never registered), every chat message rendering twice, and a silent, infinitely-reconnecting WebSocket loop. All 16 findings were fixed the very next day, in a dedicated remediation pass. That discipline of self-verification before trusting a build reflects a habit central to a Tech Lead’s mindset: never ship without first interrogating your own work.
Technical architecture and performance
The daemon binds only to localhost (loopback), with one port for the phone PWA (HTTP + WebSocket) and a second, secret-protected port reserved for the VSCode companion. Reachability from the phone off the local network runs through a Cloudflare Tunnel, needing no port-forwarding or public server — code and prompts never pass through a third-party server, only the tunnel relay does. Security rests on short-lived JWT access tokens paired with bcrypt-hashed rotating refresh tokens, timing-safe secret comparisons, and a 6-digit pairing code expiring after 10 minutes, rather than a fixed shared password.
Common questions about this kind of engagement
More projects
Digi4
Digi4 Prospector — B2B Lead Sourcing Engine
Digi4
MeetScribe — AI Meeting Summarizer
Projet personnel