As little as the features need, and nothing at all until you sign in. This page says what, where, and for how long — every line of it is checked against the code, which is open for you to check too.
Last updated 17 September 2026
Norboten is an open-source project run by one person, Ihar Petushkou, from Kraków, Poland. The site norboten.org and the API api.norboten.org run on a single server rented in the European Union. Anyone may run their own copy; this policy covers only the one at norboten.org.
The labs, the virtual machines, the grading, the theory, the journals and the tutor all run on your own computer. Without signing in the terminal app talks to the network only to download what it needs (Lima, the golden images), to ask PyPI whether a newer version exists, and to read the public boards and live sessions from the API — requests that carry no identity. The tutor runs on your machine too, on the model it finds there — Claude Code on your own subscription, your own API key, or a local Ollama — and nothing of it passes through our server. There is no telemetry in the terminal app.
The site is static files. It sets no cookies. When you sign in, the site keeps a token in your browser's storage — localStorage under norboten.token if you ticked "Remember this browser" (valid 90 days), otherwise sessionStorage (valid 12 hours, gone when the tab closes) — and, for the minute a sign-in takes, a random norboten.signin.state value that protects it from forgery. Signing out deletes the token here and on the server.
Analytics. This build loads Google Analytics 4 (G-PN1DY72GTY), which sets Google's own _ga cookies and reports pages viewed, the referring site, the device type and an approximate location to Google. Google Analytics is only ever on when the server's operator sets a measurement ID when building the site; a self-hosted copy has none unless its operator adds one.
The consultant (the chat button) answers with a model that runs on our own server. Your question is not stored: the server records only that a question was asked, the lab page it came from, and whether it was refused. An AI client connected over MCP is recorded the same way — which tool was called and whether the caller was signed in, not what it asked.
You sign in with GitHub, and nothing else — there is no password and no email. GitHub tells us your numeric GitHub user id and your login, with no extra permission asked; the GitHub token that carried them is revoked at once and never stored. What the server keeps:
Your nick, country, GitHub login, attempts, ratings and activity heatmap form your public profile and appear on the boards — that is what an account is for.
The country guess. To pre-fill the country field, the server looks up the address your request came from in an offline table (DB-IP Lite, a file on our own server). The address is not sent anywhere and not stored, and the guess is not stored either — only the country you actually submit.
Linking Discord is optional. It asks Discord for your identity only, plus permission to add you to the Norboten server if — and only if — you tick that box, which is off by default. Discord's token is used for those calls and dropped; we keep only your Discord user id, whether you want the weekly digest (off by default), and the last error Discord gave when a digest could not be delivered. The digest is a direct message from our bot. Unlinking deletes the id.
Nothing you do in a lab is recorded unless you ask. p records to your own disk. P publishes a session, after a confirmation, and it is public by design: anyone on the Live page sees your terminal, the commands you type and the files you change, with your nick and country. A published session and its recording are deleted automatically a week after it started. Do not type anything into a published session that you would not show a stranger.
Donations go through Stripe Checkout. Your card, name and address are entered on Stripe's page and never reach our server; nothing about a donation is stored here. Stripe's own privacy policy applies to what you give Stripe.
Your profile page shows everything the server holds about your work; the account page lists where you are signed in, and signing out there ends that sign-in. Deleting the account is yours to do, on the account page: type your nick to confirm and the profile and nick, every attempt and rating, open rated attempts, the recordings your Play sessions left, the GitHub and Discord links and every token are deleted at once — nothing is kept and nothing can be restored. The nightly backups still hold a copy, which ages out on the schedule above: gone from every backup within 8 weeks. You can also revoke Norboten in your GitHub settings under Applications at any time, and anything left unclear can be asked on GitHub or the community server.
The code and the content in the repository are licensed Apache-2.0. The country table is IP geolocation by DB-IP, licensed CC BY 4.0.
Questions about this policy go to the GitHub issues or the community. When what Norboten keeps changes, this page changes with it, in the same commit, and the date at the top moves; the full history is in the repository.