wingman
Coding agents run longer than you sit at a desk. wingman lets you monitor, prompt, and approve real GitHub Copilot CLI sessions from a phone — so a long-running agent doesn’t stall on a permission prompt because you went to make coffee.
How it works
wingmand— a Go daemon on the workstation drives Copilot CLI through its Agent Client Protocol (ACP) server, one subprocess per session. A session manager tracks the full lifecycle — create → steer → events → completion — in a sequence-numbered, replayable event log.relayd— a zero-knowledge relay, deployed on Fly.io, routes end-to-end encrypted frames between daemon and phone. Traffic rides a Noise XX channel (X25519, ChaCha20-Poly1305); the relay sees only ciphertext, and GitHub credentials never leave the dev machine.- Wingman for iOS — a native SwiftUI app for observing and steering sessions, paired once by scanning a QR code.
The safety posture is deliberate: if no paired device answers a permission request, it fails safe to deny after a timeout. An unattended machine can never self-approve a dangerous tool call.
Engineering evidence
- Wire protocol specification — versioned envelope, correlation IDs, sequence numbers with replay
- Architecture decision records — Noise XX over a zero-knowledge relay, the replayable event log, fail-safe deny
- Table-driven Go tests against a hermetic ACP test harness, plus a live Go↔Swift Noise interop test; verified end-to-end on-device against real Copilot sessions