Remotely control Claude Code sessions running on your desktop PC from a mobile device via Tailscale VPN.
RemoCoder lets you connect to Claude Code sessions on your desktop from your iPhone or Android device. Communication is secured by Tailscale VPN (WireGuard), with UUID token authentication on top.
Mobile App (React Native / Expo)
│
│ WebSocket over Tailscale VPN
│
Desktop App (Electron)
│
│ node-pty
│
Claude Code process
| Component | Technology |
|---|---|
| Desktop app | Electron + node-pty + ws |
| Mobile app | React Native (Expo) + WebView + xterm.js |
| Terminal UI | xterm.js (inside WebView) |
| Transport | WebSocket over Tailscale VPN |
| Auth | UUID token |
remocoder/
├── packages/
│ ├── shared/ # Shared type definitions
│ ├── desktop/ # Electron desktop app
│ ├── mobile/ # React Native mobile app (Expo)
│ └── cli/ # CLI tool to register external Claude sessions
- Node.js v18+
- pnpm v9+
- Tailscale installed and logged in on both desktop and mobile devices
- Claude Code installed on the desktop
pnpm install# Development
pnpm dev
# Build distributable
pnpm --filter @remocoder/desktop dist:mac # macOS
pnpm --filter @remocoder/desktop dist:win # Windows
pnpm --filter @remocoder/desktop dist:linux # LinuxThe app runs in the system tray and displays your Tailscale IP and the auth token to enter in the mobile app.
# Start Expo dev server
pnpm mobile
# Run on iOS
pnpm mobile:ios
# Run on Android
pnpm mobile:android- Start the desktop app — it appears in the system tray.
- Note the Tailscale IP and Auth Token shown in the tray menu.
- Open the mobile app and enter the IP and token on the Connect screen.
- Tap Connect — a full xterm.js terminal opens, connected to Claude Code on your desktop.
- All traffic runs inside the Tailscale VPN (WireGuard encryption).
- A UUID token is required on each connection (5-second auth timeout).
- The WebSocket port is only exposed within the Tailscale network, not to the public internet.
pnpm test| Layer | Package |
|---|---|
| Desktop framework | Electron 30 |
| PTY | node-pty |
| WebSocket server | ws |
| Mobile framework | React Native 0.83 + Expo 55 |
| Terminal UI | xterm.js 5 + xterm-addon-fit |
| Navigation | expo-router |
| Build system | Turborepo + pnpm workspaces |
MIT