Docs
What the servers do.
Local-first does not mean there are no servers. It means the servers are deliberately dumb about you. Here is their entire job.
A stateless pass-through
When you talk to the coach, the request passes through our server to the model and the reply comes back. The server does not keep the message or the reply. It is a relay, not a filing cabinet. The same holds for a Kata voice: the reply text passes to ElevenLabs to be spoken and is not stored there.
The few operational tables
| What | Why |
|---|---|
| Account and auth | So you can sign in and your plan is known. Provided by Supabase, hosted in the EU, Zurich region. |
| Aggregate usage counts | Message and voice tallies for fair use and billing. Never the content. |
| Referrals and consent | So earned months attach to the right invite, and which Terms and Privacy Policy version you agreed to, on which surface. |
| Personas | The compact archetype summary, not traceable to your data. |
| Plans, subscriptions and promos | Your plan and its status, billing records and any promo links: never your card number. |
| Push and notification schedule | Your push token if notifications are on, and the categories, quiet hours and timezone the scheduler honors. |
| Company membership | If a company covers you: your seat and its state, never anything you do in Kata. |
| Ciphertext | The sealed restore snapshot on Android and the web, and active secure shares: bytes we cannot open. Plus, if you use them, one yes-or-no value a day for Duo and Groups. |
The WHOOP token
When you connect WHOOP, the access token stays on your device, out of reach of page scripts where the platform allows it, and is used to fetch your data straight to you. Kata does not keep a copy of your WHOOP data on its servers. See WHOOP.
The operator cannot read your data
This is not a promise, it is an architecture. Your logs, chats, memory and photos are namespaced per account and stored only on your device; where a copy leaves it, the account snapshot on Android and the web or a secure share, it leaves sealed under a key we never receive. There is nothing for an operator, or an attacker who reached our servers, to read.