Privacy Policy

Last updated and in effect from 6 November 2026

Open Historia is a free, open-source strategy game. It runs on your own device: in the browser at openhistoria.com, as a desktop app for Windows, macOS and Linux, and as an Android app. This policy covers all of them, in their stable and beta versions. It explains what the game keeps on your device, what it sends elsewhere and to whom, what the project itself holds about you, and the rights you have.

Who is responsible. "We" means Nicholas Krol, an individual in the United States who runs the Open Historia project and its servers, and who is the data controller for what this policy describes. You can reach us at nichojkrol@gmail.com. Open Historia is a non-commercial project: it has no advertising, sells nothing and has no paid accounts.

The Short Version

What Stays on Your Device

Everything you make and play is stored on your device: in your browser's storage on the website, in the app's storage on Android, and in the app's data folder on the desktop. That includes:

You can delete any of it in the game, by clearing the site's data in your browser, or by uninstalling the app. On the desktop, uninstalling leaves the app's data folder in place: delete that folder too if you want everything gone.

Playing over your own network. If you turn on "Let other devices connect" in the desktop app, any device on your network can open, change and delete your games and scenarios and read the app's log, because the app's server has no password and no encryption. It is off unless you turn it on; use it only on a network you trust. If you run the game's server yourself, you are the one holding everything it stores.

Cookies and storage on your device

WhatSet byWhyHow long
The game's own storage (local storage, IndexedDB, a cache of map files and a cache of scenario music)The gameNeeded to play: your games, scenarios, settings, AI keys, logs, map data, music a scenario plays, and a speech model or a translation model you downloaded, as listed aboveUntil you delete it
oh:analytics-consent (local storage)The website and the gameNeeded to remember your answer about counting visits180 days, then you are asked again
oh:asset-sizes:v1 (local storage)The website's front pageRemembers the download sizes it showed you, so they need not be fetched again. It identifies nobody6 hours
_ga and _ga_H9EQ4JFZXZ (cookies)Google AnalyticsTo tell a returning visitor from a new one. Set only after you say yesUp to two years; deleted at once if you take your yes back
A security cookieCloudflare, which hosts the websiteCloudflare may set one to tell people from automated trafficDecided by Cloudflare

Umami sets no cookie and stores nothing on your device. Nothing else in Open Historia sets cookies.

Your AI Provider

To play, you connect an AI provider: for example Google Gemini, OpenAI, Anthropic, Groq, OpenRouter or DeepSeek, or a model running on your own computer or network. The game sends that provider prompts built from your game: the state of the world, recent events, and what you type as orders, chat and diplomacy. It can also do this in the background while a game is open. The game is translated on your device, and never by your provider, unless you turn on "Translate with my AI" (beta versions): then, if you play in a language other than English, it also sends scenario text, names on the map, the titles and descriptions of community posts, and in some languages the game's own text, to be translated (see Translation on Your Device). Your key is sent with every request.

What happens to that data is set by the provider's own privacy policy and terms; the provider, not us, is responsible for it. Some providers keep prompts, and some may use them to train models, depending on your plan. We never receive your key or your prompts. On the desktop app, a request that a provider won't accept straight from the page passes through the app's own local server on your computer on its way; it is not stored. If you let other devices on your network send AI calls through the desktop app (a setting in the beta versions), their keys and prompts cross your network without encryption. On Android, a request to a model on your local network is sent by the app itself.

Your own Agent (beta versions, on the desktop). Instead of a key, you can let an agent program you run yourself (Claude Code, Codex, OpenCode or Antigravity CLI) answer what you start. The game then writes each prompt as a file in a folder of its own inside the app's data folder, and your Agent reads it through the app's local server, which answers only this computer and only with the token the game writes into that folder. The file is deleted as soon as the prompt is answered or cancelled. Your Agent sends the prompt to its own provider under your account there, so that provider's terms apply, as above. The game never starts your Agent and never reads its sign-in.

If you want nothing to leave your computer, use a local model through Ollama, LM Studio or llama.cpp. The AI setup guide explains how.

Counting Visits

We would like to know how many people visit and play, and which version they use. For that the website's pages, and the game itself on the website and in the desktop app, can load two visit counters, only after you say yes. The first time you open a page it asks; until you answer, and if you say no, neither counter is loaded and nothing is sent to either. Saying no costs you nothing: everything works the same.

You can also change it in the game under Settings → General → Privacy, or with the Privacy choices link at the foot of each page. Taking a yes back switches both counters off at once and deletes Google's cookies. Your answer is kept on your device for 180 days, and then you are asked again.

Global Privacy Control and Do Not Track. If your browser sends a Global Privacy Control or Do Not Track signal, we treat it as a no: neither counter is loaded and you are not asked.

If you say yes:

The game also tells Umami which application it is: the website, the desktop app, the desktop beta, or a copy of the game's server that you run yourself. That is how we count the players of each. From the desktop app the address the counters receive is only localhost. A server you run yourself is counted only when you open it on the same computer, never at any other address, and not at all if you start it with OH_VISIT_COUNT=0. Our Umami account is in the United States, and we keep these counts for as long as the project runs; nothing in them is your name, an email address, an IP address or a cookie.

The Android app loads neither counter and never asks.

Older versions. Desktop versions released before 13 October 2026 loaded both counters whenever the game was open and online, without asking. Updating the app ends that. In such a version, blocking googletagmanager.com, google-analytics.com, cloud.umami.is and gateway.umami.is in a firewall or DNS filter stops both.

Services the Game Contacts

Any service you connect to sees your IP address and basic browser information. These are the services the game contacts besides your AI provider and, after a yes, the two visit counters:

Service (who runs it, where)WhenWhat it receives
Website hosting (Cloudflare, United States and worldwide)When you visit openhistoria.comThe pages and files you request
Map imagery (Esri ArcGIS Online, United States) and terrain (Amazon Web Services' open terrain tiles, United States)When the game starts and whenever the map is shown, while you are onlineWhich parts of the map you look at. A map-editor document made in an old version may also load OpenStreetMap's tiles
World map data on the websiteWebsite only, while you playSee The World Map below
Community hub (GitHub, United States)When you open the Community, Flags or Basemaps browsers, when you download a detailed map (beta versions, desktop app), and in the background when you have scenarios from the hub, have published one, or play in a language other than EnglishNothing beyond the request. Post images and avatars load from GitHub
Hub downloads on the website and Android (our own Cloudflare Worker)When you import, update or preview a scenario, flag or basemap, or suggest changes to oneWhich hub file you asked for. Our code keeps no record of it; the Worker fetches the file from GitHub for you. In the desktop app the file is fetched from GitHub by the app itself
Update checks and downloads (GitHub; the website checks openhistoria.com)At launch and every few minutes while the game is open. The desktop app also downloads the map from GitHub on its first launch, and downloads an update it finds when it starts. The beta Android app downloads an update when there is one; the stable Android app opens the download in your browser when you tap Update. The check cannot be switched offNothing beyond the request
Place search (Komoot's Photon, Germany)When you type in the map's place searchThe text you type
Setup video (YouTube, in its privacy-enhanced mode; Google, United States)Only when you press Play on the AI setup prompt's tutorial videoNothing beyond the request until you press Play; after that, what YouTube's player collects
Flags not built into the game (flagcdn.com, Flagpedia)When such a flag is shown. In the beta versions every country's flag ships with the game and is not fetched; the stable version fetches each flag it showsWhich flag is shown
Institution emblems (Wikimedia Commons, asean.org; beta versions)When an institution's emblem is shownWhich emblem is shown
Pictures a scenario names on another website (whoever runs that website)A scenario file can give a web address for a flag, a background or an emblem, and the picture is loaded from there when it is shown. The community hub refuses scenarios that do this (flagcdn.com aside), so it concerns scenario files you got elsewhereWhich picture is shown
Download sizes (GitHub)The website's front pageNothing beyond the request
Install counts (GitHub)Once per install: the desktop app, the desktop beta, the native app and the two Android apps each download their own small file the first time they start after being installed, or after updating to the version that added this, and never again. The website never does. See Install Counts belowNothing beyond the request
Spellchecker (Google)The desktop app on Windows and Linux may download a dictionary the first time one is neededWhich language's dictionary to download
Speech recognition in the desktop app (Microsoft on Windows; Apple on macOS where the Mac cannot do it itself; beta versions)While the Advisor's microphone listens through the system's own speech recognition (see The Advisor's Microphone)Your voice while it listens, sent by Windows or macOS, not by the game
Speech model for the Advisor's microphone (Hugging Face, United States; beta versions)Where the microphone runs a model on your device (see The Advisor's Microphone): once, after you press DownloadWhich model is downloaded. Nothing you say
Translation model (Hugging Face, or the game's own copy on GitHub; United States; beta versions)Once, after you press Download when you choose a language that needs it (see Translation on Your Device)Which language's model is downloaded. Nothing you translate

The game's fonts are part of the game and of the website; none are fetched from Google. A picture that the text of a scenario or of an AI answer points to on another website is not loaded by itself: it is shown as a link. Links to Discord, Reddit, GitHub and other sites open in your browser; those sites' own policies apply there.

Discord (desktop app)

When the Discord app is running on the same computer, the desktop app (and a copy of the game's server you start yourself) tells it what you are playing: the country you lead, the scenario and the in-game date, with how long you have been playing and a link to openhistoria.com. Discord shows this on your profile to people who can see your activity. This passes between the two apps on your computer and never reaches us; Discord's own privacy policy covers what it shows and keeps. To stop it, switch off "Show what I am playing on Discord" under Settings → General → Privacy, or turn off activity sharing in Discord (User Settings → Activity Privacy). In versions without that setting, only Discord's own switch stops it.

The Advisor's Microphone (beta versions)

The microphone on the Advisor's input bar turns what you say into a message. It never uses your AI provider: only the text you send reaches it, as if you had typed it. Which recogniser listens depends on where you play:

Nothing you say is recorded or sent to us. The microphone listens only from when you press it until your message is sent or you press it again.

Translation on Your Device (beta versions)

In some languages (Arabic, Chinese, Dutch, French, German, Indonesian, Italian, Portuguese, Russian, Spanish and Swedish, and Czech, Danish, Estonian, Finnish, Greek, Hebrew, Hungarian, Irish, Latvian, Lithuanian, Maltese, Romanian and Slovak) what the game's language packs do not cover is translated on your device, by an Opus-MT model from the University of Helsinki (CC BY 4.0). The game asks first, with the size of the download (110 to 150 MB, for your language only). The model is downloaded once, after you press Download, from Hugging Face or, for some languages, from the game's own copy on GitHub, and kept in the game's storage; it runs in the game, so the text it translates never leaves your device, and nothing is sent to your AI provider to be translated. If you prefer your AI provider's translations, Settings → General → Language has a switch, "Translate with my AI", which is off unless you turn it on, and is offered only once the model is downloaded. On, the text the model would translate is sent to your AI provider instead, as above, a few large requests at a time that count against your AI requests; what it translates is kept on your device, and the model translates whatever your provider does not answer. Off again, the model translates it all, and nothing more is sent.

The World Map (website only)

On the website, the world map is part of the site: its files are loaded from openhistoria.com itself, like the rest of the page, and nothing else is contacted for them.

Install Counts

To know how many people install the game, each app downloads one small text file of its own from the game's GitHub releases: main app.txt (the desktop app), beta app.txt (the desktop beta), native app.txt (the native app), android app.txt and android beta app.txt (the two Android apps). It does this once, the first time it starts after being installed, or after being updated to the version that added this. GitHub counts how many times each file is downloaded, and those counts are public on the release page. The request carries nothing about you or your games: no identifier, no settings and nothing added to the address. As with any website, GitHub sees your IP address and basic details of the connection, and GitHub's privacy statement applies.

The app then notes on your device that it has done this (in its own data folder, or in the Android app's own settings) and never downloads the file again. If you are offline it tries again on a later start, until one download goes through. It happens once per install whatever you answered about counting visits, because it counts installs, not visits. Removing the app together with its data and installing it again counts again. The website, and a copy of the game run from its source code, never download these files.

Import Counts

The hub shows how many times each scenario's file has been downloaded. GitHub counts that itself when the game downloads the file from the hub, and the count is public. The game reports nothing of its own.

Versions of the game from before 6 October 2026 reported each import to a counter we ran. To count each install once, it kept a one-way hash of your IP address, mixed with a secret, for 365 days, and for an import made while signed in to an old website account, a scrambled marker of that account. That counter no longer stores anything, and the hashes it already holds expire by themselves within a year of being written.

Publishing to the Community Hub

The community hub is a public GitHub repository, and every post there is a GitHub issue. Publishing needs a GitHub account: the game prepares the file and opens GitHub's form, and you submit the post yourself. Everything in a post is public, including:

The hub checks every file and republishes the checked copy, together with a list of the posts (your username, avatar and the post's text), in the same public repository; that list and those copies are what the game reads. Suggesting changes to someone's scenario posts a public comment with a file of your changes and the name and note you give. Likes are public GitHub reactions.

Scenarios are released under CC BY 4.0. Every scenario made in Open Historia that is posted or shared in any way, and every change suggested to one, is released under the Creative Commons Attribution 4.0 International licence. That cannot be taken back.

You can edit your posts on GitHub. To take one down, close it on GitHub with "Close as not planned", or ask us: its file and its entry are then removed from the hub. Copies people already downloaded, and the repository's history, are beyond our reach. We close or remove posts that are broken or abusive. GitHub's privacy statement covers GitHub itself.

Old Website Accounts

Earlier versions of the website offered an optional account, through an email link or Google sign-in, to sync games between devices. That feature has been removed, and the game deletes what an old sign-in left in your browser the next time it opens. If you made an account, we still hold on our server: your email address and the copies of what you synced. The synced copies are encrypted, but the key can be recovered by us (that is how an account could be recovered), so we are technically able to read them. We don't. Email us from the address you signed up with and we will delete everything tied to it, or send you a copy first if you ask.

Contributing Code

Contributions to the code need a signed Contributor License Agreement, collected through cla-assistant.io with your GitHub account. It records your name, email address and, if you sign for one, your organisation. Commits you make are public on GitHub with the name and email address you gave them.

The Android App's Permissions

The app asks for no location, contacts, camera or advertising identifier, and contains no advertising or analytics software.

What We Hold, and for How Long

WhatWhereHow long
Your games, saves, keys and settingsOnly on your deviceUntil you delete them; what happens to a deleted game or scenario is described under What Stays on Your Device
Analytics, if you said yesGoogle Analytics, United StatesAt most 14 months for the detailed data
Visit counts, and which application was used, if you said yesUmami Cloud, in the United StatesFor as long as the project runs. They hold no name, email address, IP address or cookie
How many times each hub file was downloadedGitHub (public)While the hub shows them
How many times each app's install file was downloadedGitHub (public)While the release holds the files. The counts are totals: no name, email address, IP address or cookie
Hashed IP addresses from the old import counterOur import counter on CloudflareUp to 365 days from when each was written; no new ones are written
Old account data, if you had an accountOur server on CloudflareUntil you ask us to delete it, or until we delete all of it, whichever comes first
Your hub posts, comments and likesGitHub (public)Until you or we remove them
Contributor License Agreementscla-assistant.io and GitHubFor as long as the project uses the contribution
Emails you send usOur inboxAs long as needed to answer them and to keep a record of what we did about a request

Requests to our website and our Worker pass through Cloudflare, which keeps its own short-lived technical logs. We keep no logs of our own of who visits or plays.

Why We Use It: Our Legal Bases

Where data-protection law such as the EU's GDPR or the UK GDPR applies, this is what we rely on for each thing:

WhatLegal basis
Counting visits with Google Analytics and Umami, and the cookies Google Analytics setsYour consent. You can take it back at any time, as easily as you gave it
Playing the setup video from YouTubeYour consent, given by pressing Play
Serving the website and the game's files, keeping them secure and available (Cloudflare)Our legitimate interest in running the site you asked to visit, safely
Drawing the map, flags and emblems, place search, hub browsing and downloads, update checks and downloadsOur legitimate interest in providing the features of the game you are using; each sends no more than the request itself
Counting installs (each app downloads its own file from GitHub once)Our legitimate interest in knowing how many people install each app; the download sends no more than the request itself, and happens once per install
Showing what you play in DiscordOur legitimate interest in a feature of the app; it happens on your computer and you can switch it off
Old account dataKept only so that you can ask for it or have it deleted (legitimate interest); it is used for nothing
Contributor License AgreementsOur legitimate interest in being able to show that the project may use the code it was given
Answering your emails and acting on your requestsOur legitimate interest in answering you, and legal obligation where the law requires us to act

You never have to give us personal information to play, and there is no contract that requires it. We make no decisions about you by automated means and build no profiles.

Your Rights

Most of what the game handles never reaches us, so you control it on your device. For anything we hold, email nichojkrol@gmail.com. We answer within 30 days, free of charge, and we may ask you to show that the data is yours (for an old account, by writing from its email address). Data held by Google Analytics, Umami, GitHub, Discord or your AI provider is covered by their own policies, but we will help where we can.

In the European Economic Area, the United Kingdom and Switzerland

You have the right to:

In the United States

This section is the notice that the laws of California and of other US states ask for, whether or not those laws apply to a project of this size.

Where Data Is Processed

We are based in the United States, and so are most of the services above: Cloudflare, Google, Umami, GitHub, Hugging Face, Esri, Amazon, Discord, Microsoft, Apple and most AI providers. Komoot is in Germany. Your data may therefore be processed in the United States and other countries whose laws differ from yours.

For personal data from the European Economic Area, the United Kingdom and Switzerland, these transfers rest on the European Commission's and the UK's adequacy decisions for US companies certified under the Data Privacy Framework, where the provider is certified, and otherwise on standard contractual clauses in the provider's terms, or on the fact that the transfer is needed to do what you asked for, such as fetching a file. Email us if you would like to know which applies to a particular provider.

Children

Open Historia isn't directed at children under 13, or under 16 where the law sets that age, and we don't knowingly collect personal information from children. The game has no accounts, no advertising and no profiling, and the visit counters stay off unless someone says yes. If you are under the age at which you can agree to that yourself where you live (13 in the United States and the United Kingdom, up to 16 in parts of Europe), please answer no, or ask a parent or guardian. If you believe a child's personal information has reached us, email us and we will delete it.

Keeping Your Keys Safe

Because your AI keys are stored on your device without encryption, don't share your device or browser profile with people you don't trust with them. Set a spending limit with your AI provider, and revoke a key there if you think someone else has it.

Changes to This Policy

When the game starts handling data differently, we update this page and the date at the top. We announce significant changes in the release notes and on our Discord, and if a change affects something you agreed to, you are asked again.

Contact

Questions or requests about privacy: nichojkrol@gmail.com. The source code of the game is public on GitHub, so you can check what this page says about it for yourself.

Play Open Historia