vvbox
Experimental project: lightweight sandbox runner for macOS 26.
vvbox creates a git worktree snapshot, runs commands inside an isolated container, and returns a patch you can review and apply. It’s designed for safe automation and minimal orchestration overhead.
Why
- Keep your main agent or orchestration layer restricted (no shell, no writes).
- Run risky tasks in a separate container VM with explicit mounts.
- Produce reviewable patches instead of writing directly to your repo.
- Replace heavyweight compose stacks with a small, readable config.
How it works
- Snapshot repo into a worktree under
~/.vvbox/worktrees/<run-id> - Run the command in a container with the snapshot mounted at
/work - Optionally start simple service containers from config
- Generate a patch from the snapshot
- Apply the patch to your original repo when ready
Requirements
- macOS 26 (Apple silicon)
- Apple
containerCLI installed
Install (dev)
Quick start
# Initialize default config
# Run a task in a sandbox
# Run directly in an existing worktree (no snapshot/patch)
# Review + apply patch
Config
vvbox reads config in this order:
~/.vvbox/config.yaml(or.yml,.json)vvbox.yaml(or.yml,.json) in repo root--config <path>override
Example vvbox.yaml:
image: ubuntu:latest
network: default
workdir: /work
env:
CI: "1"
ports:
- "8080:8080"
volumes:
- source: vvbox:cache
target: /cache
pre_install:
- apt-get update
- apt-get install -y git
run:
- npm install
- npm test
services:
- name: db
image: postgres:16
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: app
ports:
- "5432:5432"
volumes:
- source: vvbox:pgdata
target: /var/lib/postgresql/data
Notes:
pre_installandrunexecute in onesh -lcshell.runcan be a string or list of commands.vvbox:<name>creates a persistent volume at~/.vvbox/volumes/<name>.
CLI highlights
vvbox run— run a sandboxed task (use--diffto generate a patch)vvbox apply— apply patch (asks for confirmation; use--yesto skip)vvbox attach— attach to a kept container (--keep)vvbox logs— view run logsvvbox services up/down/status/logs— manage simple service containersvvbox up/vvbox down— shortcuts for services
Security model
- The main agent stays restricted.
- vvbox runs tasks in a separate container VM with explicit mounts.
- Changes are returned as patches for review.
Troubleshooting
- If the container system isn’t running, vvbox calls
container system startautomatically. - If an image lacks
/bin/sh, use--cmdwith the correct shell or-- <args...>. vvbox applyrequires a clean tree unless you pass--allow-dirty.
Docs
See the full docs in docs/:
docs/overview.mddocs/config.mddocs/cli.mddocs/security.mddocs/troubleshooting.md