← Nightjar Browser

This is the version that shipped with Nightjar Browser 0.2.6. The current one is at /privacy.html.

Privacy Policy — Nightjar Browser

Status: draft. Not legal advice. This describes what the software does, written from the code rather than from intent, and is accurate as of the date below. It needs review by a lawyer in your jurisdiction before you publish it, and the placeholders marked […] must be filled in.

Every factual claim here is checked against the code by tests/test_legal_docs_match_the_code.py, so a change that makes one of them untrue fails the test suite rather than sitting here unnoticed. TERMS.md covers using the software and LICENSE covers the software itself.

Last updated: 2026-08-30 · Applies to: Nightjar Browser 0.2.6


The short version

Nightjar Browser has no servers. There is no account, no login, no telemetry, and no analytics. Nobody operating this software receives your browsing history, the pages you open, what you type, or what you ask the assistant — because there is nowhere for that to be sent.

Being a browser, it still contacts the websites you visit, exactly as any browser must. The rest of this document is about the handful of other things it contacts, and what it keeps on your own computer.


1. What we collect

Nothing. No usage data, no crash telemetry, no analytics, no unique identifier, no advertising ID.

This is a property of the code, not a promise about our conduct: the application contains no telemetry client and no endpoint to send one to.

2. The AI assistant

The assistant runs entirely on your machine. Model weights are executed by llama-server, a child process on localhost. There is no API key and no inference provider.

The page you are reading, your chat messages, files you attach, and text the assistant writes into form fields are processed locally and are never transmitted to us or to any third party.

One setting can change that, and only if you set it. Under AI settings you may point the browser at another OpenAI-compatible engine. Nightjar also offers engines it finds already running on this computer — Ollama, LM Studio, llama.cpp, vLLM — on their usual loopback ports; those are other programs on your own machine, and using one sends nothing over a network, though what that program does with what it receives is governed by that program and not by us.

An engine at an address that is not this computer is different in kind: everything the assistant reads is sent to it, which means the open page, your chat messages and any file you attached leave this machine and are handled by whoever runs that server. Nightjar warns before saving such an address, marks it as remote in the model picker, and never selects one on its own. Discovery of local engines can be turned off entirely in the same settings pane.

3. When Nightjar Browser contacts the network

Beyond the websites you choose to visit:

What Where When
New-tab page and address-bar searches google.com Every new tab; every non-URL search
Model downloads huggingface.co Only when you choose to download a model
Inference runtime downloads github.com Only when a runtime is installed or updated
Update check api.github.com Only when you press "Check for updates"
Ad/tracker filter lists easylist.to Only if "Update the blocklist automatically" is on
Model catalogue sync remote registry Only if "Registry sync" is on (off by default)
Address-bar suggestions your search provider Only if "Online suggestions" is on (off by default)

Each of these sees your IP address, as any web request does. The update check sends a User-Agent of NightjarBrowser/<version> and nothing identifying the machine.

The new-tab page is worth calling out. It opens google.com, so a new tab contacts Google before you type anything, and Google receives that request as it would from any browser. You can change this: set homepage in Settings to the bundled offline start page, which makes no network request at all.

4. What is stored on your computer

In your application data folder (%LOCALAPPDATA%\NightjarBrowser on Windows, ~/Library/Application Support/NightjarBrowser on macOS):

None of this is synchronised, backed up, or transmitted. Deleting the folder deletes all of it.

Cookies. Private browsing is on by default: cookies are held in memory and discarded when the browser closes, so you sign in again each launch. Turning it off in Settings keeps them on disk instead.

5. Crash reports

If the application crashes it writes a report to your own machine and shows it to you. Nothing is uploaded. There is no crash-reporting endpoint. If you choose to send it, you do so yourself, by email, having read it.

A report contains the error, a hardware and OS description, which model was last loaded, and the app's own startup errors. On Windows it also lists what Windows Error Reporting recorded: the faulting module and exception code. It deliberately excludes browsing history, page URLs, page content, chat messages, attachments, cookies, and the inference server's log.

fatal.log. Some crashes kill the process outright, giving the application no chance to write anything. For those, a Python stack trace is written to fatal.log in the data folder as the process goes down. It holds file names, line numbers and function names — not variables, not page text, not chat messages. It does contain the full paths of the files involved, which on Windows include your user name.

Crash dumps are a different thing, and are not ours. If you or your system administrator have switched on Windows' LocalDumps for this application, Windows writes a memory dump to %LOCALAPPDATA%\CrashDumps. A full dump is a copy of everything the process had in memory, which can include the page you were reading and what you asked about it. Nightjar does not create these, does not read them, and never attaches one to a report — it only tells you that one exists, so you can decide what to do with it. Deleting them is safe.

5a. Feedback

Send feedback in the ⋮ menu writes a report and shows you all of it before anything happens to it. Nothing is uploaded. The buttons copy it to your clipboard and open a feedback form in a tab, or save it to a file; the browser itself makes no request. You choose between a mail draft, which opens your own mail app with the report ready to send, and copying it to paste into a feedback form — and in both cases what leaves is a decision you take, after reading it.

The report carries the version, your hardware and OS, which model and runtime are loaded, whether Smart App Control is on, and the recent lines from the Activity tab. It excludes browsing history, page content, chat messages, attachments and the inference server's log — the same exclusions the crash report makes, for the same reason.

The page you are on and your last question can be added by ticking a box. It is off by default, and the preview grows to show exactly what ticking it adds, so nothing travels that you have not read.

6. What we send on your behalf

Nightjar Browser sends Global Privacy Control with your requests — Sec-GPC: 1 and DNT: 1 headers, and the navigator.globalPrivacyControl property. Under CCPA/CPRA and several other laws this is a binding instruction to a site not to sell or share your personal information.

On Windows the headers accompany the page itself and the request types that carry tracking — scripts, XHR, fetch, websockets, beacons. They are not attached to images, media, fonts or stylesheets: a video fragment is not something a site makes a selling decision about, and stamping every one of them measurably destabilised the browser during playback.

On macOS they accompany top-level page loads only; WKWebView provides no way to attach headers to subresource requests. The JavaScript property is present everywhere on both platforms.

It also blocks requests to known advertising and tracking hosts, and suppresses cookie-consent banners, before those requests are made.

7. Third parties

Nightjar Browser is not affiliated with the sites you visit. When you download a model or a runtime, that download is subject to the terms and privacy practices of the host (Hugging Face, GitHub) and the licence of the model itself — LICENSE §5 lists the components that ship inside the application and the licences they arrive under. When you search or open a new tab, that is subject to Google's terms and privacy policy.

8. Children

Nightjar Browser is not directed to children under 13, and collects no personal information from anyone.

9. Your rights

Because we hold no data about you, there is nothing for us to disclose, correct, export, or delete. Everything the software stores is on your computer and under your control. Requests of that kind should be directed to the sites you visited, not to us.

10. Changes

Material changes will be noted here with a new date. Because there is no account, we have no way to notify you individually.

11. Contact

[CONTACT EMAIL] [LEGAL ENTITY NAME AND ADDRESS, IF ANY]