Privacy policy
Effective 12 October 2026 · Version 1.0
The short version
- The website collects almost nothing. noro.to has no accounts, forms, analytics, ads or tracking cookies, and loads nothing from other companies. Our host, Cloudflare, processes your IP address to deliver the pages.
- The software runs on your machine. noro has no telemetry and no noro server. We, the noro contributors, never receive your exports, reports or keys.
- Model providers you choose do receive some data. When noro calls a model, it sends fact ids, labels (such as metric, campaign and ad-group names and period labels) and instructions. In revision mode it sends your report’s prose with its numbers replaced by ids. It never sends your raw rows or metric values. Your agreement with that provider governs what happens next.
- You can run noro with nothing leaving your machine, using a local model or the built-in rules.
- We don’t sell or share personal information, and we never use it for advertising.
The rest of this page gives the detail, in two parts: the website, then the software.
Who we are
noro is an open-source project maintained by the noro contributors. For this policy, the operator of noro.to and the controller of the personal data described in part 1 is:
[OPERATOR LEGAL NAME]
[OPERATOR POSTAL ADDRESS]
Privacy contact: [CONTACT EMAIL]
Please send privacy requests to that email address, not to a GitHub issue. GitHub issues are public.
Part 1: the website (noro.to)
What we collect
Request data, through our host. noro.to is a static site served by Cloudflare Pages. Like any web server, Cloudflare processes the details your browser sends with each request: your IP address, the page requested, the time, your browser’s user agent and the referring page. Cloudflare uses this to deliver the site and protect it from abuse. We can see aggregate traffic figures in the Cloudflare dashboard, such as request counts and countries. We do not receive or keep individual access logs, and we don’t try to identify visitors. Cloudflare processes this data as our processor under its data processing addendum and privacy policy.
Fonts. The site’s typefaces, Geist and Geist Mono, are served from noro.to itself. Loading a page contacts no font service or other third party.
Settings stored in your browser. If you switch between light and dark themes, the site saves your choice in your browser’s local storage under the key noro-theme. If you pick a tool or a model on the install page, it saves those choices under noro-install-tool and noro-install-writer. These values stay on your device. They are never sent to us or anyone else, and they don’t identify you. You can clear them at any time through your browser’s site data settings.
What we don’t collect. No cookies, no analytics or tracking scripts, no advertising pixels, no fingerprinting, no forms, no accounts and no newsletter.
Links to other sites
The site links to GitHub, npm and the documentation of the tools noro works with. When you follow a link, that site’s own privacy policy applies. Product logos on noro.to are inline images stored on our site; they don’t contact the companies they represent.
Why we process it (legal basis)
For visitors in the EU, EEA, UK and Switzerland:
| Processing | Legal basis |
|---|---|
| Request data processed by Cloudflare to deliver and secure the site | Our legitimate interest in running a working, secure website (GDPR article 6(1)(f)) |
| Theme and install-page choices in local storage | Stored only because you asked for that setting. This is storage strictly necessary for a feature you requested, so no consent is required under ePrivacy rules |
Because we set no non-essential cookies or trackers, the site has no cookie banner.
How long we keep it
We keep no personal data from the website ourselves. Cloudflare keeps request data for the periods set out in its own policies. Your browser keeps local storage values until you clear them.
International transfers
Cloudflare serves the site from data centers worldwide, so your request may be handled outside your country. Cloudflare takes part in the EU-US Data Privacy Framework and its UK and Swiss extensions, and also uses standard contractual clauses.
Part 2: the noro software
This part covers the open-source noro software however you get it: npm (@noro-to/noro), the Docker image (ghcr.io/noro-to/noro), a GitHub checkout, the Claude and Codex plugins, the skill, or the MCP server.
noro runs on your machine
noro is a program you run yourself. There is no noro account and no noro server. The software contains no telemetry, analytics, crash reporting or update checks. The noro contributors never receive your exports, reports, keys or usage information.
Because of this, we are not the controller or processor of any data you handle with noro. You decide what to feed it and which model providers to use. If your exports contain personal data about other people, you are responsible for handling that data lawfully.
What leaves your machine
noro only connects to the model providers you configure. Here is what each step sends.
| Step | Sent | Sent to |
|---|---|---|
| Classify | Fact labels (metric names, campaign and ad-group names, period labels), coarse descriptors with no digits, such as “up”, “large” or “small sample”, rule flags and the currency code | The classify provider: OpenRouter and TypeSafe by default, TypeSafe directly, or a local decision model |
| Draft, panel and revise | Fact cards (id, label and classification), reviewer personas, writing instructions and the draft in template form, where every number appears as an id such as {{f12}} | The writing provider you choose |
Revision mode (.md or .txt input) | Your report’s prose, with each number noro recognizes replaced by an id. Names, wording and any text without numbers are sent as you wrote them | The writing provider you choose |
noro doctor --live | A one-token test request, only after you confirm | Each configured provider |
What never leaves your machine: raw export rows, metric values, display strings, formulas and sample sizes. Code computes every number locally, and the finished report is assembled locally.
Labels can identify a client. Campaign names and period labels are sent as they appear in your export, and so is revision-mode prose. If a campaign name contains a client or brand name, the model provider sees it. Rename campaigns before export, or use a local model, if that matters to you.
Request headers. Requests to OpenRouter include the headers HTTP-Referer: https://github.com/noro-to/noro and X-Title: noro, which tell OpenRouter that the request came from noro. They contain nothing about you or your data.
Model providers are yours
You connect noro to providers using your own API keys or your own logged-in tools: for example OpenRouter, TypeSafe, Anthropic, OpenAI, Google (Gemini API and Vertex AI), Amazon Bedrock, Microsoft Azure, Mistral, DeepSeek, Groq or any OpenAI-compatible endpoint. Each provider processes what noro sends under your agreement with it, including its own rules on logging, retention and model training. We have no agreement with these providers on your behalf and no access to your account with them. Check each provider’s privacy settings. OpenRouter, for example, lets you exclude providers that train on prompts.
Subscription CLI writers. With claude-cli or codex-cli, noro starts your own installed Claude Code or Codex CLI, logged in to your own subscription, and passes the writing request to it. noro never reads, stores or passes your login. The vendor’s tool sends the request to Anthropic or OpenAI, and may collect its own usage data, under that vendor’s terms and privacy policy.
Local models. With Ollama, LM Studio, llama.cpp or another model on your own machine, plus a local decision model or the built-in rules (NORO_CLASSIFY=rules), nothing leaves your machine when noro runs. Downloading the models still contacts their hosts. Some Ollama models marked :cloud run remotely on Ollama’s servers.
AI agents and the MCP server
If you run noro from an AI agent (Claude Code, Codex, Cursor, GitHub Copilot or another MCP client), the agent receives noro’s output. That output is the finished report and fact table, with real numbers. Your agent sends what it reads to its own model provider under that provider’s terms. The same applies to any file you ask the agent to read.
What noro stores on your machine
.noro/in the folder you run noro from. Checkpoints for each run, in SQLite files under.noro/runs/, so an interrupted run can resume. They contain your ingested data, computed facts, model requests and model outputs. Your own personas and adapters can also live here. Delete the folder to remove them..envin the current folder, or~/.config/noro/.env. Your API keys and settings, in plain text. noro sends each key only to the provider it belongs to, as authentication. Keep these files private and out of version control.- Reports are printed to your terminal or written where you tell noro to write them.
Downloading and running noro elsewhere
Getting noro involves other services, each under its own privacy policy:
- npm (run by GitHub) when you install
@noro-to/noro - GitHub when you clone the repository, use Codespaces, open an issue or run the scheduled GitHub Actions template. In that template, your export and report are processed on GitHub’s runners, and your keys are stored as GitHub secrets
- GitHub Container Registry when you pull the Docker image
- Plugin and skill directories (such as the Claude plugin marketplace or skills.sh) when you install noro through them
Contributing and reporting issues
Issues, pull requests and discussions on GitHub are public. Don’t post exports, reports, client names or keys there. GitHub’s privacy statement covers those interactions. To report a security problem privately, follow SECURITY.md.
Your rights
Depending on where you live, you may have the right to access, correct or delete personal data about you, to object to or restrict its processing, to data portability, and to withdraw consent. To use any of these rights, email [CONTACT EMAIL]. We’ll reply within one month.
In practice we hold no personal data about website visitors and receive none from the software, so most requests will concern data held by Cloudflare, or by the model providers you use. We’ll help you reach them.
If you’re in the EU, EEA or UK, you can also complain to your data protection authority. In the UK that is the Information Commissioner’s Office.
California and other US states. We don’t sell or share personal information, use it for targeted advertising, or use it to profile you. We have nothing to opt you out of, and we treat Global Privacy Control signals as an opt-out anyway. We don’t discriminate against anyone for using their privacy rights.
Children
noro.to and noro are tools for professionals and are not directed at children under 16. We don’t knowingly collect data from children.
Security
The site is served only over HTTPS and stores nothing about you on our side. The software keeps your data on your machine. Protecting that machine, your .env files and your provider accounts is up to you.
Changes to this policy
We’ll update this policy when the site or software changes what it collects or sends. Each version gets a new effective date and an entry in the change log below. For material changes, we’ll also note the update in the noro changelog on GitHub. The full history of this page is public in the site’s repository.
Change log
| Version | Effective | Change |
|---|---|---|
| 1.0 | 12 October 2026 | First version |
Contact
[OPERATOR LEGAL NAME], [OPERATOR POSTAL ADDRESS]
Privacy: [CONTACT EMAIL]
General questions: GitHub issues