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. |
| Sweep | Build output, caches and applications to move to the Trash: how each is recognised, and what is never touched. |
| 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.
It changes nothing on disk except when you use Sweep, and then it only moves what you chose to the Trash. It never deletes anything, and never empties the Trash.
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.