What we gave up by not shipping a web app
Native and local-first are choices with a bill attached. Here is what is actually on it.
1 min read

It is easy to write a marketing page about local-first software and never mention that the approach costs something. It does. Every NabuSuite app is a native desktop application with Rust underneath, and that decision has consequences we live with daily.
The bill
- Platform work does not generalise. NabuVoice ships on macOS; its Windows build is still in progress. On the web that sentence would not exist.
- Shipping is slower. There is no deploy button — there are signed builds, per-platform installers, and update mechanics for three operating systems.
- We cannot see inside the apps. There is no telemetry in a local-first app, so bug reports are what you tell us, and nothing else.
- Every model is a download. Speech and correction models are hundreds of megabytes that arrive on your disk instead of running on someone else's.
What we got
In exchange: dictation with no per-minute meter, because your machine did the inference. Agent sessions that survive the app closing, because a daemon on your machine owns them. Work that stays yours when a subscription lapses, because it was never in our custody. Apps that keep working on a plane.
The performance argument matters too, and it is a stated product value rather than an accident. Unused features are meant to consume zero resources — live terminal renderers are pooled and capped, and a pane that is not visible does not get to cost you anything.
The honest summary
Local-first is not free, not obviously correct, and not the right answer for every product. For a dictation tool that hears everything you say, and for a workspace that runs agents against your source code, it is the answer we are willing to pay for.
The test is simple: if our servers went away tomorrow, would your software still work? It should. That is the whole idea.


