We just shipped something I’ve wanted to exist for years, and I think this community will care about how it exists: Scribe is a complete consumer macOS app written in Crystal — menu bar app, global hotkeys, native windows, setup wizard, Apple Help Book, signed with a Developer ID, notarized by Apple, stapled, and distributed as a drag-to-Applications DMG. No Electron. No embedded browser. A 7 MB Crystal binary at the core.
Download it here (free, and free for life):
What it does
Tap/hold a hotkey, talk, and your words are typed at your cursor — in any app. Everything runs on-device on the Apple Neural Engine: no cloud, no account, no audio ever leaves your machine. It also does meeting transcription with speaker labels (captures system audio, so both sides of a call get transcribed), and drag-in transcription of existing audio files. Transcription runs at roughly 30x real-time on Apple Silicon.
The part I care about most
Here’s what I actually want this community to hear: I didn’t grind this out line by line. Scribe was vibe coded — built AI-first, agents doing the heavy lifting under direction — on tooling we built ourselves, for the language we love. The compiler is our own fork (crimson-knight/crystal, incremental-compilation branch, installed as crystal-alpha). Dependencies are managed by our shards fork (shards-alpha). The native capabilities come from our own shards: llamero (Parakeet ASR and TTS on the Neural Engine), our asset_pipeline fork (the SwiftUI facade), and crystal-audio (system-audio capture). Every layer of this app, from the compiler down, is tooling we can rely on because we own it.
And that’s the message: Crystal has a unique advantage in an AI-driven world that most stacks don’t. The type system and compiler give an AI agent the one thing it can’t fake — instant, truthful feedback. An agent can’t hand-wave past a compile error the way it can slip a subtle bug into a dynamic language; it has to actually get it right, and when Crystal compiles clean you’re most of the way to correct. Then the performance shows up for free. Type system, compiler, performance, together: the future is extremely bright and the opportunity is extremely ripe for everyone using Crystal.
Why I’m posting it here
Because the frontier just moved. The question “can you build a real Mac app in Crystal — the kind you hand to a non-technical person and it just works?” now has an existence proof, and it passed Apple’s notarization gauntlet on the first real attempt.
The interesting bits, briefly:
- The whole app is ~7,600 lines of Crystal plus one ObjC bridge file (~1,700 lines) exposing AppKit, Carbon hotkeys, CGEvent typing, ScreenCaptureKit, notifications, and permissions as a flat C API that Crystal binds with a plain
lib. That’s the entire platform layer. It’s less scary than it sounds — Crystal’s C interop makes this genuinely pleasant. - We talk to the Neural Engine from Crystal. Speech recognition is NVIDIA’s Parakeet v3 running via CoreML, wrapped in a Swift package that exports a C ABI (
@_cdecl), which Crystaldlopens directly. Crystal → C → Swift → ANE, with results streaming back as JSON frames on the calling thread. We started on whisper.cpp; the Parakeet-on-ANE path was such a leap (faster, cooler, no GPU contention) that whisper is gone entirely. - The UI is SwiftUI, driven from Crystal through a facade layer, so views read like declarative Crystal (
UI::VStack,UI::Toggle, forms) while rendering as native controls. - The fork’s threading-friendly runtime carries the audio path — native run loops and foreign-thread audio callbacks, with recording memory flat for hours. Perf gates enforce that on every release, so the agents can’t regress it either.
The point
Crystal is usually pitched for servers and CLIs. This is neither. It’s a signed, notarized, Gatekeeper-approved consumer app that ordinary people are downloading and using today — and the language never got in the way. If you’ve been wondering whether Crystal can carry a full native app end-to-end: it can, and you can hold the proof.
Try it, break it, tell me what you think. A pro version is coming later, but the dictation app you download today is complete and stays free forever.
- Seth