Run ten local projects without a single port conflict
Every developer who keeps more than three projects on their machine knows the message: EADDRINUSE: address already in use :::3000. Two Next.js apps both want port 3000, a Vite app grabbed 5173 yesterday and never let go, and an API you forgot about is still listening after a crash.
Why it keeps happening
Frameworks pick a default port and assume they are alone. When they are not, some quietly move to the next port, others crash, and you end up with a mental map of “which app is on which port” that is wrong half the time.
Give every app its own port, and keep it
Tarmac gives each app a free port when it starts, then remembers it. The next time you start the shop, it is on the same port as yesterday, so your bookmarks, OAuth callbacks and .env files keep working.
Adopt what is already running
Started an app from your own terminal? Tarmac detects apps running outside it and adopts them: you see their port and status, and you can stop them from the dashboard like any other.
Clean up after a crash
When a process dies badly, it can leave a port behind. The Free ports action finds what is still listening and lets you close it, without hunting for PIDs with lsof.
Logs where you can see them
Each app streams its logs live in the browser. No more terminal tab per project: one screen, every app, every port.
Try it
Tarmac is free and open source. Install it with two commands on macOS, or inside WSL 2 on Windows: see the install guide.