siltop: Een rustige en eerlijke systeemmonitor voor Apple Silicon

Opmerking: Screenshots in de documentatie zijn afkomstig van siltop --demo, een vooraf ingestelde sessie van 60 seconden (met build-bursts, GPU-inferentie, batterijverbruik en stijgende hitte), zodat deze op elke Mac identiek ogen.

Waarom nog een monitor?

btop is prachtig, maar op een Mac kan het de chip niet volledig zien: geen wattage, geen GPU en geen clusterkloksnelheden. asitop en powermetrics zien de chip wel, maar vereisen sudo-rechten. macmon is lichtgewicht, maar stopt bij de SoC. siltop zit hier tussenin: standaard zo schoon als je wilt, maar zo diepgaand als nodig wanneer er iets mis is.

Vergelijking met andere monitors

Kenmerksiltopbtopmacmonasitop
CPU / GPU / ANE / DRAM wattage✓—✓✓
Kloksnelheden per cluster (E / P / Super cores)✓—✓✓
Temperaturen en ventilatoren✓ (CPU temp)—✓ (temps)—
Energie en GPU per proces✓———
Volledige procesbeheerder (boom, signalen, filter)✓✓——
Werkt zonder sudo✓✓✓—
Machine-leesbare output (JSON / NDJSON / Prometheus / CSV)✓—JSON—

De eigen kosten (self-cost) zijn achter elkaar gemeten met btop en macmon op dezelfde machine; de methode en ruwe cijfers staan in docs/research/12-self-cost.md.

Hoogtepunten

Waarheid

  • Cijfers komen rechtstreeks uit macOS: de SMC voor ventilatoren, temperaturen en systeemvermogen; IOReport voor CPU- en GPU-kloksnelheden en energie; Mach en sysctl voor CPU, geheugen en processen. Er wordt geen gebruik gemaakt van ps, powermetrics of scraping.
  • Een waarde die de Mac niet verstrekt, wordt getoond als afwezig (—), nooit als een verzonnen 0. Ventilatorloze Air-modellen tonen geen ventilatoren, desktops tonen geen batterij, en een proces dat de kernel niet beschrijft, wordt getoond als —.
  • Er is een eenduidig oordeel in één regel (bijv. "All normal", "Busy: rustc using 9.1 cores", "Hot: fans at 80%") met het bewijs daarvan.

Snelheid

  • Verbruikt ongeveer 1,3% van één core bij een interval van 1 seconde. Dit is de helft van wat btop kost bij hetzelfde tempo (2,5%) en vergelijkbaar met macmon (1,4%), gemeten achter elkaar op een M5 Pro. De interface wordt alleen opnieuw getekend als er iets is veranderd, en het pauzeren (p) stopt het monsteren volledig.
  • Bestaat uit één native binary van ongeveer 3 MB, geschreven in Rust. Start direct op.

Schoonheid

  • Braille-grafieken op één gedeelde, tijdlineaire klok, zodat elk paneel uitgelijnd is. De z-toets zoomt in op de tijd.
  • Thema's zijn gebouwd op basis van het palet van je eigen terminal, waardoor ze leesbaar zijn in doorschijnende en vervaagde vensters. Er zijn tien ingebouwde thema's, een themapakket, importmogelijkheid voor btop-thema's en fallbacks voor 256-kleuren, 16-kleuren en NO_COLOR.
  • Twee weergavemodi: Work voor diepgaand onderzoek en Glance voor een klein, altijd-aan venster. De lay-out past zich aan vanaf 80×24. Er zijn vijf presets (via toetsen 1–5) en een zen-modus (Z) die alleen de grafieken overhoudt.

Controle

  • Een procestabel met live filter, sorteren op elke kolom, boomweergave, groepering per app en een detailkaart (threads, open bestanden, poorten) met een signal-picker, renice en achtergrond QoS. Een 'kill'-commando wordt geweigerd als de PID is hergebruikt sinds deze is geselecteerd.
  • Volledige muisondersteuning, toetsenprofielen van htop en btop, een doorzoekbare instellingenpagina en een configuratiebestand dat jouw commentaren bewaart.

Verder dan het dashboard

siltop biedt diverse geavanceerde opties:

  • --json / --json-stream voor scripts en statusbalken.
  • siltop line voor tmux en SketchyBar.
  • Alerts met shell-hooks.
  • Een tijdlijn met rapporten.
  • Sessie-opname en afspeelmogelijkheid.
  • Een Prometheus-endpoint.
  • Een sustained-performance benchmark.
  • Een multi-Mac fleet view.

Installatie

Vereiste: macOS op Apple Silicon.

Homebrew

brew install cloaky233/tap/siltop

Prebuilt binary

(Curl-downloads worden niet in quarantaine geplaatst, dus het programma werkt direct)

mkdir -p ~/.local/bin && curl -fsSL https://github.com/CLoaKY233/siltop/releases/download/v1.2.1/siltop-v1.2.1-macos-arm64.tar.gz | tar -xz --strip-components 1 -C ~/.local/bin siltop-v1.2.1-macos-arm64/siltop

Zorg ervoor dat ~/.local/bin in je PATH staat. Gebruik siltop update --yes om deze kopie actueel te houden. Elke release bevat ook een .zip en SHA-256 bestanden. Een kopie die met een browser is gedownload, wordt door macOS in quarantaine geplaatst en geblokkeerd bij de eerste start omdat deze niet is genotariseerd. Verwijder dit vóór het uitvoeren: xattr -d com.apple.quarantine siltop.

Vanuit broncode (Rust 1.98 of nieuwer)

cargo install --git https://github.com/CLoaKY233/siltop --tag v1.2.1 siltop --locked

Voer daarna siltop uit. Probeer eerst siltop --demo als je alleen wilt kijken.

Gebruik

CommandoBeschrijving
siltopStart het dashboard
siltop --demoEen vooraf ingestelde sessie van 60 s, geen hardware nodig
siltop -i 1s --theme paperMonster elke seconde, gebruik het 'Paper' thema
siltop --surface glance --no-mouseGebruik de compacte weergave zonder muisondersteuning
`siltop --json \jq .cpu.clusters`Eén JSON-sample (schema 1)
siltop --json-stream --count 3 -i 500NDJSON, één regel per interval
siltop --diagnoseToont "All normal" / "Busy: Safari using 3.1 cores" + bewijs
siltop doctorChip-ID's, SMC-sleutels, HID-sensoren, leesbaarheid, eigen kosten
siltop line --style tmuxEén statusregel: "cpu 12% gpu 3% 8.4W 51°C"
siltop report week --jsonEnergie per app, piektemperaturen, tijd besteed in 'hot' status
siltop agent installAlerts op de achtergrond, bij inloggen
siltop record --duration 10mEen crash-tolerante sessietrace; siltop replay speelt deze af
siltop servePrometheus-metrics op 127.0.0.1:9101
siltop bench --duration 5mSustained CPU-test: kloksnelheden, hitte, throttling
siltop fleet studio.mini.localDeze Mac naast twee anderen, via eigen ssh
siltop completions zshOndersteuning voor zsh, bash en fish; siltop man print de handleiding

De gebruikershandleiding legt elk paneel, de betekenis van de cijfers, toetsen, instellingen, presets, thema's, alerts, scripting en probleemoplossing uit. Toets ? in de app toont alle toetsen; m opent het menu; s opent de instellingen.

Configuratie

Alle instellingen zijn optioneel. Instellingen staan in ~/.config/siltop/config.toml (of onder $XDGCONFIGHOME), worden alleen geschreven bij wijzigingen en behouden jouw commentaren.

Omgevingsvariabelen

VariabeleEffect
SILTOP_THEME=<naam>Gebruik dit thema. auto (standaard) leest de terminal uit.
`SILTOP_KEYS=htop\btop`htop of btop toetsenindeling
`SILTOP_COLORS=truecolor\256\16\none`Overschrijf de schatting van de kleurdiepte
SILTOP_ICONS=nerdNerd Font-iconen in de panneltitels
SILTOPNOUPDATE_CHECK=1Voer nooit de optionele dagelijkse updatecheck uit
NO_COLOR=1Alleen attributen (bold, dim, reverse)

Privacy

  • Geen eigen netwerk: siltop bevat geen HTTP-stack. Als je kiest voor updatechecks, voert het programma maximaal één keer per dag /usr/bin/curl uit tegen de GitHub releases API en verzendt alleen de versie in de User-Agent. siltop serve luistert op 127.0.0.1 tenzij anders aangegeven; siltop fleet maakt gebruik van je eigen ssh.
  • Geen telemetrie: Er worden geen gegevens over jou of je Mac verzameld of verzonden. Crash-bestanden blijven op je Mac.
  • Geen sudo: Elke meting komt uit API's die een normale gebruiker mag aanroepen. Wat de kernel weigert (zoals processen van andere gebruikers) wordt getoond als —, niet gegist.

Veelgestelde vragen (FAQ)

Waarom tonen sommige processen —? macOS staat alleen toe dat je CPU, geheugen en energie leest voor je eigen processen. Rijden die eigendom zijn van andere gebruikers behouden hun naam en PID, maar de kernel weigert de rest. siltop toont dan — in plaats van een verzonnen 0. Hun CPU-verbruik wordt wel meegeteld in het totaal van de machine.

Waarom wordt een wattage-cijfer soms getoond als ≈ met een leeftijd? Sommige stroomrails publiceren gegevens in batches, niet bij elke sample. Tussen publicaties houdt siltop de laatst gemeten waarde vast en markeert deze als ≈ met de leeftijd, in plaats van een getal te verzinnen of naar nul te springen.

Waarom is mijn CPU-meting lager dan die in Activiteitenmonitor? De grafiek is frequentie-gewogen: een core die bezig is op de helft van zijn topsnelheid telt als half belast. Zo wordt getoond hoeveel van de werkelijke capaciteit van de chip in gebruik is. Cluster-rijen tonen zowel het bezette aandeel als de kloksnelheid.

Intel Macs, Linux? Nee. siltop is gebouwd rondom Apple Silicon API's. Andere platforms compileren wel (de collectors zijn vervangen door stubs), maar meten niets.

Hoe het werkt

Het project bestaat uit vier crates met een strikte afhankelijkheidsrichting (core $\leftarrow$ {metrics, ui} $\leftarrow$ bin):

CrateRol
siltop-coreSnapshot-types, geschiedenisopslag, configuratie, oordelen
siltop-metricsCollectors (SMC, IOReport, IOHID, Mach, sysctl) en de sampler. Geen UI-types.
siltop-uiThema's, braille-grafieken, lay-out, widgets. Geen imports van metrics.
siltopDe binary: event loop, input, CLI, de demo-sessie

Elk interval bouwt Sampler::tick() op een worker-thread één onveranderlijke Snapshot; de UI rendert deze in read-only modus. Zie crates/ARCHITECTURE.md voor meer details.

De map docs/research/ dient als kennisbank over hoe macOS deze data ontsluit: SMC-sleutels per chipgeneratie, het IOReport-energierecept zonder sudo, bronnen voor procesgegevens, grafiek-rendering en kleurgebruik op doorschijnende terminals.

Bijdragen

Bugrapporten inclusief de output van siltop doctor zijn het meest nuttig, vooral bij chips of Mac-modellen die nog niet gedekt zijn. Zie CONTRIBUTING.md voor informatie over bouwen, tests en 'golden screens'.

Licentie

Gelicentieerd onder keuze van:

  • Apache License, Version 2.0 (LICENSE-APACHE)
  • MIT license (LICENSE-MIT)

Copyright © 2026 Lay Sheth.