
Sandboxer
Give Claude root access to a disposable machine and let it run autonomously.
Monitor multiple agents live, take over via SSH, or switch to chat UI on mobile.
- Live previews - See all Claude sessions at a glance in a scalable grid layout
- Claude Chat - Mobile-friendly chat UI as alternative to terminal view
- SSH takeover -
ssh -t sandboxer@host sandboxer-shellto take over any session from terminal - Session persistence - All sessions survive restarts via tmux
- Claude Loop - Autonomous mode: create PROMPT.md, start loop, Claude works until done
-
Install Claude Code on a dedicated/disposable machine
-
Run:
claude --dangerously-skip-permissions "clone github.com/anthropics/sandboxer to /home/sandboxer/sandboxer-repo, read CLAUDE.md, then install: deps (python3 tmux ttyd caddy lazygit fzf gemini-cli), copy service files, symlink sandboxer-shell and claude-loop to /usr/local/bin, enable and start services" -
Access at
http://<host>:8080— default:admin/admin -
Change password:
claude --dangerously-skip-permissions "change sandboxer password to YOUR_PASSWORD" -
Clone repos:
claude --dangerously-skip-permissions "clone github.com/user/repo to /home/sandboxer/git/repo"
Warning: This gives Claude complete control of a machine. Only use on a disposable VM without secrets.
Set sandboxer-shell as your SSH client's startup command:
| App | Setting |
|---|---|
| Terminus | Host → Startup Command → sandboxer-shell |
| Blink | Config → Startup Command → sandboxer-shell |
Then connect via SSH — you'll get folder picker → session picker → attached.
Data Storage
All session and message data is stored in SQLite at /etc/sandboxer/sandboxer.db:
Sessions table:
CREATE TABLE sessions (
name TEXT PRIMARY KEY,
workdir TEXT NOT NULL,
type TEXT NOT NULL, -- 'claude', 'chat', 'bash', 'lazygit'
mode TEXT, -- 'cli' (terminal) or 'chat' (web UI)
title TEXT,
claude_session_id TEXT, -- For Claude's --resume/--session-id
created_at TEXT,
updated_at TEXT
);Sessions use tmux for terminal persistence.
Built with webtui