Git Worktrees without Port Conflicts
The problem
Git worktrees isolate your code, but not the network. Every worktree shares the same localhost, so when two dev servers try to bind port 3000, one fails.
~/project/.worktrees/feature-a $ npm run dev → listening on localhost:3000 ✓ ~/project/.worktrees/feature-b $ npm run dev → Error: port 3000 already in use ✗
The fix
Prefix your command with silo.
~/project/.worktrees/feature-a $ silo npm run dev → listening on localhost:3000 ✓ (127.0.1.1) ~/project/.worktrees/feature-b $ silo npm run dev → listening on localhost:3000 ✓ (127.0.1.2)
Each worktree gets its own loopback IP. Your app still thinks it binds to localhost:3000. Silo transparently rewrites the address at the syscall level. No code changes, no config files, no containers.
Install
curl -fsSL https://setup.silo.rs | sh