sandlot/README.md
2026-02-17 07:27:46 -08:00

86 lines
1.8 KiB
Markdown

# sandlot
A CLI for branch-based development using git worktrees and [Apple containers](https://github.com/apple/container). 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](https://bun.sh)
- [container](https://github.com/apple/container) installed and on PATH
- Git
## Install
```bash
git clone https://github.com/your/sandlot
cd sandlot
bun install
bun link
```
## Configure
Set your Anthropic API key in `~/.env`:
```
ANTHROPIC_API_KEY=sk-ant-...
```
This file is loaded automatically on startup. Variables already set in the environment take precedence.
## Usage
Run all commands from inside a cloned git repo.
### Start a session
```bash
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
```bash
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
```bash
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
```bash
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
```
## Project config
Optionally add a `sandlot.json` to your repo root:
```json
{
"vm": {
"cpus": 4,
"memory": "8GB",
"image": "ubuntu:24.04",
"mounts": { "/path/to/deps": "/deps" }
},
"ai": {
"model": "claude-sonnet-4-20250514"
}
}
```