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.
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:
.trash inside its data folder, where they stay until you delete that folder;hub-cache folder in the app's data folder;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.
| What | Set by | Why | How long |
|---|---|---|---|
| The game's own storage (local storage, IndexedDB, a cache of map files and a cache of scenario music) | The game | Needed 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 above | Until you delete it |
oh:analytics-consent (local storage) | The website and the game | Needed to remember your answer about counting visits | 180 days, then you are asked again |
oh:asset-sizes:v1 (local storage) | The website's front page | Remembers the download sizes it showed you, so they need not be fetched again. It identifies nobody | 6 hours |
_ga and _ga_H9EQ4JFZXZ (cookies) | Google Analytics | To tell a returning visitor from a new one. Set only after you say yes | Up to two years; deleted at once if you take your yes back |
| A security cookie | Cloudflare, which hosts the website | Cloudflare may set one to tell people from automated traffic | Decided by Cloudflare |
Umami sets no cookie and stores nothing on your device. Nothing else in Open Historia sets cookies.
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.
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:
cloud.umami.is and gateway.umami.is.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.
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) | When | What it receives |
|---|---|---|
| Website hosting (Cloudflare, United States and worldwide) | When you visit openhistoria.com | The 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 online | Which 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 website | Website only, while you play | See 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 English | Nothing 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 one | Which 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 off | Nothing beyond the request |
| Place search (Komoot's Photon, Germany) | When you type in the map's place search | The 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 video | Nothing 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 shows | Which flag is shown |
| Institution emblems (Wikimedia Commons, asean.org; beta versions) | When an institution's emblem is shown | Which 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 elsewhere | Which picture is shown |
| Download sizes (GitHub) | The website's front page | Nothing 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 below | Nothing beyond the request |
| Spellchecker (Google) | The desktop app on Windows and Linux may download a dictionary the first time one is needed | Which 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 Download | Which 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.
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 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.
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.
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.
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.
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.
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.
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.
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 app asks for no location, contacts, camera or advertising identifier, and contains no advertising or analytics software.
| What | Where | How long |
|---|---|---|
| Your games, saves, keys and settings | Only on your device | Until you delete them; what happens to a deleted game or scenario is described under What Stays on Your Device |
| Analytics, if you said yes | Google Analytics, United States | At most 14 months for the detailed data |
| Visit counts, and which application was used, if you said yes | Umami Cloud, in the United States | For as long as the project runs. They hold no name, email address, IP address or cookie |
| How many times each hub file was downloaded | GitHub (public) | While the hub shows them |
| How many times each app's install file was downloaded | GitHub (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 counter | Our import counter on Cloudflare | Up to 365 days from when each was written; no new ones are written |
| Old account data, if you had an account | Our server on Cloudflare | Until you ask us to delete it, or until we delete all of it, whichever comes first |
| Your hub posts, comments and likes | GitHub (public) | Until you or we remove them |
| Contributor License Agreements | cla-assistant.io and GitHub | For as long as the project uses the contribution |
| Emails you send us | Our inbox | As 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.
Where data-protection law such as the EU's GDPR or the UK GDPR applies, this is what we rely on for each thing:
| What | Legal basis |
|---|---|
| Counting visits with Google Analytics and Umami, and the cookies Google Analytics sets | Your consent. You can take it back at any time, as easily as you gave it |
| Playing the setup video from YouTube | Your 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 downloads | Our 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 Discord | Our legitimate interest in a feature of the app; it happens on your computer and you can switch it off |
| Old account data | Kept only so that you can ask for it or have it deleted (legitimate interest); it is used for nothing |
| Contributor License Agreements | Our legitimate interest in being able to show that the project may use the code it was given |
| Answering your emails and acting on your requests | Our 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.
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.
You have the right to:
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.
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.
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.
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.
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.
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