Get PocketShell running in 5 minutes.
- Node.js 18+ installed
- Claude CLI installed and authenticated (if you want to use Claude mode)
- GitHub Copilot CLI installed (if you want to use Copilot mode)
- A TOTP authenticator app on your phone (Google Authenticator, Authy, etc.)
cd pocketshell
npm run setupThis checks your prerequisites and installs dependencies. Fix any issues it reports.
npm startYou should see:
┌────────────────────────────────────────────────────────────┐
│ PocketShell is running │
├────────────────────────────────────────────────────────────┤
│ Landing: http://localhost:3000 │
│ Claude: http://localhost:3000/desktop/claude │
│ Copilot: http://localhost:3000/desktop/copilot │
│ Terminal: http://localhost:3000/desktop/terminal │
└────────────────────────────────────────────────────────────┘
Open http://localhost:3000 in your browser. You'll be redirected to the setup page.
- Create a password (min 6 characters)
- Scan the QR code with your authenticator app (or enter the secret key manually)
- Enter the 6-digit code from your authenticator to confirm
- Click Complete Setup — you're logged in
Your credentials are saved to
.auth.json. Don't commit this file.
After login, you'll see the landing page with three options:
- Claude Code — AI-powered coding assistant
- GitHub Copilot — Copilot CLI assistant
- Terminal — Plain bash shell
Click any card to launch that mode. The landing page auto-detects your device and links to desktop or mobile view.
- Landing page:
http://localhost:3000 - Mobile on same network:
http://<your-ip>:3000 - No-auth mode:
npm run start:noauth(skips login — trusted networks only)
# Install Dev Tunnels CLI
curl -sL https://aka.ms/DevTunnelCliInstall | bash
# Login with GitHub
devtunnel user login -g -dnpm run start:remoteThis starts the server and tunnel together. The tunnel URL is printed in the output — bookmark it on your phone.
Press Ctrl+C to stop both.
- Start server:
npm start(local) ornpm run start:remote(remote) - Open the URL on your device
- Login with password + authenticator code
- Pick a mode from the landing page
| Control | Action |
|---|---|
| View toggle (status bar) | Switch between Reader and Terminal view |
| A+ / A- | Adjust font size |
| Quick actions | Tap 1-4, Yes/No, Esc, Tab, arrows, Ctrl+C, Enter |
| Input bar | Type and send text |
| Copy button | Copy tool output (reader view) |
| Restart | Restart the current mode's process |
| Control | Action |
|---|---|
| Type normally | All keystrokes forwarded to the terminal |
Ctrl+Shift+R |
Restart the current mode's process |
rm .auth.json
npm start
# Setup page will appear againTunnels expire after 30 days. The start --remote command auto-creates a new one if needed.
The client auto-reconnects every 2 seconds. Check that the server is running.
Switch to Terminal view (tap the toggle button). The reader parser works best with standard CLI output.
Find your machine's IP (hostname -I) and open http://<ip>:3000. On WSL2, you may need Windows port forwarding:
# PowerShell (admin) on Windows
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=$(wsl hostname -I)