Privacy policy

Effective 12 October 2026 · Version 1.0

The short version

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.

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.

For visitors in the EU, EEA, UK and Switzerland:

ProcessingLegal basis
Request data processed by Cloudflare to deliver and secure the siteOur legitimate interest in running a working, secure website (GDPR article 6(1)(f))
Theme and install-page choices in local storageStored 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.

StepSentSent to
ClassifyFact 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 codeThe classify provider: OpenRouter and TypeSafe by default, TypeSafe directly, or a local decision model
Draft, panel and reviseFact 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 themThe writing provider you choose
noro doctor --liveA one-token test request, only after you confirmEach 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

Downloading and running noro elsewhere

Getting noro involves other services, each under its own privacy policy:

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

VersionEffectiveChange
1.012 October 2026First version

Contact

[OPERATOR LEGAL NAME], [OPERATOR POSTAL ADDRESS]
Privacy: [CONTACT EMAIL]
General questions: GitHub issues