https://github.com/fipso/claudehouse
https://github.com/fipso/claudehouse
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/fipso/claudehouse
- Owner: fipso
- Created: 2026-03-25T22:30:40.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-26T16:39:37.000Z (4 months ago)
- Last Synced: 2026-03-26T21:26:06.229Z (4 months ago)
- Language: Go
- Size: 1.54 MB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# claudehouse
An infinite canvas terminal multiplexer. Spawn, arrange, and resize terminal windows freely on a 2D canvas with smooth zoom and pan.
Built with [Raylib](https://www.raylib.com/) + [Ghostty](https://ghostty.org/) terminal emulation.

## Sandbox
Terminals can optionally run inside a sandbox powered by [claudebox](https://github.com/fipso/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](https://github.com/fipso/claudebox) for details on how the sandbox works and standalone CLI usage.
### Sandbox Profiles
Configure named sandbox profiles in `config.toml` to control network access and filesystem mounts:
```toml
[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 to `false` to 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 to `rw`. 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).
## Configuration
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.
```toml
# 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"
```
## Keybinds
### Canvas (no terminal focused)
| 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 |
### Terminal (focused)
| 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 |