Inspiration

Vibe coding is changing how we build software, but it still keeps us tied to the desk. We were inspired by physical AI coding controllers that make agent activity feel tangible, and asked: what if those controls moved with us on devices we already carry?

What it does

Vibe Signal connects Codex to an iPhone and Apple Watch. It displays the agent’s live state—idle, working, waiting, completed, or error—and uses colors and haptics to make each state recognizable at a glance.

From the Watch, users can approve or deny requests, continue or retry a turn, stop an active task, and send new prompts by voice. Pairing requires only a QR scan, and communication stays on the local Wi-Fi network.

How we built it

We built Vibe Signal as three connected layers:

  • A TypeScript VS Code extension receives Codex lifecycle events through hooks.
  • A local WebSocket server converts those events into a consistent state protocol and accepts remote commands.
  • Native SwiftUI apps for iPhone and Apple Watch display status and send actions back through WatchConnectivity.

The iPhone acts as the bridge between the desktop and Watch. Pairing data includes the computer’s local address, port, and authentication token. Voice recordings travel from the Watch to the iPhone for transcription, then return to Codex as prompts.

Challenges we ran into

The hardest challenge was making several systems behave like one reliable product. Codex hooks, WebSockets, iOS background execution, WatchConnectivity, speech recognition, audio playback, and Xcode signing all have different lifecycle constraints.

We had to handle stale state, reconnect dropped sockets, prevent duplicate commands, keep the iPhone bridge active in the background, and make audio continue after the Watch screen dims. We also worked through delayed Watch file transfers, speech-recognition timing, and compatibility with older generated Xcode projects.

Accomplishments that we're proud of

We are most proud that Vibe Signal closes the complete coding loop from the wrist. A user can describe a change by voice, send it to Codex, follow the agent’s progress, respond when it needs input, and receive the result without returning to the computer.

We also built a local-first architecture with QR pairing, token authentication, live state synchronization, background connectivity, distinct haptics, and high-quality spoken responses.

What we learned

We learned that a useful AI companion does not need to reproduce the entire desktop interface. A small number of clear states and contextual actions can communicate what matters while reducing distraction.

We also learned how important lifecycle design is across Apple devices. A connection that works while both apps are open is only the beginning; background suspension, audio sessions, network changes, and delayed Watch transfers must all be treated as normal operating conditions.

What's next for Vibe Signal

Next, we want to add a secure cloud relay so Vibe Signal can work beyond the local Wi-Fi network. We also plan to support more coding agents, multiple computers, richer notifications, Dynamic Island and Live Activities, and a macOS menu bar companion.

The larger vision is to make agent state available wherever the developer is—not by turning every device into a remote desktop, but by delivering the right signal and controls at the right moment.

Built With

Share this project:

Updates