127.0.0.0/8 has 16M loopback IPs going to waste, I gave each git branch its own
I love claude code, often running multiple sessions from multiple worktrees. but I quickly realized I cannot run multiple dev servers because of port conflicts. Changing ports kinda works, but if you need to spin up multiple services that interact with each other, service discovery can get messy
127.0.0.0/8 gives you 16M loopback IPs and they're all just sitting there, so I built a thing that hashes your branch name into a 127.x.x.x and intercepts bind() so everything just works on the same port but different ip.
Under the hood it's just syscall hacks. DYLD_INSERT_LIBRARIES on macos & LD_PRELOAD on linux to rewrite bind()/connect() + loopback aliases and /etc/hosts entries so you also get a nice local hostname like branch.project.silo. There's also an eBPF backend for linux that I'm still working on. I havent tested for every environment and the interception layer is definitely unsafe-heavy (sorry), but it's been working for me so wanted to share.
would love to hear what you think.
GitHub: https://github.com/silo-rs/silo