Web interface for Claude Code CLI - access from mobile or any browser.
- Chat Interface - Streaming responses from Claude
- File Explorer - Browse and view project files
- Terminal Output - See commands Claude executes
- Project Selector - Switch between multiple projects
- Session Management - List, switch, resume Claude sessions
- Slash Commands - Autocomplete for
/commandswith keyboard navigation - Mobile Responsive - Works on iPhone, iPad, desktop (iOS Safari supported)
- Dark Theme - Developer-friendly interface
- Provider Abstraction - Switch between Claude CLI and SDK backends
- Bun runtime
- Claude CLI installed and authenticated
- Node.js 18+ (for some dependencies)
- Clone and install
cd claude-remote
bun install- Configure environment
cp .env.example .envEdit .env:
PORT=3001
AUTH_TOKEN=your-secret-token-here
DEFAULT_PROJECT_DIR=/path/to/your/projects- Start the server
bun run dev- Open in browser
- Desktop: http://localhost:5555
- Mobile: Use your local IP (e.g. http://192.168.1.x:5555)
- Enter your token and start chatting!
For secure remote access:
- Install Tailscale on your server and devices
- Access via Tailscale IP:
http://100.x.x.x:5555
claude-remote/
├── client/ # React frontend (Vite)
│ └── src/
│ ├── components/ # UI components
│ ├── hooks/ # Custom React hooks
│ └── stores/ # Zustand state stores
├── server/ # Bun backend (Elysia + WebSocket)
│ └── src/
│ ├── claude/ # Claude integration
│ │ ├── providers/ # CLI & SDK implementations
│ │ └── types.ts # Provider interface
│ ├── services/ # Business logic
│ └── middleware/ # Auth etc.
├── shared/ # Shared TypeScript types
│ └── types.ts # WebSocket event types
├── .brain/ # Project knowledge (AI context)
└── docs/plans/ # Design & implementation specs
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite 6, TypeScript, Tailwind CSS |
| Backend | Bun, Elysia, WebSocket |
| State | Zustand 5 |
| Claude | CLI (default) or Agent SDK (via CLAUDE_PROVIDER env) |
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 3001 |
AUTH_TOKEN |
Authentication token | required |
DEFAULT_PROJECT_DIR |
Projects directory | ~/projects |
CLAUDE_PROVIDER |
cli or sdk |
cli |
Both providers use Claude CLI's OAuth authentication - no API key needed!
# Run both server and client
bun run dev
# Run server only
bun run dev:server
# Run client only
bun run dev:client
# Build for production
bun run build- Token authentication protects access
- Bind to localhost by default
- File access restricted to project directories
- Use Tailscale or VPN for remote access (not public internet)
Make sure Claude CLI is installed and in your PATH:
which claude
claude --versionCheck that:
- Server is running on correct port
- Token matches between client and server
- No firewall blocking WebSocket connections
Configure DEFAULT_PROJECT_DIR in .env or ensure projects exist in common directories:
~/projects~/code~/dev
MIT