Always know what’s running,
and on which port.
Your agents start dev servers all day. Hun gives them one way to do it, and shows you every server they or you started, with its port and its logs, in your menu bar.
Apple silicon, macOS 15 or later.

“My agent already starts the dev server.”
Without Hun
It does. It runs npm run dev inside its own session, and that’s where it goes wrong. The logs scroll by in a terminal you never see. The server dies with the session, or stays behind holding :3000. And when a second agent needs that port, it frees it the quick way: kill -9, on your other project.
With Hun
Every agent starts your project the same way, hun run orbit. Each server shows up in your menu bar with its port and logs. Ports don’t collide, nothing gets killed to make room, and the server keeps running after the session ends, until you stop it.
Hun installs a skill that teaches Claude Code, Codex and Cursor to work this way.
Right there in your menu bar.
Click the switch in your menu bar and Hun drops down with everything that’s running, each project with its port.
- Open it
- Click a port and it opens in your browser.
- Flip a switch
- Each project has its own switch. On runs it, off stops it.
- Focus or Multitask
- One project at a time, or as many as you like.
- Close it, they keep running
- Closing the window doesn’t stop anything. Your servers run until you stop them.
Your frontend on the Mac. The rest in Docker.
Most projects are a mix: npm run dev on your machine, and the API, workers, Postgres and Redis in Docker Compose. In Hun that’s one project, started in order, each service with its own port and logs.
- Docker, started for you
- If Docker Desktop isn’t running, Hun starts it before the services that need it.
- One log per container
- Read the API without scrolling past Postgres and Redis, or switch to All to see them together.
- Honest when Docker isn’t
- If Docker stops answering, Hun stops those services instead of showing them as running.
Run just the part you’re working on.
Most days you don’t need the whole stack. A profile is a named set of services. Pick one from the window, or run hun run orbit -p api, and Hun starts those services and whatever they depend on.
profiles: ui: [app] api: [server, worker] # postgres comes along # postgres comes along
- Only the difference
- Switching from ui to api stops the app and starts the backend. Nothing that stays gets restarted.
- Remembered
- Hun runs the last profile you picked, from the menu bar, the window or the terminal.
- Saved as you go
- Running a set of services you like? Save Running Services as Profile, and it’s in your .hun.yml.
Write it down once. Start it the same way every time.
Step 1: Describe it once
A short
.hun.ymllists what your project runs and on which ports. Your agent can write it, then check it withhun validate .No. 0001
orbit
4 services
~/code/orbit/.hun.ymlname: orbit services: app: cmd: npm run dev -- --port $PORT port: 3000 server: cmd: uv run server port: 8000 depends_on: [postgres] worker: cmd: uv run worker depends_on: [postgres] postgres: cmd: docker compose up postgres port: 5432 profiles: ui: [app] api: [server, worker]Hun fills in 3000, or the next free port if it’s taken.
server and worker wait for postgres, so it starts first.
- Hun fills in $PORT: 3000, or the next free port if it’s taken.
- server and worker wait for postgres, so it starts first.
Start it with hun run orbit
Step 2: Your agent starts it the same way
Ask your agent to run the app and it uses
hun run orbit, not a guess. Postgres starts first, and a busy port moves to the next free one.A coding agent in ~/code/orbit: You: Start orbit so I can try the new dashboard. Agent ran: hun run orbit ✓ Started orbit in parallel Agent ran: hun status app :3000 · postgres :5432 · server :8000 · worker, all running Agent: orbit is running. The app is on localhost:3000, the API on :8000, and its logs are in Hun.
Step 3: See it, stop it
Hun’s switch in your menu bar turns on, and so does orbit’s. Click a port to open it; flip the switch to stop it.
Useful on the days it’s just you, too.
- Switch projects in one click
- In Focus, starting one project stops the last, so it always gets its own ports.
- Search every log
- Filter one service’s output as you type, or switch to All and search the whole project at once.
- Two projects, both on :3000
- Both run. The second gets the next free port, and nothing gets killed to make room.
- Something else on your port
- Hun tells you what holds it, like node (pid 4121), and stops it only if you ask.
- Crashes don’t hide
- A crashed service says so, keeps its log, and restarts with one click.
- Branches and a terminal
- Switch a project’s branch from its header, and open a terminal that’s already in the right folder.
$9, once.
One key works on three Macs, and every update is included. No subscription.
Apple silicon, macOS 15 or later.



