01 Install.02 Login.03 Done.

About

What is shellin?

shellin is a lightweight tool that lets you view and interact with your desktop terminal from an iPhone or iPad. You run the CLI on your machine, open the iOS app, and your shell appears — live, over an encrypted WebRTC connection.

Running AI coding agents like Claude Code, Gemini CLI, OpenCode, or Codex on your desktop? shellin lets you monitor and interact with them from anywhere — check progress, approve actions, or type commands, all from your phone.

Get Started →

Zero configuration

No port forwarding. No SSH config. No static IP. No firewall rules. No router settings. shellin handles the connection for you — encrypted over WebRTC, out of the box.

How does it work?

When you run shellin, the CLI opens a local PTY (pseudo-terminal) and registers itself with the shellin server. The iOS app discovers your session and initiates a WebRTC negotiation through the server.

Once the WebRTC connection is established, terminal I/O flows over the negotiated WebRTC transport instead of ordinary HTTP requests. Keystrokes go in one DataChannel, terminal output comes back through another.

Public core

The core protocol and runtime pieces behind shellin are public in shellin-core. It includes the shared Go packages for protocol messages, control-plane auth, signaling, agent registry behavior, build provenance, and update verification.

The hosted shellin service imports that public module directly, so the audited code is part of the production path rather than a separate reference copy.

View shellin-core on GitHub →

Session flow

01Run shellin in any terminal on your Mac or Ubuntu machine
02Open the shellin app on your iPhone or iPad
03Tap your machine from the session list
04Your terminal appears — type and interact in real time
05Type exit in the top-level shell to end the session
Get Started →

Security

Terminal traffic runs over a WebRTC DataChannel protected by DTLS on the negotiated WebRTC path. The server handles authentication, session coordination, and signaling, but it is not a terminal proxy in the normal data path. Authentication uses short-lived JWT tokens tied to your subscription.