sandlot/README.md
Chris Wanstrath 5d7bf302f2 Add sandlot CLI for branch-based dev with worktrees and Apple containers
Implements all 7 commands: new, save, push, list, open, stop, rm.
Uses Commander for CLI parsing, Anthropic SDK for AI commit messages
and merge conflict resolution, and Apple container for VMs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 20:15:29 -08:00

1.6 KiB

sandlot

A CLI for branch-based development using git worktrees and Apple containers. Each branch gets its own worktree and isolated VM. Commits are auto-summarized by Claude. Merging cleans everything up.

Prerequisites

  • macOS on Apple Silicon
  • Bun
  • container installed and on PATH
  • Git

Install

git clone https://github.com/your/sandlot
cd sandlot
bun install
bun link

Configure

Set your Anthropic API key:

export ANTHROPIC_API_KEY=sk-ant-...

Optionally add a sandlot.json to your repo root:

{
  "vm": {
    "cpus": 4,
    "memory": "8GB",
    "image": "ubuntu:24.04",
    "mounts": { "/path/to/deps": "/deps" }
  },
  "ai": {
    "model": "claude-sonnet-4-20250514"
  }
}

Usage

Start a session

sandlot new fix-POST

Creates a worktree at .sandlot/fix-POST/, boots a VM mapped to it, and drops you into a shell.

Save your work

sandlot save                          # AI-generated commit message
sandlot save "wip: rough validation"  # manual message

Stages all changes, commits, and pushes to origin.

Merge and tear down

sandlot push main

Merges the session branch into the target, pushes, then tears down the VM, worktree, and branch. If there are merge conflicts, Claude resolves them and asks for confirmation.

Other commands

sandlot list           # show all sessions
sandlot open <branch>  # re-enter a session's VM
sandlot stop <branch>  # stop a VM without destroying it
sandlot rm <branch>    # tear down without merging