All posts

Open Activity Monitor on your Mac right now and sort by memory usage. Count the number of applications consuming more than 100 megabytes of RAM while sitting idle in the background. If you are like most Mac users, the list is longer than you would expect. Each of these applications claims a piece of your system resources, and collectively they degrade the performance of the applications you actually care about.

Steno was designed with a different philosophy. At 1.7 megabytes for the complete download and roughly 12 megabytes of RAM at idle, it is among the smallest productivity applications you can install on a Mac. This is not a limitation — it is a deliberate engineering choice that makes Steno a better dictation tool.

Why Size Matters for a Background App

A dictation app is not something you launch, use for an hour, and then quit. It is a utility that starts when your Mac boots and runs continuously until you shut down. It sits in your menu bar, waiting for you to hold the hotkey, speak, and release. For every minute you spend actively dictating, there are hundreds of minutes where the app is simply waiting.

This always-on nature makes resource efficiency critical. An application that uses 200 megabytes of RAM while idle is consuming resources 24 hours a day. Over the course of a workday, that is memory pressure that forces your operating system to swap other applications to disk, slowing everything down.

Steno's idle memory footprint of approximately 12 megabytes means it coexists peacefully with everything else on your system. You will never notice it is running. You will never see it appear in Activity Monitor's list of resource-hungry processes. It simply waits, ready to transcribe the moment you need it.

The Bloat Problem in Modern Software

To understand why Steno's 1.7MB size is remarkable, consider what a typical dictation or productivity app ships with today. Most modern desktop applications are built on Electron, a framework that bundles a complete Chromium browser engine and a Node.js runtime into every application. A minimal Electron app — one that displays a single window with a single button — starts at approximately 120 megabytes.

This means that before a single line of application-specific code runs, the app is already carrying the weight of an entire web browser. Add the application logic, bundled AI models, analytics frameworks, and auto-update mechanisms, and you easily reach 200 to 400 megabytes for a tool whose core function is capturing audio and displaying text.

Some popular dictation tools on the market illustrate this problem clearly:

Steno achieves superior transcription accuracy at a fraction of these resource costs by making a simple architectural decision: keep the heavy computation off your machine entirely.

How Steno Stays Small

Steno's lightweight footprint comes from three key architectural decisions.

Native Swift, No Framework Overhead

Steno is written in pure Swift using AppKit for its minimal user interface. There is no Electron, no React Native, no cross-platform framework adding layers of abstraction. The compiled binary uses only the system frameworks that macOS already provides — AVFoundation for audio, AppKit for the menu bar and overlay, and the Security framework for keychain access. Nothing is bundled that the operating system does not already supply.

Server-Side Transcription

Rather than bundling a speech recognition model locally, Steno sends audio to Groq's Whisper API for transcription. This means the most computationally expensive part of the process — running a large neural network on audio data — happens on optimized server hardware, not on your Mac. Your laptop's CPU and GPU remain free for the work you are actually doing.

This approach also means that transcription accuracy improves over time as the server-side models are updated, without requiring you to download anything. Steno's 1.7MB download size stays the same regardless of how sophisticated the underlying transcription engine becomes.

Minimal Dependencies

Steno has exactly one external dependency: the Sparkle framework for auto-updates. Everything else is built on macOS system frameworks. There is no dependency tree of hundreds of packages, no bundled JavaScript runtime, and no embedded database engine. Fewer dependencies means less code to load, less memory to consume, and fewer potential points of failure.

Real-World Impact on Your Mac

The difference between a lightweight dictation app and a bloated one compounds over time. Consider a typical workday scenario.

You boot your Mac at 9 AM. Your dictation app launches at login and runs continuously until you shut down at 6 PM. That is nine hours of continuous operation. During that time, you might actively use dictation for a total of 15 to 30 minutes, in bursts of 10 to 60 seconds each.

With a bloated dictation app consuming 200MB of RAM, your system dedicates 200MB to an application you actively use for less than 1% of the time it is running. On a MacBook Air with 8GB of RAM, that is 2.5% of your total memory consumed by an idle process.

With Steno at 12MB idle, the cost drops to 0.15% of total memory. That freed memory is available for your browser tabs, your code editor, your design tools — the applications where you are actually spending your time.

Installation and Updates

Steno's small size has practical benefits beyond runtime performance. The 1.7MB download completes in seconds even on slow connections. Installation is a simple drag-and-drop or package installer — there is no lengthy extraction process, no post-install configuration that takes minutes to complete.

Updates through Sparkle are similarly efficient. When a new version is available, the delta download is typically under a megabyte. The update applies in seconds, and Steno is ready to use again almost instantly. Compare this to applications where updates involve downloading hundreds of megabytes and waiting several minutes for installation to complete.

Battery Life

On a laptop, every process that consumes CPU cycles consumes battery. Even an idle application is not truly idle — it wakes periodically to check for events, update its state, and perform housekeeping. The larger and more complex the application, the more work these periodic wake-ups involve.

Steno's minimal architecture means its idle wake-ups are negligible. The app is essentially dormant until you press the hotkey, at which point it activates, captures audio, sends it for transcription, and returns to dormancy. This behavior is ideal for battery life — the energy cost of having Steno installed and running is effectively zero when you are not actively using it.

A Philosophy of Restraint

Building a lightweight application requires saying no to features that add weight without adding value. Steno does not include a built-in tutorial with embedded videos. It does not ship with a settings panel built in a web view. It does not bundle analytics frameworks that phone home continuously.

What it does include is everything you need for fast, accurate voice-to-text: audio capture, transcription, text injection, and a clean menu bar interface. Nothing more, nothing less.

This philosophy of restraint is not about minimalism for its own sake. It is about recognizing that a dictation app is a tool, not a destination. You do not want to spend time inside your dictation app — you want to speak, see text, and get back to work. A lightweight app that does its job and gets out of the way is the best kind of productivity tool.

Ready to try a dictation app that respects your system resources? Download Steno — the entire experience is just a 1.7MB download away.