# Hoe Mole groeide van shellscript tot Mac-app

> Hoe een privé opschoonscript een open-source CLI werd, een strenger veiligheidsmodel kreeg en een native app voor zichtbaar, onderbreekbaar werk.

Published: 2026-05-11 | Updated: 2026-10-18

Jarenlang hield ik een privé shellscript bij waarvan de enige taak was rommel van mijn
Mac te halen. Ik hou van een computer die snel aanvoelt, dus ik bleef het bijschaven, van 500 regels naar
meer dan 2.000, zoals sommige mensen een tuin verzorgen. In oktober 2025 liep mijn schijf weer
vol. Ik probeerde verschillende bekende cleaners en geen ervan maakte veel verschil,
daarna draaide ik mijn eigen script en zag het in één gang tientallen gigabytes wissen.
Dat leek de moeite van het delen waard.

Ik was toen op vakantie in Sanya, zat bij een hotelzwembad, en besloot
van het script een echt open-source CLI-hulpmiddel te maken. Het had een naam nodig. Een mol is
een klein gravend dier met sterke voorpoten, erg goed in tunnels graven en
dingen onder de grond vinden, en dat is precies wat het script deed: diep graven in
de hoeken van macOS waar rommel zich ophoopt. Dus, [Mole](https://github.com/tw93/mole).
De banner van die eerste versie zei "can dig deep to clean your Mac", en dat
doet hij nog steeds.

## Wat de gemeenschap ermee deed

Ik verwachtte een klein hulpmiddel met een paar honderd gebruikers. Na een half jaar had de repo
meer dan 50.000 sterren op GitHub. Belangrijker dan de sterren: gebruikers hadden bijna 800 issues ingediend met opschoonpaden waarvan ik nooit had gehoord, ongeveer 300 feature-PR's gestuurd,
en ongeveer 120 ontwikkelaars over de wereld waren bijdragers geworden. Elke ontwikkelaars-machine verbergt wegwerpbare uitvoer op andere plekken, en de gemeenschap bracht er veel meer
van in kaart dan ik alleen had gekund.

Die breedte leverde de hardere les: elk nieuw opschoondoel is ook een nieuwe plek om
een destructieve fout te maken. Een catalogus van paden was niet genoeg. Het hulpmiddel had gedeelde
padbewaking nodig, beschermde locaties, controles op actieve processen, time-outs, beoordeling en tests
die de gevallen vastzetten die het moet weigeren. De schaal van de gemeenschap voegde niet alleen dekking toe; die
dwong het veiligheidsmodel algemener te worden dan het oorspronkelijke script.

<figure class="blog-diagram">
  <video src="https://mole.fit/img/blog/mole-contributors.mp4" width="1600" height="900" autoplay muted loop playsinline></video>
  <figcaption>Een half jaar commits, gevisualiseerd: elke cluster is een hoek van de codebase, elke figuur een bijdrager die om de bestanden cirkelt waaraan die werkte.</figcaption>
</figure>

Het moment waarop ik de schaal begreep was een rekening. Ik had twee schermafbeeldingen in de
README gezet en ze via een CDN op Vercel geserveerd. In één week schoten ze voorbij de bandbreedtevergoeding, en ik was Vercel tachtig dollar schuldig voor twee plaatjes.

## Waarom een Mac-app

Al vroeg schreven gebruikers steeds hetzelfde verzoek: mijn ouders willen dit, mijn
zus wil dit, maar die gaan nooit een terminal openen. Ik schoof het idee
maanden voor me uit omdat de CLI nog niet volwassen genoeg voelde om een
desktopversie te dragen. In het voorjaar van 2026 wel, dus ik bouwde de Mac-app in een paar
weekenden en lanceerde die op de avond van 11 mei 2026: [Mole voor Mac](https://mole.fit/), twee
Macs, levenslange updates, tegen een vroegboekprijs als dank aan de gebruikers
die Mole al die tijd hadden getest.

De app kon niet simpelweg een knop zijn die het script draaide. Een grafisch hulpmiddel moet
ontdekken en verwijderen scheiden, een annulering overleven, toestemmingen uitleggen, het
venster stabiel houden terwijl scans afronden, en een herstelbaar plan tonen aan iemand die nooit
een shellcommando heeft gelezen. De CLI leerde de app waar die moest kijken; de app dwong het werk
zichtbaar en onderbreekbaar te worden.

<figure class="blog-diagram">
  <video src="https://mole.fit/img/blog/mole-mac-demo.mp4" width="1440" height="1074" autoplay muted loop playsinline></video>
  <figcaption>Mole voor Mac: opschonen, appbeheer, optimaliseren, schijfanalyse en live status in één native app.</figcaption>
</figure>

## De planeten

De app had een menubalkhulpprogramma met een opschoonknop kunnen zijn, en die zou
prima hebben verkocht. Maar er is al te veel door AI gegenereerde rommelsoftware in de
wereld. Als ik de tokens ging uitgeven, wilde ik dat ze iets werden
waarin je prettig zit, niet nog iets dat je tijdlijn vervuilt.

Als kind keek ik graag naar de planeten, en tien jaar geleden, meteen nadat ik
frontend leerde, was het eerste dat ik vreselijk graag wilde leren WebGL, zodat ik ze kon
tekenen. Deze app bouwen bracht die twee eindelijk samen: elk van de vijf
functies kreeg een planeet waarvan het karakter bij het werk past.

- Opschonen is de aarde: bergregen spoelt oud stof weg.
- Apps is Mars: rood zand begraaft oude sporen.
- Optimaliseren is Mercurius: het dichtst bij de zon, het snelst in vlucht.
- Analyse is Jupiter: het breedste oog van allemaal.
- Status is de zon: het licht dat nooit slaapt.

De texturen komen uit astronomische beelden, met de aarde gebaseerd op NASA's
[Blue Marble](https://visibleearth.nasa.gov/images/57752/blue-marble-land-surface-shallow-water-and-shaded-topography).
Ik wisselde ze meer dan tien keer voordat elke planeet klopte. Draai-richting en relatief tempo volgen de echte lichamen, en dat doet ook het kleine
vluchteffect wanneer een bewerking klaar is. Strikt genomen heeft niets hiervan
veel met een mol te maken. Het is meer het gevoel van een klein gravend wezen
dat vanuit zijn tunnel naar een heel grote hemel kijkt, en daar stil over blijft.

## Lanceeravond

Ik publiceerde rond tien uur 's avonds. Vrienden retweetten het, en daarna begon mijn telefoon
te zoemen met een aankoopmelding ongeveer elke tien seconden, uit
Frankrijk, Duitsland, valuta's die ik nog nooit in een uitbetaling had gezien. Mijn iPhone liep
warm en leegde de batterij alleen door ze te tonen. Ik zette e-mail-meldingen uit om te kunnen slapen, en de aankopen kwamen de
ochtend erna nog binnen. Best veel mensen, zo bleek, kochten de app puur omdat de
CLI hen goed had behandeld.

De Mac-app heeft nog volop gaten, en ik ben dankbaar dat zoveel mensen
voor een mooi speeltje betaalden en geduldig zijn terwijl ik ze invul. Ik laat
dingen graag in hun eigen tempo rijpen in plaats van naar resultaten te haasten. Mole
deed er jaren over om van een privéscript naar een open-source CLI naar een betaalde app te gaan, en
het beste deel van de hele boog zijn de lange iteratie en de vriendschappen
met ontwikkelaars over de wereld geweest. Dat is de echte rijkdom.

---

Canonical HTML page: https://mole.fit/nl/blog/the-story-of-mole
Blog index for agents: https://mole.fit/nl/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
