Serviceman
Serviceman lists macOS launchd services in one searchable table and lets them be started, stopped, enabled, or disabled from the same place. It is a narrow tool: no configuration editing, no log viewer, no scheduling. The job is to answer “what is running, what failed, and how do I stop it” without parsing launchctl output in a terminal.
What the table shows
Each row carries the service label, its domain (system or a specific GUI session), its state, PID, whether it is enabled, whether it is configured to keep running, whether it is protected by SIP, and its resident memory. State is shown as running, stopped, or failed with an exit code; failed rows are visually distinct rather than requiring a scan of the PID column.
A search field filters by label, and bulk memory figures are read in one ps call rather than one process lookup per row.
Acting on a service
Start, stop, enable, and disable map to the corresponding launchctl operations against the correct domain target — system/<label> or gui/<uid>/<label>. System-domain changes require elevation, and stopping a GUI-domain service uses the appropriate signal path. The table refreshes after an action and reports the outcome in the window.
Why GTK
The app is written in Rust with GTK 4. It is a small utility, and the toolkit keeps the code short: a list store, a few columns, a search entry, and a handful of actions. It builds on macOS with the GTK 4 toolchain installed, and does not use Xcode.
Built with
- Rust
- GTK 4
- launchd
- macOS