What’s runningon your Mac,at a glance.
Hoda finds your dev servers, containers, databases and Claude Code sessions, gives them human names, and starts or stops each one with a click. It lives in your menu bar.
Node
Docker
Databases
Kubernetes
Servers
Active
Hoda This desktop is fake. The app isn't. Hoda lives in your menu bar and shows everything you have running: dev servers, containers, databases, Kubernetes port-forwards and Claude Code sessions. Each one gets a human name and a switch. There's more in the hoda-notes folder. Double-click it.
Who's on port 3000?
Before it starts anything, Hoda checks the ports it already
knows about. If one is taken you get
Port 3000 in use by web-app · Show process
right away, instead of EADDRINUSE three seconds later.
"Show process" takes you to the one holding it. Groups Database, API, front end. Every morning, in that order. Put them in a group and flip one switch. Hoda starts each member and waits until it's actually up (up to 30 seconds) before starting the next. Three ways to make one: - drag one process onto another - press + and click them in the order they should start - pick a group when you add an item Two groups can share a member. Turning one off leaves running what the other still needs.
The ⌥ key Stop is polite: Hoda asks the process to quit (SIGTERM) and waits. Five seconds by default; anywhere from 2 to 30 in Settings. Only then does it force it. Hold ⌥ and the switch turns red: flip it and the process is killed on the spot. If a stop is taking a while, the row offers "Force now". Stopped a whole section by mistake? There's an Undo for a few seconds.
Claude Code Every session, active or recent, with its state: working, waiting for you, or needs approval. That last one turns orange, in the menu, the widget and the Dock. Hover a session and lines appear: solid to the processes it started, dotted to the ones in the same project. Also: your 5-hour and weekly limits, like /usage, and the tokens you spent today. One click takes you to the session's terminal, or resumes one that ended.
Names
Nobody wants to read
node /Users/you/code/api/node_modules/.bin/next dev
so Hoda shows
my-api (dev) :3000
The name comes from the project's package.json. Two things
with the same name get told apart. You can rename anything,
and pin it so it stays in the list after you restart. Shortcuts ⌥⌘P Add an item, from any app (you can change it) ⌘, Settings ⌥ Force instead of stop Enter Save, in the add panel ⌘Enter Save and start it
Weight ~0% CPU while idle. ~21 MB with the menu closed. Opens the menu in ~80 ms. 3.1 MB download. Swift 6, SwiftUI and AppKit. No Electron, no browser inside, no background server. Animations pause when nothing is on screen, and the list is let go from memory 20 seconds after the menu closes.
Privacy There are no Hoda servers. We checked. Everything happens on your Mac: processes, ports and Claude Code's conversation files are read locally and stay there. No account, no telemetry. The one network call is optional: asking Anthropic for your plan usage, with the login Claude Code already has. macOS asks you before Hoda can read it.
Port 3000 is already in use. By what?
The terminal makes you dig for it. Hoda answers before you ask, and the fix is the switch next to the name.
~/code/web $ npm run dev
Error: listen EADDRINUSE: address already in use :::3000
~/code/web $ lsof -i :3000
COMMAND PID USER FD TYPE NODE NAME
node 48213 me 23u IPv6 TCP *:hbci (LISTEN)
~/code/web $ ps -p 48213 -o command=
node /Users/me/code/api/node_modules/.bin/next dev
~/code/web $ kill 48213 Port 3000 in use by my-apiShow process
- Dev servers you forgot, eating memory and battery for days.
- Everything running is listed, with how long it has been up, and its CPU and memory one click away.
- Ten terminal tabs, and no idea which one runs what.
- Each process gets a readable name, its port, its project and a switch.
- The same database, API and front end, every single morning.
- Groups start them all, in order, waiting for each to be ready.
- Something hangs and it’s kill -9 time again.
- Stop asks nicely and forces only if it has to. Hold ⌥ to force right away.
Nobody remembers the flags.
Every tool speaks its own dialect. lsof wants -nP and -sTCP:LISTEN, docker ps wants a Go template, brew wants the formula’s exact name, kubectl wants the namespace. You look them up again every time, usually while something is already broken. Hoda remembers all of it for you: each one becomes a name and a switch.
| In the terminal | → | In Hoda |
|---|---|---|
lsof -nP -iTCP:3000 -sTCP:LISTEN | Port 3000 in use by web-app | |
docker ps --format '{{.Names}}\t{{.Status}}\t{{.Ports}}' | Containers listed, updated as they change | |
brew services stop postgresql@16 | Flip the postgres switch | |
kubectl port-forward -n default svc/echo 8090:80 | Pinned once, started again with a click | |
kill -9 $(lsof -t -iTCP:3000 -sTCP:LISTEN) | Hold ⌥ and flip the switch | |
cd ~/code/api && claude --resume 0f8a6c2e-3b1d-4e5f-9a7b-2c4d6e8f0a1b | Resume session |
It already knows your stack.
Nothing to configure. Open Hoda and everything you have running shows up, named after its project: my-api (dev) :3000, not node /Users/you/code/api/node_modules/.bin/next dev.
- npm run dev
- Docker containers
- Postgres
- Claude Code sessions
- pnpm start
- kind
- Redis
- anything on a port
- Bun
- Colima
- MySQL
- kubectl port-forward
- Deno
- MongoDB
- Python
- k3d
- Docker Desktop
- RabbitMQ
- Go
- subagents
- minikube
- brew services
- nginx
- yarn dev
Docker updates in real time, from the Engine’s own events.
Your whole morning, in one switch.
Put the database, the API and the front end in a group and turn it on. Hoda starts them in order and waits for each one to be up before the next.
- Drag one process onto another to make a group.
- Or press + and pick them: the order you click is the order they start.
- Groups can share members. Turning one off leaves running what another still uses.
- 1 postgres Stopped
- 2 my-api (dev) Stopped
- 3 web (dev) Stopped
Know when Claude is waiting on you.
Every Claude Code session, active or recent, with its state. The one that needs approval turns orange, in the menu bar and in the widget, and one click takes you to its terminal.
started by this session runs in the same project
- See what it started. Hover a session and lines show the processes it launched, and the ones running in its project.
- Your plan, like /usage. The 5-hour and weekly limits, plus tokens spent today, this week and per session.
- Back in one click. Jump to the session’s terminal, or resume one that ended.
Plan limits use your Claude Code login and an endpoint Anthropic hasn’t documented, so they may stop working if it changes. Token counts leave out cache reads.
It lives where you look.
It weighs almost nothing.
Swift 6, SwiftUI and AppKit. No Electron, no background server, no browser inside. Animations pause when nothing is on screen, and the list is let go from memory when the menu closes.
- CPU while idle
- ~0 %
- Opens the menu in
- 80 ms
- Finds everything in
- 4 ms
- Download size
- 3.1 MB
| Hoda, with | Memory |
|---|---|
| 21 MB | |
| 63 MB | |
| 50 MB |
Nothing leaves your Mac.
Hoda reads processes, ports and Claude Code’s conversation files locally. There are no Hoda servers to send anything to. No account, no telemetry, no sign-up.
Hoda wants to use your confidential information stored in “Claude Code-credentials” in your keychain.
Questions
What do I need?
A Mac with macOS 14 Sonoma or later. On macOS 26 the window uses Liquid Glass.
Why does macOS ask me to “Open Anyway”?
Hoda isn’t on the App Store and isn’t notarized by Apple yet. The first time you open it, go to System Settings › Privacy & Security and click Open Anyway next to Hoda. You only do this once.
What does it detect?
Node, Bun and Deno dev servers and scripts; Docker containers (Docker Desktop or Colima); Postgres, Redis, MySQL, MongoDB, RabbitMQ and any brew service; kind, k3d and minikube clusters and kubectl port-forwards; any process of yours listening on a port; and Claude Code sessions.
Does it manage remote Kubernetes clusters?
No. Local clusters and port-forwards only. Hoda is a control panel for your machine, not an orchestrator.
Is it an Activity Monitor replacement?
No. It shows what you run for development, with names that make sense, and lets you start and stop it.
Windows or Linux?
No, Hoda is macOS only.
Where do I get it?
Click Download on this page and the .dmg starts right away.
See what’s running.
Download for macOSFirst launch: System Settings › Privacy & Security › Open Anyway.





