Go to file
2026-04-11 15:12:33 -07:00
completions Add init and cd shell integration commands 2026-03-11 14:34:49 -07:00
src Add hosts config for local network resolution 2026-04-11 15:12:33 -07:00
test Add markdown test document covering common syntax features 2026-02-20 08:55:04 -08:00
.gitignore Add sandlot CLI for branch-based dev with worktrees and Apple containers 2026-02-16 20:15:29 -08:00
.gitkeep Initial commit 2026-02-16 19:23:56 -08:00
.npmrc npm registry 2026-02-24 09:43:18 -08:00
bun.lock Reorganize CLI commands into groups using commander v14, upgrade commander to 14.0.3 2026-02-21 12:23:08 -08:00
CLAUDE.md Rework squash to collapse commits in-place instead of merging 2026-04-10 08:12:57 -07:00
package.json 0.0.51 2026-04-10 23:31:46 -07:00
README.md Add hosts config for local network resolution 2026-04-11 15:12:33 -07:00
tsconfig.json Add sandlot CLI for branch-based dev with worktrees and Apple containers 2026-02-16 20:15:29 -08:00

sandlot

A CLI for branch-based development using git worktrees and Apple Container. Each branch gets its own worktree and isolated container.

Prerequisites

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.