Skip to content
Technology

Why we build small, native macOS apps for developers

ME DigitalSeptember 3, 2026
Why we build small, native macOS apps for developers

Besides client projects, we make small macOS apps for developers. These are the principles behind them: one job done well, data that stays on the Mac, and honesty about what they do not know.

Besides the automations and custom software we build for companies, ME Digital also makes a set of macOS apps for developers: Deckhand, ConvMover, GitPulse, BurnRate, PortClear, DockerSpace, Vitals, PromptBar and MTW Tmux. They are not a mass-market product. They are small tools made for problems we run into ourselves every day.

This article explains why we chose the “small and native” formula and what it means in practice. A technical reader will recognise the decisions; a non-technical one can take from it a criterion for any software: what the tool does, what it sees and what it leaves behind.

One job, done well

Each app answers a precise problem:

  • PortClear shows what is holding a port or which dependency folders have piled up on disk.
  • DockerSpace groups Docker containers, images and volumes by project, so you know what you can clean up.
  • GitPulse keeps the state of several Git repositories in the menu bar.
  • BurnRate turns the on-disk transcripts of a working session with an AI assistant into a consumption rate.
  • Vitals checks the Claude Code sessions running on the Mac.
  • MTW Tmux is a native window on top of tmux.

A small tool has an advantage that is hard to win any other way: you can say in one sentence what it does. If you cannot, it probably does too much. This constraint also helps us say honestly what it does not do (each app’s page has a section on limits).

A workbench with six small tools laid out in a row, each with a different shape and a single purpose

Why native

“Native” here means the app is written for macOS, not a web page wrapped in a window. For example, Deckhand is built with Swift 6 and SwiftUI, and the app pages state the minimum macOS version required (currently 14.0 or later for those that specify one).

We do not say this out of snobbery. Developer apps sit close to the system: they read processes, ports, folders, containers, Git repositories. That is more direct from a native app, which has natural access to what the system offers: the menu bar, notifications, the Keychain for secrets, integration with the window and the keyboard. And an app that does not bundle a whole browser engine has no reason to consume your resources for the sake of its interface.

The downside is real: our apps run only on macOS. We choose to do one thing well on one platform rather than mediocrely on all of them.

Data that stays on the Mac

A developer tool means access to sensitive things: project names, folder paths, conversations with AI assistants, private repositories. That is why our principle is that information about your work stays on your computer.

A few examples, as the app pages describe them:

  • DockerSpace runs the Docker commands locally, through the CLI on your machine, and the app’s page says nothing the scan finds leaves for any server.
  • PortClear states that scanning and deleting run on the Mac, and that the update check starts only when you ask for it.
  • Vitals keeps its records in a local SQLite store.
  • GitPulse can optionally use the GitHub API and, if you enable summaries, the AI provider you chose; these are written down explicitly as network dependencies.

Where an app has to talk to a server, our rule is to write exactly what it sends and when, in the licence. We cover that in a separate article, about licensing.

Saying “I do not know” is a feature

A diagnostic tool that guesses with confidence is more dangerous than one that says it does not know. A few design choices come from that:

  • BurnRate shows an unknown cost as “unknown”, not as zero, when a model has no price in the table. A total marked “at least this much” is honest.
  • Vitals says it cannot confirm a verdict when it has nothing to go on, instead of showing a reassuring and false one; “unknown” never turns into “stale” and never hides behind “0 sessions”.
  • PortClear shows, before it stops a process, which process it is, how long it has been running and the exact reason it was flagged.
An indicator with three distinct states: full, empty and a question mark, placed on a desk

Dangerous actions: small, confirmed steps

A tool that can delete something must make an irreversible step hard. For example, GitPulse blocks operations such as force-push or reset --hard in code, and the other writes need a confirmation token. DockerSpace deletes nothing until you pick a project and confirm. It is not spectacular, but it is the difference between a tool you trust and one you fear.

What we do not say

We do not publish sales or user figures, and we do not promise things an app’s page does not support. Some apps are new, some features are still deliberately switched off and arrive in stages, and the pages say so. Some depend on formats we do not control (for instance BurnRate reads a format belonging to another application and can be affected when that changes). We prefer to write down the limits rather than have you discover them after paying.

Why it matters to a business owner

If you are not a developer, these apps are not for you. But we apply the same principles in client projects: a clear task, data handled with care, openly saying what a system knows and does not know, important actions with confirmation. The apps are, in a way, the laboratory where we practise them.

If you would like to see them, the apps are here; and if you need something similar made for your company, see custom software or get in touch.

Want to talk about your company?

Write to us and we will set up a call, with no obligation.

Contact us
Free audit