Udderly instant workspaces.

yes, it's called cow. as in Copy-On-Write. we have no regrets.

Clone your entire git repo β€” node_modules, build outputs, .env files and all β€” in milliseconds with near-zero disk overhead. Point an AI coding agent at each workspace and let them work in parallel.

🍎 macOS Β· APFS ⚑ millisecond clones πŸ’Ύ near-zero disk overhead πŸ¦€ written in Rust πŸ€– AI-agent ready πŸ†“ MIT licence

Every other approach is udderly wrong.

Running multiple AI coding agents in parallel means multiple isolated workspaces. Here is what you are up against otherwise.

🌿

git worktrees

Shares the object store but not node_modules, build artefacts, or .env files. Every new worktree needs a full npm install. Agents step on each other's lock files. Works at a small scale; falls apart fast.

βœ— doesn't scale
πŸ“¦

full clone

Copying 2 GB of node_modules four times over takes minutes and burns 8 GB of disk. You will run df -h with increasing alarm. Also slow to delete when you are done.

βœ— slow and disk-hungry
🐳

containers / VMs

Heavyweight. Minutes to spin up. No native macOS toolchains. Your Xcode build does not work in a Linux container. Neither does your iOS simulator. Wrong layer of abstraction entirely.

βœ— wrong layer of abstraction

Copy-On-Write, from the filesystem up.

APFS has had block-level CoW cloning since macOS High Sierra. cow just wires it up with a nice interface.

1

Clone with clonefile(2)

Uses the same syscall Time Machine uses. A byte-identical copy of your entire repo directory in one call. No data is physically duplicated on disk until a file actually changes.

2

Checkout or create a branch

Optionally check out an existing branch or create a new one in the workspace. It is a fully independent git repo with its own HEAD, index, and working tree.

3

Clean up runtime artefacts

Removes .pid, .sock, and .socket files that should not be shared between workspaces. Reads .cow.json for project-specific cleanup rules and post-clone commands.

4

Point your agent at it

Each workspace lands in ~/.cow/workspaces/{name}. Open Claude Code, Cursor, or Aider in each one. They work in complete isolation until you extract their changes.

your main repo node_modules/ src/ .env .git/ dist/ 2.1 GB on disk cow create Β· ~40ms Β· ~0 disk agent-1 feat/auth πŸ€– Claude Code ~0 extra disk agent-2 feat/api πŸ€– Cursor ~0 extra disk agent-3 feat/ui πŸ€– Aider ~0 extra disk agent-4 feat/docs πŸ€– Claude ~0 extra disk

Five commands. That is the whole thing.

Deliberately minimal. No config files to maintain, no daemons to manage, no subscriptions.

# Create a named workspace on a new branch $ cow create feat-auth --source ~/my-project --branch feat/auth βœ“ Detected APFS filesystem βœ“ Detected git repository Cloning via APFS copy-on-write… βœ“ Cloned in 41ms βœ“ Created branch 'feat/auth' βœ“ Created workspace 'feat-auth' β†’ ~/.cow/workspaces/feat-auth   # Omit the name and it auto-generates agent-1, agent-2, … $ cow create --source ~/my-project βœ“ Created workspace 'agent-1' β†’ ~/.cow/workspaces/agent-1
$ cow list NAME BRANCH STATUS CREATED ─────────── ──────────────── ───────── ────────────── agent-1 feat/auth clean 5 minutes ago agent-2 feat/api dirty 8 minutes ago feat-auth feat/auth clean 12 minutes ago   # JSON output for scripts and MCP tools $ cow list --json [{"name":"agent-1","branch":"feat/auth","vcs":"git",…}]
# Interactive: prompts if workspace has uncommitted changes $ cow remove agent-2 Workspace 'agent-2' has uncommitted changes. Remove anyway? [y/N]: y βœ“ Removed workspace 'agent-2'   # --force skips the prompt entirely $ cow remove --force agent-1 feat-auth βœ“ Removed workspace 'agent-1' βœ“ Removed workspace 'feat-auth'   # Remove all workspaces from a given source repo $ cow remove --all --force --source ~/my-project
# Export changes as a patch file $ cow extract agent-2 --patch ~/auth-changes.patch βœ“ Wrote patch to ~/auth-changes.patch   # Or push the branch to origin for a PR $ cow extract agent-2 --branch feat/auth-review Pushing 'feat/auth-review' to origin… βœ“ Branch pushed to origin/feat/auth-review   # Then clean up the workspace $ cow remove --force agent-2
$ cow status agent-2 Workspace: agent-2 Path: ~/.cow/workspaces/agent-2 Source: ~/my-project VCS: git Branch: feat/api Status: dirty Created: 8 minutes ago   M src/api/routes.rs A src/api/middleware.rs   # Also works from inside a workspace directory $ cd ~/.cow/workspaces/agent-2 && cow status

cow πŸ„ vs the alternatives.

Spoiler: the one named after a farm animal wins on every metric that matters for parallel AI development.

Feature cow πŸ„ git worktree full clone
Clone time (2 GB repo) ~40ms ~1s (no modules) 3–8 minutes
Extra disk per workspace ~0 until modified ~0 (no modules) full copy Γ— N
node_modules included βœ“ βœ— βœ“
Isolated .env files βœ“ βœ— (shared) βœ“
Build artefacts included βœ“ βœ— βœ“
Independent git history βœ“ βœ“ βœ“
macOS native toolchains βœ“ βœ“ βœ“
jj (Jujutsu) support βœ“ n/a manual
MCP server built in βœ“ βœ— βœ—
Platform requirement macOS + APFS any OS any OS

A first-class MCP server.

Run cow mcp to expose workspace management as MCP tools. Your AI orchestrator can create and tear down workspaces without shelling out.

Add to Claude Code

Drop this snippet into your ~/.claude/claude.json or a project-local .claude/claude.json to let Claude manage its own workspaces on your behalf.

Exposes four MCP tools: cow_create, cow_list, cow_remove, cow_status.

Communicates over stdio β€” no ports, no background daemons, no port conflicts.

// ~/.claude/claude.json { "mcpServers": { "cow": { "command": "cow", "args": ["mcp"] } } }

Ready to join the herd?

macOS with APFS required. Apple Silicon and Intel both supported via a universal binary.

🍺 Homebrew

# Add the tap once brew tap joeinnes/tap # Install cow brew install cow # Verify cow --version

πŸ¦€ Cargo

# Crate is cow-cli, binary is cow cargo install cow-cli # Verify cow --version

Requirements: macOS 10.13 High Sierra or later (clonefile(2) became stable in 10.13). Works on Apple Silicon and Intel β€” the Homebrew formula installs a universal binary. Linux and Windows are not supported; the CoW mechanism requires APFS.