Privoo reference
Download Source Discord

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.

Other Privoo products

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.

Release artefacts
PlatformArtefactArchitectureNotes
WindowsPrivoo-Setup-5.0.5.exex64NSIS. Installation directory is selectable; desktop and Start Menu shortcuts are created.
macOS.dmg, .zipx64, arm64Not notarised. See below.
Linux.AppImagex64Portable; no installation required.
Linux.debx64Debian and derivatives.
Linux.rpmx64Fedora 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:

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.

Widevine is signed

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.

Configuration directory
PlatformPath
Windows%APPDATA%/privoo/
macOS~/Library/Application Support/privoo/
Linux~/.config/privoo/
Selected files
FileContents
privoo-settings.jsonAll settings, as human-readable JSON.
History, downloads, bookmarksLocal stores, not encrypted, never transmitted.
Password storeEncrypted credentials.
mariana-sites.jsonHosted site records, including onion and ML-KEM private keys.
tor-data/Tor's data directory, including the control authentication cookie.
Filter list cacheCompiled blocking engine, refreshed every seven days.
Treat the directory as sensitive

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
Build scripts
CommandOutput
npm run distWindows NSIS installer.
npm run dist:macmacOS DMG and ZIP, x64 and arm64.
npm run dist:linuxAppImage, deb and rpm.
npm run dist:allAll 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.

Runtime dependencies
PackageVersionPurpose
@ghostery/adblocker-electron2.5.xContent blocking engine.
electron-updater6.3.xAutomatic updates.
mlkem2.7.xML-KEM-768 for .mariana.
electron (castLabs)42.3.3+wvcusRuntime, with Widevine.

See also