86 lines
1.8 KiB
Markdown
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"
|
|
}
|
|
}
|
|
```
|