Loading...
Loading...
Narraitor
The short, honest version: your stories live in your browser. What leaves it is the prompt sent off to generate the next part of the story, plus anonymous counts of how the app gets used and what breaks.
Last updated August 2026
Your worlds, characters, and saved stories are stored locally in your browser, on the device you're using. They aren't uploaded to a server — there isn't one holding your stuff.
From Settings you can export everything to a file and import it back — that's your backup, and it's the only copy of your saved data that leaves your device, when you choose to make it. Clearing your browser data for this site erases everything, so keep an export of anything you'd be sad to lose.
To write the story and generate images, the app sends your prompts — the world and character details you create, and the choices you make — by way of its own server, which passes them on without keeping a copy, to the provider that does the generating. By default that's Google Gemini; if you've set up your own provider key, it goes to whichever provider you chose instead.
What that provider does with what you send is governed by their terms, not ours. The practical upshot: treat a prompt like anything you'd paste into a third-party service, and don't put passwords, secrets, or real personal data you'd rather not share into it.
There's no sign-up, no login, no profile. The app doesn't know who you are, and nothing ties your stories to an identity.
Usage is measured with Vercel Web Analytics: anonymous, cookieless counting of page views and a few funnel steps — did someone land on the site, create a world, start a session, come back. Because it's cookieless, there's no consent banner to click through.
No personal data, and nothing derived from your content — world names, character names, prompts, story text — is ever sent to it. It exists to answer one question: does the first-play flow actually work for someone new.
If the app crashes or a request fails, it sends a short report so the break is visible instead of silent. A report holds five things: which part failed, the error's class name, a category like “network” or “timeout”, the page you were on with any ids swapped out, and the stack trace.
What it deliberately leaves out: the error message itself, anything from your worlds, characters, or story, whatever you typed, and your provider key. The message is read on your device to pick the category, and then it's dropped — only the category travels.
This note matches how the app works today: local-first, no accounts. If that ever changes — accounts, server-side saves, syncing across devices — this note changes with it, and the change shows up right here.