silo

Git worktrees let you work on multiple branches at once, but every worktree shares the same localhost. When two dev servers try to bind the same port, one fails.

worktree-a $ npm run dev
→ listening on localhost:3000       ✓

worktree-b $ npm run dev
→ Error: port 3000 already in use  ✗

Silo gives each worktree its own loopback IP. Prefix your command with silo and every worktree can bind the same port without conflict.

worktree-a $ silo npm run dev
→ listening on localhost:3000       ✓  (127.0.1.1)

worktree-b $ silo npm run dev
→ listening on localhost:3000       ✓  (127.0.1.2)

No code changes. No config files. No containers.

curl -fsSL https://setup.silo.rs | sh
guides

browser access, databases, and other things outside the silo session.

git worktrees

why port conflicts happen in worktrees and how silo fixes them.

how it works

IP hashing, syscall interception, and the preload/eBPF backends.

github/docs