Starf documentation
Starf is an activity monitor for Apple silicon. Rust reads the kernel; Svelte draws.
It is a port of a Swift reference implementation, and it keeps that implementation's central rule, which is worth stating before anything else:
An unavailable counter is not a zero.
macOS declines to share detailed counters for a large share of processes — around a
quarter of them on an ordinary desktop. Those processes stay in the list, with — in
every column the kernel would not fill. A 0.0 was measured. A — never was. The same
distinction runs through the exports (an empty CSV cell, a JSON null), through the
subtree totals (≥ for a known lower bound), and through every error message: a process
macOS refuses to describe is reported as refused, never as exited.
Everything else here follows from taking that seriously.
The documentation
| Measurement | What a number means: scales, rates, identity, and when a figure is withheld. Read this first. |
| Collection | Which kernel interface each figure comes from, and the traps found in each. |
| Interface | What each tab shows and how to drive it. |
| Diagnostics | The per-process window: files, memory map, ports, threads, counters. |
| Architecture | Module map, data flow, and why this stack. |
| Verification | How each figure was checked against a known load or another tool, with the numbers. |
| Limits | What Starf does not do, and why not. |
| Licensing | Free, with an occasional reminder. How keys work and how to issue them. |
| Updates | The one network request: what it carries, what it cannot do, and what to publish. |
What Starf does not do
It does not elevate privileges, install a helper, or relax SIP. Every figure comes from an interface any user can read. Where macOS says no, Starf says so.
No measurement ever leaves the machine. Not a process name, not a counter, not a diagnostic, not an export — those go only where you put them.
The one thing that can use the network is the update check, and it asks before it does: on first launch Starf puts the question, and until it is answered yes, nothing goes out at all. Saying yes fetches one static file a day carrying no identifier, no account and no version number. Saying no means Starf never opens a socket.
That includes the licence check, which happens on this machine against a key compiled into the binary. Starf is free either way; a licence removes an occasional reminder and withholds nothing.