Process 2026-07-23
AgentC Blog

Scribe is the demonstration: one app, an ecosystem of shards

Our free macOS dictation app exists to prove a point: every hard part of it is an open-source Crystal shard you can use today, the toolchain ships its own AI-assistant context, and the compiler fork behind it keeps parity with upstream Crystal. Here's the tour.

5 min read ~200ms if you're an agent Subscribe via RSS

Last week we shipped Scribe: a free, fully native, notarized macOS dictation app written in Crystal. Press a hotkey, speak, and your words are transcribed entirely on-device and pasted where your cursor is. No cloud, no accounts, no audio leaving your machine.

But Scribe isn't really the product here. It's the demonstration.

Our whole thesis is that experiencing beats believing, and Scribe is intended to be a public working demonstration of how powerful the individual libraries we've been building can be: a real, tangible, easy-to-use product that shows just how far you can get with them. The app itself is about 7,600 lines of Crystal. Everything hard lives in shards you can pull into your own projects today.

"Real software takes a team and a year. An AI-built app is just a demo." That is the misconception this app exists to break.

The ecosystem tour

What you can do

Record the meeting. Keep your voice and theirs apart.

Transcribe calls live with your voice and the call on separate tracks, or feed it years of old recordings, free, on your own Mac.

Why it works

We had to build crystal-audio first: Crystal bindings down to the capture hardware, microphone and system audio as separate streams (no virtual audio driver on macOS 14.2+), with whisper.cpp transcription in batch and streaming modes.

30× faster than real time completely on-device totally private
What you can do

Speak. It's already typed.

Faster than you can read it back, wherever your cursor is. Private by physics, not by promise: the audio never leaves the machine.

Why it works

llamero is the AI layer: the Parakeet speech runtime driving the Apple Neural Engine directly from Crystal. The same layer keeps a model resident on Apple Silicon, hot-swaps LoRA adapters, and can train one on-device with no Python involved.

What you can do

It feels like a Mac app because it is one.

Real windows, real menus, native settings. Nothing about it says "web page in a costume."

Why it works

asset_pipeline drives AppKit and UIKit from Crystal, validated against an auditable Apple HIG ledger; Amber V2 and Grant give the app its shape, with no HTTP server at all.

The compiler keeps its promise

There is one more layer down. To build apps this way we needed the language itself to keep up, so underneath everything sits crystal-alpha, our fork of the Crystal compiler with incremental compilation: a no-change rebuild skips semantic analysis, codegen, and linking entirely.

The worry

A fork of a compiler always drifts. Six months later you are stranded on an old language version, waiting on one maintainer.

The promise

The fork tracks what's publicly available. Crystal 1.21.0 was released upstream on July 16; v1.21.0-incremental-1 merges it, so everything in current public Crystal is in the fork, plus the incremental machinery and the iOS, Android, and watchOS target work. Release notes are on the releases page.

No-change rebuild, same app
stock crystal build
2.2s
crystal-alpha --incremental
0.26s
A no-change rebuild drops from 2.2 seconds on stock Crystal to 0.26 seconds with the incremental cache: roughly 8.5x faster on the inner loop. Measured on a Kemal test app during the v1.21.0-incremental-1 release verification.
3.2–5.2× warm build speedups measured on Lucky, Athena, and Amber

Keeping that promise had a side benefit this time: while verifying the merge we found, and fixed, a stale-binary bug in the incremental cache that had shipped in the previous release. The release notes document exactly what it was and how to clear it. That's what the promise is for: syncing against upstream regularly forces the whole surface through verification, and bugs get caught by us instead of by you.

Designed for the way we actually build now

What you can do

Your coding assistant already read the manual.

Add a library and your AI assistant immediately knows how to drive it. The learning curve got shipped with the package.

Why it works

Each library ships its own agent context: CLAUDE.md, skills, workflows. shards-alpha delivers them: on install the AI docs land in your project's .claude/ directory, namespaced per shard and version-tracked. It also distributes MCP servers and handles supply-chain compliance: OSV vulnerability audits, license checks, SBOM generation.

you@yourmac — zsh
$ brew install crimson-knight/tap/shards-alpha==> Fetching crimson-knight/tap/shards-alpha
==> Installing the AI docs your agent will read
🍺  shards-alpha is ready. Your assistant knows the way.
Try the demonstration

Experiencing is the new believing, and that has to include you. Get Scribe, press the hotkey, and watch your own words land on-device. Then open any repo of ours and take the part you want.

If you build something with any of these pieces, or something doesn't hold up, open an issue on the repo in question. Doing this in public is the point. For the deeper background on the process itself, start with Agent-Enhanced Development.