An infinite canvas terminal multiplexer. Spawn, arrange, and resize terminal windows freely on a 2D canvas with smooth zoom and pan.
Built with Raylib + Ghostty terminal emulation.
Terminals can optionally run inside a sandbox powered by claudebox. Toggle sandbox mode with Alt+S — sandboxed terminals get an orange border and run with gVisor syscall isolation + pasta network namespacing. See the claudebox README for details on how the sandbox works and standalone CLI usage.
Configure named sandbox profiles in config.toml to control network access and filesystem mounts:
[sandbox.default]
mount_home = false
allowed_lan_ranges = ["192.168.1.0/24"]
mounts = [
"/home/user/.claude",
"/home/user/.claude.json",
"/home/user/code/myproject",
"/data/datasets:ro",
]- mount_home — When
true(default), the full home directory is mounted read-write. Set tofalseto hide it and use explicit mounts instead. - allowed_lan_ranges — CIDR ranges to allow through the LAN firewall (all private IPs are blocked by default).
- mounts — Bind mount paths in
"/path:mode"format. No suffix defaults torw. Supports files and directories. Symlinks are resolved automatically.
The ~/.config/claudehouse/ directory is always mounted read-only inside the sandbox (for the MITM proxy CA cert).
Claudehouse reads its config from ~/.config/claudehouse/config.toml. An example config is generated on first run. Invalid config will cause the app to exit with an error.
# Custom font (leave empty for built-in JetBrains Mono Nerd Font)
# font = "/path/to/font.ttf"
grid_size = 50.0 # canvas grid point distance in pixels
snap_to_grid = true # snap terminals to grid on release
zoom_to_fit_gap = 100 # pixel gap for Alt+E (zoom to fit)
fill_viewport_gap = 40 # pixel gap for Alt+F (fill viewport)
default_sandbox_profile = "default"| Key | Action |
|---|---|
| Double-click | Create new terminal |
| Click | Focus terminal |
| Alt+Click | Move terminal |
| Right-click drag | Select multiple terminals |
| Scroll | Zoom in/out |
| Arrow keys | Pan camera |
| Alt+HJKL | Focus nearest terminal |
| Alt+Plus/Minus | Zoom in/out (large steps) |
| Alt+S | Toggle sandbox mode |
| Key | Action |
|---|---|
| 2x Esc | Unfocus terminal |
| Alt+HJKL | Navigate to adjacent terminal |
| Alt+E | Zoom camera to fit terminal |
| Alt+F | Resize terminal to fill viewport |
| Alt+Enter | Spawn new terminal to the right (same size) |
| Alt+Q | Close terminal |
| Alt+Plus/Minus | Zoom in/out |
| Alt+S | Toggle sandbox mode |
| Drag edge | Resize terminal |
