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.

macOS 14 Sonoma or later · 3.1 MB · version 0.1.0

Hoda 4 running · 1 session

Node

my-api (dev) :3000 · 2h 14m
web-app (dev) Stopped

Docker

postgres :5432 · 3d 1h

Databases

redis :6379 · 3d 1h

Kubernetes

echo → svc/echo :8090 · 41m

Servers

docs (python) Stopped
5-hour limit42%
This week66%
Today1.2M tokens

Active

Fix login redirect needs approval · api
Port-forward the echo service working · cluster
started itsame project Sample data

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.

zsh — web
~/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
web-app (dev)Stopped

Port 3000 in use by my-apiShow process

my-api (dev):3000 · 3d 2h
The same moment, in Hoda.
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.

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.
Shop3 items · stopped
  1. 1 postgres Stopped
  2. 2 my-api (dev) Stopped
  3. 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.

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.

A glass windowPin it to the desktop like a widget, or use it like an app. Widen it and Claude gets its own column.
Desktop widgetsFour sizes, with switches that work. They glow in the colours of what’s up.
Menu barThe full list, a click away. The star fills in when something is running.
The Dock, if you likeRight-click for groups, sessions waiting on you, Start all and Stop all.

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
Activity Monitor, more or less
Hoda, withMemory
the menu closed21 MB
the menu open63 MB
the window open50 MB
Measured on an Apple silicon MacBook. Memory with the menu open goes back to the system 20 seconds after it closes.

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.

The one network call, and it’s optional: your Claude plan usage, asked of Anthropic with the login Claude Code already has. macOS asks you first.

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.

Hoda

See what’s running.

Download for macOS

macOS 14 Sonoma or later · 3.1 MB · version 0.1.0

First launch: System Settings › Privacy & Security › Open Anyway.