Developer reference

Architecture, protocols, and runtime flow.

A high-level technical map of how Vibe Remote reaches a development machine without turning the cloud into the development environment.

React + TypeScriptMobile PWAGoRelay and Mac agentACP + PTYAgent and terminal adaptersSwiftmacOS screen helper
Runtime architecture

The phone is the client. The Mac is the execution boundary.

The hosted service authenticates and routes. Source code, processes, provider credentials, Git state, and SSH keys remain on the user’s machine.

01 · Client

Phone PWA

Your phone presents the remote workspace and keeps its private device key locally.

React · WebCrypto · IndexedDB
Encrypted
02 · Hosted relay

Routes, never executes

The relay authenticates devices and forwards encrypted records. It never clones or runs your code.

Go · OAuth · WebSocket
Encrypted
03 · Execution

Mac agent

Your Mac owns every process, file operation, terminal, credential, and screen permission.

Go · ACP · PTY · Git · SSH
Screen media takes a separate pathDirect WebRTC is preferred. TURN is only the encrypted fallback.
No cloud workspace

The relay does not clone repositories or execute coding agents.

No public Mac port

The agent connects outward; local APIs remain on loopback.

One secure connection

Agent, terminal, file, and control events travel in separate channels.

Data paths

Each surface uses the interface that preserves the most context.

Agent sessions

Structured plans, tool calls, approvals, diffs, MCP activity, and responses.

PWA → encrypted mux → Mac agent → ACP / transcript adapter

Terminal and SSH

Raw terminal bytes, resize events, scrollback replay, and existing SSH configuration.

PWA → encrypted mux channel → Mac-owned PTY

Files and Git

Directory listing, bounded file reads, syntax views, diffs, stage, commit, and push.

PWA request → Mac agent filesystem / Git service

Screen control

H.264 video over DTLS-SRTP with touch, keyboard, and modifier input.

Phone ↔ direct WebRTC ↔ Swift helper; TURN only when direct fails
Session lifecycle

A session stays owned by the laptop.

Closing the PWA does not move or recreate the process. The phone reconnects to the Mac-owned session and requests current state.

  1. 01

    Create

    The phone sends a session request with agent kind, working directory, and optional arguments.

  2. 02

    Own

    The Mac agent starts the process or ACP adapter. Execution and credentials remain on the Mac.

  3. 03

    Stream

    Independent mux channels carry structured events, terminal bytes, and control responses concurrently.

  4. 04

    Recover

    Session metadata and bounded history let the phone reconnect without moving the underlying process.

CLI reference

Install once. Operate with four commands.

The signed package installs the CLI and background service. Start with setup; the remaining commands cover everyday operation and recovery.

01Install package02Run setup03Scan QR04Open PWA
Command reference

Copy a command and run it in Terminal on the connected Mac.

01

First-time connection

Authorize this Mac in the browser, start the background agent, and create the first phone pairing QR.

vibe-remote setup
02

Connection status

Read the local agent status and relay connection state.

vibe-remote status
03

Pair another phone

Create a new single-use, five-minute QR code from an already connected Mac.

vibe-remote pair
04

Diagnostics

Check identities, LaunchAgent registration, helper availability, and relay health.

vibe-remote doctor

Connect the Mac you already develop on.

Install the agent, pair the phone, and keep the local toolchain as the source of truth.

Download for Mac