Privoo Desktop: Privoo AI
From the Privoo reference. This article covers version 5.0.5.
Main article: Privoo Desktop. For the separate AI coding IDE, see Privoo Coder.
Privoo AI is the assistant built into Privoo Desktop.
It is enabled by default and reachable from a toolbar button, a side panel, or its
own window at privoo://ai. It is not a hosted service: Privoo operates
no model and no inference infrastructure. The assistant runs against an API key the
user supplies, or entirely locally through Ollama, in which case no data leaves the
machine at all.
This design follows from the same constraint as the rest of the browser. A browser with no accounts and no servers cannot offer a hosted assistant without contradicting itself, so it offers the plumbing and lets the user choose who, if anyone, sees their conversations.
Interface
Privoo AI is presented in three places, backed by the same conversation store:
| Surface | Description |
|---|---|
| Toolbar button | Opens the assistant. Controlled by Settings → Features, where it can be hidden. Enabled by default. |
| Side panel | The assistant beside the page, for use while reading. |
| Full page | privoo://ai, a two-pane workspace: a chat-history sidebar and the chat column. |
| Separate window | A frameless window with its own minimise and close controls, so the assistant can sit beside other applications rather than inside the browser. |
Chat history
Conversations are saved and listed as Recent chats in a sidebar, which can be
shown or hidden. History is stored in the browser's own local storage under the key
privoo-ai-chats-v1, and is shared between the AI window and the
full-page view, so a conversation started in one is available in the other.
As with everything else in Privoo Desktop, that store is on the local disk. There is no account holding conversations and no synchronisation between devices.
Providers and models
Five backends are supported. Four are hosted services requiring the user's own API key; one runs locally and requires none.
| Provider | Default model | Key required | Data destination |
|---|---|---|---|
| Anthropic | claude-sonnet-4-6 | Yes | Anthropic, under the user's key |
| OpenAI | gpt-4o-mini | Yes | OpenAI, under the user's key |
| Google Gemini | gemini-2.0-flash | Yes | Google, under the user's key |
| DeepSeek | deepseek-chat | Yes | DeepSeek, under the user's key |
| Ollama | llama3.2 | No | Nowhere. Stays on the machine. |
Anthropic is the default provider. The model is configurable per provider rather than fixed to the defaults above. Privoo maintains a small mapping of retired model identifiers to their replacements, so a model name saved in settings that a provider has since withdrawn is silently migrated instead of failing.
If a hosted provider is selected but no key has been saved for it, the assistant reports that the key is missing rather than failing opaquely. Ollama is always treated as available, because there is no key to check.
API keys and storage
Keys are entered in the assistant's configuration and stored encrypted, using the same approach as the browser's password vault:
- Primary: the operating system's keychain, via Electron's
safeStorage. On Windows this is DPAPI, on macOS the Keychain, on Linux the platform's secret service. - Fallback: where the OS keychain is unavailable, AES-256-GCM using a key derived for the machine.
A key is transmitted only to the provider it belongs to, on requests the user initiates. Keys are never sent to Privoo, because there is no Privoo endpoint to send them to.
This model has a real trade-off, and it is worth stating rather than glossing. The benefit is that no intermediary sits between the user and the provider, and the user's usage is billed and governed by their own account. The cost is that the user needs an account with a provider to use the hosted options at all. Ollama exists precisely so that the feature is usable without one.
Running locally with Ollama
Ollama runs a language model on the user's own machine. Selecting it as the provider means the assistant works with no API key, no account, no per-token cost, and no network transmission of the conversation.
Privoo detects a running Ollama instance and the models installed in it. The default
is llama3.2, and any model pulled locally can be selected.
Ollama is used elsewhere in the browser for the same reason. The identity autofill feature calls a local model to interpret unusual form-field labels that direct matching does not recognise, so that the user's saved personal details are never sent to a remote service to be understood.
Network path
Requests to Ollama go directly to 127.0.0.1:11434 using Node's own
HTTP client, deliberately bypassing Electron's networking stack. This is a
considered decision rather than an oversight, and it has a visible consequence:
Electron's network stack applies the browser's proxy settings, including Tor when
enabled, along with Chromium's origin checks. Routing a request for a service on
the user's own machine through a Tor circuit or an external proxy would be
incoherent, and in practice would break it. Local traffic to
127.0.0.1 therefore takes the direct path.
Hosted providers behave the opposite way: those requests use Electron's network stack, so they do respect the browser's proxy configuration and system certificates. If Tor is enabled, traffic to Anthropic, OpenAI, Gemini or DeepSeek goes through it.
How requests are made
Hosted providers are called at their standard public endpoints, with the user's key, from the main process:
| Provider | Endpoint |
|---|---|
| Anthropic | api.anthropic.com/v1/messages |
| OpenAI | api.openai.com/v1/chat/completions |
| DeepSeek | api.deepseek.com/chat/completions |
| Google Gemini | The Gemini generative language endpoint |
| Ollama | 127.0.0.1:11434/api/chat |
Each conversation is sent with a system prompt, which defaults to a short instruction identifying the assistant as running inside the Privoo web browser and asking it to be concise and accurate. Responses can be streamed, so output appears as it is produced rather than after the full reply is complete.
Privacy model
The position is narrower and more honest than "private AI", a phrase this reference avoids because it is usually meaningless:
- Privoo sees nothing. There is no proxy, no relay and no server operated by the project. Conversations are not routed through Privoo infrastructure, because none exists.
- With Ollama, nothing leaves the machine. This is the only configuration in which the conversation is genuinely private in the strong sense.
- With a hosted provider, that provider sees the conversation. This is inherent to using a hosted model and is not altered by the browser around it. What the provider may do with the data is governed by the user's agreement with them.
- Keys stay local, encrypted at rest through the OS keychain.
- History stays local, in the browser's own storage, with no synchronisation.
Relationship to Privoo Coder
Privoo AI and Privoo Coder are distinct products that share a design principle. Both decline to host a model and both operate against a user-supplied key or a local Ollama instance, keeping keys on the machine.
| Aspect | Privoo AI | Privoo Coder |
|---|---|---|
| Part of | Privoo Desktop | A separate application |
| Purpose | Assistant while browsing | Coding IDE with an agent |
| Source | MIT, public | Closed source |
| Providers | Anthropic, OpenAI, Gemini, DeepSeek, Ollama | Anthropic, OpenAI, Ollama |
| Acts on files | No | Yes, in agent mode |
| Account | None | Discord sign-in |
| Availability | Included, enabled by default | Contributor role required |
Limitations
- The hosted options need an account elsewhere. Privoo supplies no key and no free tier. Without a provider account, Ollama is the only option.
- Ollama needs local resources. Running a model on the user's own hardware is bounded by that hardware.
- Replies are bounded in length by a response token limit.
- The assistant is not the browser's privacy layer. Sending a page's contents to a hosted model discloses them to that provider, whatever the shield reports about the page itself.
- No synchronisation. Chat history stays on the device that produced it.
See also
- Privoo Desktop: Built-in tools
- Privoo Coder
- Privoo Desktop: Privacy and security
- Privoo Desktop: Built-in tools overview
References
ai.js, provider configuration, key encryption and request handling. Project repository, version 5.0.5.renderer/internal/ai.html, assistant interface and chat history store. Project repository, version 5.0.5.