# How Mole Grew from Shell Script to Mac App

> How a private cleanup script became an open-source CLI, a stricter safety model, and a native app designed for visible, interruptible work.

Published: 2026-05-11 | Updated: 2026-08-16

For years I kept a private shell script whose only job was cleaning junk off my
Mac. I like a computer that feels fast, so I kept polishing it, from 500 lines to
over 2,000, the way some people tend a garden. In October 2025 my disk filled up
again. I tried several well-known cleaners and none of them moved the needle
much, then ran my own script and watched it clear tens of gigabytes in one pass.
That seemed worth sharing.

I was on holiday in Sanya at the time, sitting by a hotel pool, and decided to
turn the script into a proper open-source CLI tool. It needed a name. A mole is
a small burrowing animal with strong forelimbs, very good at digging tunnels and
finding things underground, which is exactly what the script did: dig deep into
the corners of macOS where junk accumulates. So, [Mole](https://github.com/tw93/mole).
The banner on that first version read "can dig deep to clean your Mac," and it
still does.

## What the community did with it

I expected a small tool with a few hundred users. By the six-month mark, the repo had
crossed 50,000 stars on GitHub. More important than the stars: users had filed nearly 800 issues suggesting cleanup paths I had never heard of, sent around 300 feature PRs,
and about 120 developers around the world had become contributors. Every developer
machine hides disposable output in different places, and the community mapped far more
of them than I could have alone.

That breadth created the harder lesson: every new cleanup target is also a new place to
make a destructive mistake. A catalog of paths was not enough. The tool needed shared
path guards, protected locations, active-process checks, timeouts, review, and tests
that lock down the cases it must refuse. Community scale did not just add coverage; it
forced the safety model to become more general than the original 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>Half a year of commits, visualized: each cluster is a corner of the codebase, each figure a contributor orbiting the files they worked on.</figcaption>
</figure>

The moment I understood the scale was a bill. I had put two screenshots in the
README and served them through a CDN on Vercel. One week they blew past the bandwidth allowance, and I owed Vercel eighty dollars for two pictures.

## Why a Mac app

From early on, users kept writing the same request: my parents want this, my
sister wants this, but they are never going to open a terminal. I put the idea
off for months because the CLI did not yet feel mature enough to carry a
desktop version. By spring 2026 it did, so I built the Mac app over a couple of
weekends and launched it on the evening of May 11, 2026: [Mole for Mac](https://mole.fit/), two
Macs, lifetime updates, at an early-bird price as a thank-you to the users
who had been testing Mole all along.

The app could not simply be a button that ran the script. A graphical tool has to make
discovery and deletion separate, survive cancellation, explain permissions, keep the
window stable while scans finish, and show a recoverable plan to someone who has never
read a shell command. The CLI taught the app what to look for; the app forced the work
to become visible and interruptible.

<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 for Mac: cleanup, app management, optimization, disk analysis, and live status in one native app.</figcaption>
</figure>

## The planets

The app could have been a menu bar utility with a clean button, and it would
have sold fine. But there is already too much AI-generated junk software in the
world. If I was going to spend the tokens, I wanted them to become something
comfortable to sit in front of, not another thing polluting your timeline.

As a kid I loved watching the planets, and ten years ago, right after I learned
frontend, the first thing I badly wanted to learn was WebGL so I could draw
them. Building this app finally brought the two together: each of the five
features got a planet whose character matches the work it does.

- Clean is Earth: mountain rain washes old dust away.
- Software is Mars: red sands bury old traces.
- Optimize is Mercury: closest to the sun, swiftest in flight.
- Analyze is Jupiter: the widest eye of all.
- Status is the Sun: the light that never sleeps.

The textures come from astronomical imagery, with Earth based on NASA's
[Blue Marble](https://visibleearth.nasa.gov/images/57752/blue-marble-land-surface-shallow-water-and-shaded-topography).
I swapped them more than ten times before each planet looked right. Spin
direction and relative pace follow the real bodies, and so does the little
flight effect when an operation completes. Strictly speaking none of this has
much to do with a mole. It is more the feeling of a small digging creature
looking up from its tunnel at a very large sky, and staying quiet about it.

## Launch night

I published around ten in the evening. Friends retweeted it, and then my phone
started buzzing with a purchase notification roughly every ten seconds, from
France, Germany, currencies I had never seen in a payout before. My iPhone ran
hot and drained its battery just displaying them. I turned off email
notifications to get some sleep, and the purchases were still coming in the
morning. Quite a few people, it turns out, bought the app purely because the
CLI had treated them well.

The Mac app still has plenty of gaps, and I am grateful that so many people
paid for a pretty toy and are patient while I fill them in. I like
letting things ripen at their own pace instead of rushing for results. Mole
took years to go from a private script to an open-source CLI to a paid app, and
the best part of the whole arc has been the long iteration and the friendships
with developers around the world. That is the real wealth.

---

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