Overview
I built a macOS product suite the way a funded team would, alone.
TypeFire started in March 2026 as a Mac text expander: type a few characters, get the whole paragraph, in any app. Five months and 48 releases later it is one window with three worlds: snippets that expand anywhere, a clipboard that keeps everything you copy and finds it by the words inside, and Markdown notes with a graph of how they connect. One hotkey searches all three.
I made every product, design and architecture call and directed AI agents to build all of it: a native Mac app on a Rust core, a Chrome extension running the same frontend, an iOS keyboard, a Cloudflare Worker for sign-in and licensing, iCloud sync, and a 228-page site with generated docs and 29 product videos. Then I took it to market the same way.
Preview
Sixty seconds, nine features.
Every product video is generated, not recorded: a script drives the real app frontend, so when a release moves a button, the video moves it too.
The Problem
The best Mac text expander was built for 2012. Everything since is a subscription.
Text expansion is the highest-leverage habit a knowledge worker can have, and the category had stalled. The incumbent moved to a subscription and a cloud account. The free alternatives were config files. Clipboards, notes and AI writing tools each lived in their own window.
I wanted one native app for the three things I reach for a hundred times a day: plain files I own, offline by default, AI without a chat window. Free for the core, one payment for the rest. Nothing on the market did that.
What I Built
Three worlds. One hotkey. Nine things it does.
Click through. Each tab is a real recording of the shipped app.
A whole payee form filled from five saved snippets. Bank details, an address and a signature, each one a few characters typed into the field.
The Shape of It
One window, three hotkeys, and never a context switch.
Snippets, Clips and Notes are three tabs of one Spotlight-style window that floats over whatever you are working in. Each has its own hotkey; the All tab searches all three. You never leave the app you were typing in.
The Architecture
Local-first on the Mac. A thin cloud only where it has to be.
The engine lives on the Mac. A Rust core listens for system-wide key events; snippets and notes are Markdown files on disk; the clipboard store is encrypted with a Keychain key; search and the graph are built on the device. AI runs through the user's own key, or on-device through Apple Intelligence.
The cloud is one Cloudflare Worker: passwordless sign-in, Paddle billing with a three-Mac license, referrals. Sync is iCloud Drive with one switch per world. Releases are signed, notarized and served through a verified auto-updater.
If the app cannot do it without the network, I asked why it needed the network.
Five Surfaces
One library of plain files. Every keyboard you own.
The Mac app is the anchor. The Chrome extension runs the same frontend over a browser seam, so a feature lands on both from one change. The iOS keyboard reads the same library. The site, docs and tutorials are generated from the app's own help export, so documentation cannot drift from the build.
The Hard Parts
The unglamorous depth that makes it trustworthy.
A utility that sits between your keyboard and every app is only worth installing if the boring parts are right.
Expansion in every app
System-wide key events with a paste path and a typed path, so it works in Terminal, in Chrome and in Electron apps alike.
Encryption by default
The clipboard database is encrypted at rest; the key lives in the Keychain and is created in-process.
A vault is never rewritten on read
Opening someone's Obsidian folder must not touch a byte of it. Migrations happen on write, never on load.
Sync without silent loss
First-sync merge and a blast-radius guard, so a stale manifest cannot delete a vault on either Mac.
Licensing that fails safe
Three Macs per license on a strict hardware id. A network failure can never revoke Pro.
A Quick Look preview that is a locked room
Markdown previews in Finder run with script off, no origin and a sanitizer that re-emits every tag.
Signed, notarized, self-updating
Distributed directly, with signature-verified updates, because the app needs an event tap the sandbox forbids.
Eight languages, every release
Every user-facing string ships in eight locales, enforced by a test, before a release is allowed out.
Offline is the default
Search, the graph and expansion never need the network. Sync and AI are opt-in switches.
One frontend, two hosts
Extension 1.0 runs the Mac's React frontend over one seam, kept in lockstep by a shape suite.
How I Built It
No team. I ran a studio of agents, and I was the studio head.
I did not use AI as an autocomplete. I set it up like an organization. An engineering agent owns the app, the extension, the keyboard and the Worker; it builds, drives the real app, signs, notarizes and ships. A marketing agent owns the site, the docs, the videos and outreach, and drafts for my approval. Both read the same memory in the repo before a session and write back after. I set scope, taste and the go or no-go on every release.
What I Directed
AI wrote the code. Every decision was mine.
- Product strategy From a text expander to a three-world suite, and what to cut to keep it one product.
- UX and interaction The floating window, three hotkeys, one search, onboarding rebuilt from thirteen screens to nine.
- Visual design and brand The flame, the orange, the illustration language, dark mode from the first release.
- Architecture Local-first, plain files, a thin Worker, iCloud over a custom backend, on-device AI first.
- Business model Free stays whole. Pro is one payment for the AI and sync features. Invite five, get Pro.
- Marketing and growth The site, the docs, the videos, the listings, the outreach, the analytics.
- Quality bar Nothing ships without a real drive of the built artifact. Every user-facing string in eight languages.
The Loop
Listen, decide, ship, measure. 48 releases in five months.
Every release starts from what users wrote in, what search data said and what the telemetry showed. Scope is settled in questions, one at a time. A build is driven by hand before it goes out, and the site copy lands the same day.
Growth Snapshot
Where it stands. Snapshot: September 18, 2026.
These numbers are a snapshot taken on September 18, 2026, five months after the 1.0 release. They are not updated live.
Cumulative users since 1.0
September was the biggest month, and it was not over.
In Their Words
Loved by people who type all day.
Unprompted reactions from users, in their own words.
Exactly what macOS has been needing: blazing fast, beautifully designed, and it respects your privacy without forcing a subscription.
PhysicianI use TypeFire every single day, all day long. I love it.
Works at AppleThe way you've handled the AI integrations is very elegant. A great implementation.
Mac userI love your app. Love it. The only one that does what I want it to do.
Mac userIncredibly lightweight. It has quickly become a go-to tool in my daily workflow.
PhysicianLove the app, and your development pace rocks.
Longtime userUsed by people at
Company names are places where users work. They do not imply endorsement or affiliation.
Results