Where your data lives
Tostada has two modes. Which one you're in depends on how the app you're using was built, not on a setting you can flip mid-session.
Local mode — the default, and the one that never goes away
Run Tostada from the repo, or from the npm package, and everything stays in your browser:
- Your library — every token, family, principle, rule and override — under
the
tostada-librarykey inlocalStorage. - Your undo stack and change history.
- Your Anthropic API key, if you set one (AI & BYOK).
There is no account, no server, and nothing to sign into. This is not a degraded free tier — it is the whole product, and the open-source build physically cannot contain the cloud code. Our own test suite runs against a build with no server configuration on every commit, which is what makes that a fact rather than a reassurance.
Back it up. localStorage is not durable storage: incognito wipes it on
close, "clear site data" wipes it, and browser sync can clobber it across
machines. Export your library as JSON regularly.
Cloud mode — app.tostada-ui.app
Sign in and your library lives in your organisation, so your team sees the same system. Three things are worth knowing.
Your device always has a current copy
Every save writes to your device first, then to the server. So when the network goes, the banner saying "changes kept on this device" is already true — it isn't a promise about what happens next. You can keep editing, and even reload the page and carry on from that copy; the next successful save reconciles it.
Your local library is never touched
The device copy lives under its own key. If you had a personal library in local mode and then signed into a team account, that personal library is exactly where you left it, and it comes back when you sign out.
Your first sign-in offers to copy it up into your team's library. Both answers leave the local one alone — "import" makes a copy, it doesn't move anything. You can also do it later from Settings → Local library.
If two people save at once, you're told
Tostada doesn't merge concurrent edits. What it does instead is notice: if someone saved while you were working, your save is held and you're shown who changed it and when, with two choices — load their version, or keep yours. The one thing it won't do is pick for you quietly.
What leaves your browser
| Mode | Library data | AI prompts |
|---|---|---|
| Local | never | to Anthropic, on your key, only when you ask |
| Cloud | to your org's database | same |
Neither mode sends anything anywhere else. See Privacy for the AI side in detail.
Roles, and what they actually enforce
In an organisation, everyone has a role: reader, editor or admin. A reader gets the developer hand-off — copyable variables, the full export bundle — and cannot change the system.
That isn't just hidden buttons. Permissions are enforced by the database, so a reader's write is refused at the source whatever the browser does. The UI reflects the rule; it isn't the rule.
Getting your data out
Export as JSON, in both modes, always. That's the escape hatch, and it isn't going anywhere — if it ever did, the licence on the local build would let you fork the last version that had it.