Run several coding agents against the same repo without their databases, ports, or services colliding.
Check out an old commit and have the database and installed packages match that exact point in history.
Give each git worktree its own fully provisioned Linux machine that forks in under a second.
Open a clickable desktop inside an isolated machine over VNC to inspect a running app.
| heyito/moo | 77wilnd/aemeath_withclaude | azw413/glass | |
|---|---|---|---|
| Stars | 77 | 77 | 79 |
| Language | Rust | Rust | Rust |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 4/5 | 3/5 | 4/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires an Apple Silicon Mac and Homebrew, Linux hosts are not yet supported and the snapshot format may still change.
moo gives every git branch, worktree, or coding agent attempt its own isolated Linux machine, complete with database, ports, packages, and services, and it saves that machine's state per commit so checking out old code restores the matching runtime. The README's line for it: git versions files, moo versions the machine. The problem it targets is running several coding agents against one repository at once. A git worktree isolates files, but the database, environment variables, installed packages, and running services still collide between them. Teams often patch this with a stack of separate tools: worktrees, a port-offset script.env symlinks, a database-per-branch tool, and Docker Compose project-name hacks. moo replaces that stack with two commands, git worktree add followed by moo new, and gives each machine full copy-on-write isolation as a lightweight Linux microVM that can fork in under a second. The whole tool is one noun, the machine, and four verbs. moo new creates or restores a machine, booting a saved snapshot for the current commit if one exists, or the live state, or a fresh copy from the base image. moo run executes a command inside the machine with behavior similar to docker exec, keeping started services running between calls. moo save snapshots the machine's state and tags it with the current commit, acting like a git commit for the runtime. moo drop destroys a live machine while its saved snapshots survive unless explicitly removed. The working tree also follows automatically: tracked and untracked-but-not-ignored files sync into the machine, while gitignored files like node_modules are left untouched. Installation is a signed prebuilt binary fetched with a shell script, requiring an Apple Silicon Mac and Homebrew, with a from-source path that additionally needs Rust. The project also ships four Claude Code or Cursor agent skills that teach a coding agent the full workflow, and an optional headless desktop can be provisioned inside a machine over VNC. The tool is currently alpha, macOS Apple Silicon only, with Linux hosts planned and the snapshot format still subject to change before a 1.0 release.
Gives every git branch or coding agent its own isolated Linux machine whose full runtime state is saved and restored per commit.
Mainly Rust. The stack also includes Rust, macOS Apple Silicon, Linux microVM.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.