2.1 KiB
sandlot
A CLI for branch-based development using git worktrees and Apple Container. Each branch gets its own worktree and isolated container.
Prerequisites
- macOS on Apple Silicon
- Bun
- Apple Container (
brew install container) - Git
First-time setup
After installing Apple Container, run container system start in your terminal. It will prompt to install the Kata kernel — say yes. This is a one-time step.
Install
git clone https://github.com/your/sandlot
cd sandlot
bun install
bun link
alias sl=sandlot
Usage
Run all commands from inside a cloned git repo.
Start a session
sandlot new fix-POST
Creates a worktree, boots a container, and launches Claude Code inside it.
Other commands
sandlot list # show all sessions
sandlot open <branch> # re-enter a session
sandlot stop <branch> # stop a container without destroying it
sandlot rm <branch> # tear down session (container, worktree, local branch)
Use git directly for commits, pushes, merges, etc. The worktree is a normal git checkout.
Configuration
sandlot config # show all options and current values
sandlot config memory # show current memory setting
sandlot config memory 32G # set container memory limit
Config is stored in ~/.config/sandlot/config.json.
| Key | Default | Description |
|---|---|---|
memory |
16G |
Container memory limit (e.g. 4G, 16G, 32G, 64G) |
hosts |
[] |
Hostnames to resolve on the host and inject into the container |
Local network hosts
The container can't resolve .local (mDNS) hostnames natively. To make local network hosts reachable from inside the container, add them to the hosts config:
sandlot config hosts add claude.toes.local
sandlot config hosts add myserver.local
sandlot config hosts rm myserver.local
sandlot config hosts # list configured hosts
Hostnames are resolved on the Mac via mDNS and written to the container's /etc/hosts every time the VM starts.