Start it.
Forget it.

Get started
iter status
web:5173
idle in 0:12npm run devrunning
api:8080
idle in 4:41cargo runrunning
docs:8000
idle-killed 2m agopython manage.py runserverstopped

Install in one paste.

One command to install the CLI and daemon. One more to put a server under supervision.

Install (macOS or Linux)

$curl -fsSL "https://github.com/Biruk-gebru/iter/releases/latest/download/iter-$(uname -m | sed 's/arm64/aarch64/')-$([ "$(uname -s)" = Darwin ] && echo apple-darwin || echo unknown-linux-gnu).tar.gz" | tar xz && sudo install iter /usr/local/bin/iter

Or build from source with cargo

$cargo install --git https://github.com/Biruk-gebru/iter

Start your first server

$iter start web --port 5173 -- npm run dev

That port is now yours for good. Run the same command tomorrow and web is back on :5173 — never colliding with another project.

Prebuilt binaries cover Intel/Apple Silicon Macs and x86_64/arm64 Linux. No native Windows build yet — Windows users can run the Linux binary under WSL.

Full docs and source at github.com/Biruk-gebru/iter

How it works

1

Claim a stable port

iter start assigns each server a fixed port. Two Vite apps or two Django projects never fight over 5173 or 8000 again.

2

It watches real traffic

The daemon tracks actual network activity — not a dumb timer. When a server goes quiet for real, iter shuts it down.

3

It stays down until you say so

A killed server never auto-restarts. No zombie processes eating RAM, no surprise revivals. You bring it back on purpose.

No zombie processes. No port roulette.

Let the daemon babysit your dev servers so you can forget they exist.

Get started