Your decks are yours, and they stay with you.
Last updated 3 November 2026
OpenSlides needs no account, and nothing you make is sent to us unless you use AI on Account credits. There are no third-party analytics. This page says exactly what is stored, where, and which requests leave your browser.
What the studio stores, and where
The studio at openslides.dev/studio is a set of static files. Once loaded, it runs entirely in your browser tab.
- Decks, images, recordings and narration are kept in your browser’s own storage (IndexedDB) on this device. They are not stored by us. The one time any of it reaches a server of ours is an AI turn on Account credits, described below.
- AI and voice keys you add are stored the same way, in your browser. You can encrypt them with a passphrase that is asked for once per session, and remove them all with “Forget all keys”.
- Clearing this site’s data in your browser deletes all of it. Save a .openslides.zip first if you want a copy.
Requests that leave your browser
The studio sends nothing you make anywhere on its own; besides the anonymous step counts described under “What this website logs” and the self-audit below, these requests happen only when you use the feature that needs them. All of them go directly from your browser to the service, except the two marked as ours.
| When you… | Your browser contacts | What it sends |
|---|---|---|
| Use the agent with your own key, a local model or an agent server | The provider you chose: Anthropic, OpenAI, OpenRouter, an OpenAI-compatible service or URL, your local model, or your AG-UI agent server | Your key and the parts of the deck the turn needs |
| Sign in, buy credits, or open the account page | Ours: auth.openslides.dev, the sign-in and credits server | Your sign-in, and the purchase you make |
| Use the agent, a plan or a dub’s translation on Account credits | Ours: gateway.openslides.dev, which passes the request to Anthropic | Your session (not a key) and the parts of the deck the turn needs: the prompt, the slides it reads and any attachments |
| Use a cloud voice | ElevenLabs, OpenAI or another voice provider you add | Your key and the script being spoken |
| First use a browser voice, or word timings for a recorded take | Hugging Face, to download the model | Only the name of the model file; the model then runs on your device, and your audio and script never leave it |
| Import a community component from a GitHub gist | GitHub | The gist’s address |
What the other services do with a request is governed by their own terms. A local model in Ollama or LM Studio never leaves your computer.
Account credits
Credits are optional, and the only part of OpenSlides that needs an account. Everything else works without one.
- The sign-in server (auth.openslides.dev) keeps your account: how you signed in and the name or email that comes with it, your balance, your purchases, and a ledger entry for each charge — the amount, the time and what it was for. A card payment is handled by Stripe, and a crypto or Lightning payment by its network; we do not see your card number.
- The gateway (gateway.openslides.dev) receives each AI call made on credits, checks your session, sends the call to Claude at Anthropic, and charges your credits for the tokens the model reports. It holds the model keys, so no key is in your browser.
- What is kept from a call: the gateway does not store your prompt, your deck or the answer. Its routing service logs each call’s account id, model, token counts, cost, credits and timing, and a hashed fingerprint of the wording that helps it pick a model. That fingerprint is a list of numbers, not the text. Anthropic handles the call under its own commercial terms.
On your own key, a local model or an agent server, none of this applies: those calls never reach our servers.
Sharing a deck
Share writes a folder of static files on your computer. OpenSlides does not upload it or host it — where it lives is your choice.
- The audience copy is built with the speaker notes and every author-only field removed from its data, so there is nothing to find in the page source.
- The presenter copy keeps the notes and is always locked with its own key.
- A private link is encrypted in your browser. Its key sits after the
#in the link, which browsers do not send to the server, so whoever hosts the files stores only what they cannot read. A passcode works the same way, with a code you hand out separately.
What this website logs
The web server that sends you these pages keeps ordinary access logs — the requested path, a timestamp, the site that linked here (its name only, not the full address), your browser’s user-agent string and your IP address — for up to 90 days, to keep the server running and to spot abuse. They are not used to build a profile of you, not combined with anything else, and not shared. Nothing in them is connected to your decks: the logs record addresses, not what a request contained.
The pages of this website — such as this one, the product page at openslides.dev and the blog — also count visits: which page was opened, roughly which country the request came from, which browser and screen size, and which link led here. The counter is self-hosted on our own server, not a service anyone else runs. It sets no cookie, stores no cross-site identifier, and keeps nothing that names a reader or follows one from here to anywhere else. What it produces is a count of pages, not a record of people, and none of it is sold or handed on.
In the studio the counter also keeps anonymous counts of how far a task gets (for example started, exported or presented) — never your files or their contents: it never sees your decks, their titles, what you type, your prompts or your file names. Any deck you open or share carries no analytics. This site runs no third-party analytics and no advertising scripts.
Browser self-audit (runs on every visit)
So we can see how exposed our visitors are to browser fingerprinting — and reduce it — every page of this site, the studio included, reads a set of environment characteristics from your browser and sends them to an endpoint we run at openslides.dev/api/browser-samples. It runs without asking first. It reads values your browser already exposes to any site: the user-agent string, platform, languages, CPU count, device memory, touch points, screen and window size, colour depth and pixel ratio, timezone and UTC offset, colour-scheme and reduced-motion preferences, which of 26 common fonts are installed, the system colour palette, which media codecs the browser can play, the WebGL vendor and renderer strings with their graphics limits and shader precisions, a canvas-rendering hash, an audio-rendering hash, and navigation timings.
Each visit is measured once per tab and sent as a JSON object with a random id generated for that page and thrown away. The endpoint records no IP address, and the sample is not joined to your account, your decks, your prompts or your files.
The values are stored as they were read — no hashing of the user-agent, the font list or the GPU name — because the point is a report a person can read. Combinations of these values can be distinctive, so we treat the dataset as pseudonymous personal data rather than anonymous, and it is handled as such.
We keep a day's samples, send them as a table and a compressed file to the project's own Telegram group, delete the raw file after the daily report, and prune the table after 30 days. It builds no profile and follows no one across sites; its purpose is to tell us where to harden the site, not to recognise you.
There is no setting that turns this off. If you would rather not be measured, block requests to openslides.dev/api/browser-samples in your browser or with an extension — the site works exactly the same without them.
Children
OpenSlides is not directed at children. Without an account it holds no account, name or contact details from anyone; the self-audit above describes a browser, not a person. An account is needed only for Account credits.
Changes
If this policy changes, the date at the top of the page changes with it.