# Devctl, a handy way to manage many dev servers

> Source: <https://github.com/quantizor/devctl>
> Published: 2026-07-23 15:42:01+00:00

A macOS menu bar command center for local dev servers, built so coding agents never lose track of the servers they started.

A launchd-supervised daemon owns every server process. Sessions come and go, contexts compact, terminals close: the servers, their logs, and their crash forensics stay. A CLI designed for agents (stable `--json`

everywhere) and a quiet menu bar app for you sit on top of the same unix socket.

Agents forget their dev servers. After a context compaction they spawn duplicates, tail dead logs, and fight over ports. devctl gives them one idempotent verb (`devctl ensure web`

) that always lands in the same place, a session hook that re-teaches every new or compacted session what is running, and a `why`

command that turns a broken server into a root-cause diagnosis.

(Your agent can do all of this for you, just point them at the repo.)

```
make install          # binaries to ~/.local/bin, app to /Applications, daemon installed
cd your-project
devctl register --name web --cmd bun --cmd run --cmd dev --port 3000
devctl ensure web     # idempotent: healthy is a no-op
devctl why web        # root cause when something breaks
devctl hook install   # Claude Code sessions rediscover servers automatically
```

Or commit a `devservers.json`

at the project root (multiple servers, dependencies, healthchecks, `*.localhost`

host signatures, multi-headed proxies, lifecycle playbooks); `devctl up`

brings the whole project up in dependency order. The full CLI contract lives in [docs/cli-contract.md](/quantizor/devctl/blob/main/docs/cli-contract.md).

`devctld`

: the daemon. Spool-file output capture (children survive daemon restarts without SIGPIPE), process-group plus descendant-sweep teardown, health-gated phases, crash forensics, structured logs with correlation marks, a unified event feed.`devctl`

: the CLI.`ensure`

,`wait`

,`up`

/`down`

,`logs --since-mark`

,`mark`

,`events`

,`why`

,`open`

,`switch`

,`lock`

(pause servers sharing a resource while a test harness runs),`doctor`

, and launchd management. Agents are the first-class consumer.`devctl.app`

: the menu bar. Presence dots with counts, per-project rows with click-to-open heads (pinnable), crash notifications, a dashboard with live logs, an event timeline, and a validating config editor. Every server and head is Spotlight-searchable.

`make build`

and `make test`

; `scripts/smoke.sh`

is the end-to-end gate. No Xcode required, ever: the app bundle is assembled by a checked-in script. See `CLAUDE.md`

for the codebase map and `CONTRIBUTING.md`

for adding an agent-harness adapter.
