Why we build local-first
Most software treats your data as the price of admission: hand it over, and we'll do something useful with it. We think that trade is backwards. The tools you depend on should do their work where the data already lives — TwinMail builds its search index locally, TwinContacts dedupes in the browser, and neither phones home to do its job.
What local-first means
It means the core of each product runs where your data already lives: on your device. Message bodies, contact records, vault entries, search indexes — they stay local. The network is something your data crosses only when you decide it should, with the exact payload shown to you first.
What you get
- Speed. Local data is instant. No round trips to render your inbox or search your archive.
- Availability. Your data works offline, because it was never somewhere else.
- Control. Cloud features are opt-in and disclosed. Consent is recorded as an event you can review and revoke.
- No brokering. There's nothing to sell when the data never sat on our servers in readable form.
Why it's worth the difficulty
Local-first is harder, and the costs are specific: sync without a server-side source of truth, conflict resolution with no referee, consent designed into every boundary crossing, and none of the easy telemetry. We pay those costs on purpose. That work is what keeps your data yours, and we'd rather ship slower than ship something we'd have to apologize for.