Privoo Desktop: Installation
From the Privoo reference. This article covers version 5.0.5.
Main article: Privoo Desktop
Privoo Desktop is distributed as prebuilt installers for Windows, macOS and Linux, and may also be built from source. Installation requires no account, no email address and no post-install configuration.
This article covers Privoo Desktop only. Privoo for Android is a separate, closed-source application distributed as an APK via a Proton Drive link in the project's Discord, with no automatic updates. Privoo Coder is a closed-source AI coding IDE for Windows, distributed the same way but restricted to Discord members holding the Contributor role.
Downloads
Prebuilt installers are published on the project's releases page. Builds are produced automatically by GitHub Actions when a version tag is pushed, on Windows, macOS and Linux runners respectively.
| Platform | Artefact | Architecture | Notes |
|---|---|---|---|
| Windows | Privoo-Setup-5.0.5.exe | x64 | NSIS. Installation directory is selectable; desktop and Start Menu shortcuts are created. |
| macOS | .dmg, .zip | x64, arm64 | Not notarised. See below. |
| Linux | .AppImage | x64 | Portable; no installation required. |
| Linux | .deb | x64 | Debian and derivatives. |
| Linux | .rpm | x64 | Fedora and derivatives. |
Windows releases additionally publish latest.yml, the manifest used by
the auto-updater, containing the installer's SHA-512 hash and size.
Code signing and Gatekeeper
Release builds are produced without a code-signing certificate, and macOS builds are not notarised by Apple. Consequently:
- On macOS, Gatekeeper warns on first launch and the application must be opened explicitly.
- On Windows, SmartScreen may warn for a newly published installer until it accrues reputation.
This follows from the project being independent and not holding a paid Apple developer account, rather than from any property of the software. Users for whom that trade-off is unacceptable can build from source, which produces the same application from inspectable code.
Separately from application code signing, the Widevine Content Decryption Module is signed for Verified Media Path during continuous integration. This is what allows DRM-protected services to issue licences. The build pipeline asserts that this step completed and fails the release rather than publishing an installer whose DRM cannot obtain a licence, a safeguard added after versions 4.0.3 and 4.0.4 shipped in that state.
Importing existing data
Privoo can import bookmarks and browsing data from other Chromium-based browsers installed on the same machine, from Settings. The import reads the other browser's local profile directly from disk. Nothing is transmitted during an import, and no account is involved on either side.
Update mechanism
Privoo updates itself using electron-updater against the GitHub
releases feed. A new release is downloaded in the background and applied on next
launch. Automatic updates can be disabled in Settings, and a manual check is
available from the system tray menu; the manual check runs even when automatic
updates are disabled.
The update check is a request to GitHub for the release manifest. It carries no user identifier, no usage data and nothing about browsing activity. Along with filter-list refreshes, it is one of only two categories of routine outbound request Privoo makes on its own behalf.
The 1.0.x series was largely occupied with defects in this mechanism, including a stall at 100% completion, a SHA-512 mismatch between the built installer and the copy served by the release CDN, and a macOS failure caused by Squirrel rejecting unsigned builds. The pipeline now recomputes the installer hash after antivirus scanning and rewrites the manifest before publishing.
Data storage
Locations
All state is stored in a single directory on the local filesystem. There is no remote component.
| Platform | Path |
|---|---|
| Windows | %APPDATA%/privoo/ |
| macOS | ~/Library/Application Support/privoo/ |
| Linux | ~/.config/privoo/ |
| File | Contents |
|---|---|
privoo-settings.json | All settings, as human-readable JSON. |
| History, downloads, bookmarks | Local stores, not encrypted, never transmitted. |
| Password store | Encrypted credentials. |
mariana-sites.json | Hosted site records, including onion and ML-KEM private keys. |
tor-data/ | Tor's data directory, including the control authentication cookie. |
| Filter list cache | Compiled blocking engine, refreshed every seven days. |
It contains encrypted credentials and, if .mariana sites are hosted,
the private keys that control those addresses. Anyone with the directory can
republish those sites.
Profiles
Profiles are implemented by redirecting Chromium's entire userData directory at
process start, based on a --privoo-profile=<id> argument. The
redirect occurs at module load, before Chromium initialises, because the userData
path is fixed once the engine starts. Selecting a non-default profile therefore
relaunches the application. The result is complete isolation of cookies, cache,
storage, history and settings between profiles.
Removal
Uninstalling removes the application. To remove stored data, delete the configuration directory, or use Delete all data in Settings before uninstalling. There is also Clear data on exit, which erases selected categories on every quit.
No deletion request to a service is possible or necessary, because no service holds a copy.
Building from source
Requirements: Node.js 16 or newer, and npm.
git clone https://github.com/sharp4real/privoobrowser
cd privoobrowser
npm install # install dependencies
npm start # run from source
npm run dist # build an installer for the current platform
| Command | Output |
|---|---|
npm run dist | Windows NSIS installer. |
npm run dist:mac | macOS DMG and ZIP, x64 and arm64. |
npm run dist:linux | AppImage, deb and rpm. |
npm run dist:all | All three platforms. |
npm install retrieves the castLabs Electron distribution rather than
upstream Electron. This is the source of Widevine support, and the reason
DRM-protected services function in Privoo but not in a stock Electron shell. A
source build without the Widevine VMP signing step will run, but DRM-protected
playback will not obtain a licence.
| Package | Version | Purpose |
|---|---|---|
@ghostery/adblocker-electron | 2.5.x | Content blocking engine. |
electron-updater | 6.3.x | Automatic updates. |
mlkem | 2.7.x | ML-KEM-768 for .mariana. |
electron (castLabs) | 42.3.3+wvcus | Runtime, with Widevine. |