Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

The privacy badge

The pill in the top-right corner of the window tells you, at a glance, where your content can go right now. It reads 100% local, with a shield icon, most of the time, and it changes the moment that stops being true — when the chat is set to a model on another computer, when a request is on its way out, or when DocGraph refuses one.

The privacy badge reading "100% local" with a shield icon, above the chat, where a local Ollama model is selected.

It is status, not a switch. Nothing is turned on or off by it; the rules live in the code that makes each connection, and the badge reports what those rules are doing. Click it (or press Enter on it) to open Settings → Privacy → Activity & audit, the log of the connections DocGraph has made off this machine.

BadgeWhat it meansWhen you see it
🛡 100% localNothing is leaving your machine, and the chat’s model runs on it.The normal state.
☁ Cloud AI · providerThe chat is set to a hosted model (OpenAI, Anthropic, OpenRouter, or a custom endpoint on the internet). Your messages, the note excerpts sent with them, and — in agent mode — files the model reads go to that provider.While such a model is selected. The dot pulses while a request is in flight.
☁ Remote AI · providerThe chat is set to a model running on another machine on your network — an Ollama server on a different computer, or a custom endpoint on your LAN. It is not “the cloud”, but your content still leaves this machine.While such a model is selected.
External agentAn external agent (Claude Code, Codex, …) is the chat’s source. DocGraph hands your message to it, but the agent makes its own network calls with its own account, and DocGraph cannot see them.While an agent is selected in the chat, and while one is running.
ExternalDocGraph itself is talking to the internet for something you asked for. The tooltip names what and where.For the length of the request: an update check or download, a model download, a web search, a git push or pull, a request to a remote Ollama.
BlockedDocGraph refused a connection that isn’t on its allowlist. Nothing was sent.For a few seconds after the refusal.
Agent auto-approveThe MCP server is on with auto-approve, so a connected client can create and edit notes without asking (deletes and schema changes still ask).While that setting is on.

The badge reading "Remote AI · Custom endpoint" while a model on a custom endpoint on the local network is selected; the picker button shows the model's logo with a small cloud badge.

Hover the badge for the details — which model the chat is set to, and exactly what is sent:

The Cloud AI tooltip: the chat is set to anthropic/claude-haiku-4.5; your message, retrieved note excerpts and, in agent mode, files the model reads are sent off this machine to OpenRouter; every call is logged.

Picking a model in the chat is the most common change. The badge follows the model that will answer your next message, so it tells you before you press Send, not after:

  • Pick a model under a group marked local — the built-in runtime, Apple’s on-device model, Ollama on this computer, or a custom endpoint on your own computer → 100% local.
  • Pick a model under a group marked off-machine → Cloud AI or Remote AI, named after that provider.
  • Pick an external agent → External agent.
  • Switch back to a local model → 100% local again, straight away.

Local or not is decided by where the model’s server actually runs, never by its name. The same Custom endpoint is local when it points at 127.0.0.1 and off-machine when it points at another computer.

Other things that change it:

  • A request going out — the badge shows External for as long as it lasts, then returns.
  • A request being refused — Blocked, for a few seconds.
  • Closing the chat panel — the chat’s selection no longer applies, so the badge returns to 100% local (unless something else is active).
  • Turning on MCP auto-approve — Agent auto-approve, until you turn it off.

When several things are true at once, the badge shows the most important one, in this order: Blocked → External agent → Cloud AI / Remote AI → External → Agent auto-approve → 100% local. A cloud request that is still in flight keeps the Cloud AI state even if you have already switched the chat back to a local model — it ends when the request does.

You don’t have to take the badge’s word for it. Settings → Privacy → Activity & audit has a Test now button: it makes a deliberately disallowed request, and you watch it being refused — the badge turns red and a “blocked” row appears in the log. Nothing leaves your machine.

The badge reading "Blocked" after the privacy self-test refused a disallowed request.

The Network view of the same log lists the connections DocGraph has made off this machine — what, where and when — so what the badge showed while you weren’t looking is still there (what isn’t logged).

  • How much local AI ran. Chatting with a model on your own computer never changes the badge, because nothing leaves the machine. The AI view of the Activity log records those runs.
  • What an external agent sends. The External agent state says that one is in play; its own traffic is outside DocGraph and is not recorded.
  • What a provider does with your content. Cloud AI tells you that your content goes to a provider and to which one. Whether that provider keeps it or trains on it is set by its own policy, which DocGraph cannot see or enforce.
  • Everything on your computer. The badge covers the connections DocGraph makes. Other apps on your computer are outside it.

Related: Cloud AI providers · Privacy & Security