Skip to content
 
 

Repository files navigation

Silvervine

CI

Silvervine installs and maintains Widevine L3 for compatible Chromium-family browsers that do not bundle it, enabling DRM-protected media on Linux and macOS.

Install

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/nicholasraimbault/silvervine/releases/latest/download/silvervine-installer.sh | sh
silvervine setup

The installer places silvervine in $CARGO_HOME/bin (usually ~/.cargo/bin). If the command is not found, add that directory to PATH or run ~/.cargo/bin/silvervine setup.

Setup detects browsers, downloads Widevine through Mozilla's distribution manifest, verifies its SHA-512 digest, attempts to patch each browser, and registers a user-session daemon. Run silvervine status afterward to verify the result.

On Linux, system-owned browsers may require administrator approval for patching. The registered daemon remains in your user session.

Release archives and checksums are available from GitHub Releases.

Supported browsers

Built-in detection covers Helium, Thorium, ungoogled-chromium, and Chromium. Silvervine also scans standard application directories for compatible Chromium layouts.

Custom installations can be added to the configuration file:

  • Linux: ~/.config/silvervine/config.toml
  • macOS: ~/Library/Application Support/silvervine/config.toml
[[browsers]]
name = "My Browser"
install_path = "/home/me/my-browser" # Linux
# bundle_path = "/Users/me/Applications/My Browser.app" # macOS

Chrome, Edge, Brave, and Firefox already manage Widevine and do not need Silvervine.

Behavior and limitations

Silvervine provides software-only Widevine L3. Playback quality is controlled by each streaming service and may be lower than in an officially supported browser. Silvervine does not provide hardware-backed L1 DRM or guarantee HD, 4K, or HDR playback.

Silvervine refuses to patch a running browser unless forced. It stages and verifies a complete CDM tree before atomically publishing it. On macOS, Silvervine installs the component in the browser's per-user profile and leaves the vendor application bundle and its code signature unchanged. The user-session daemon watches for browser updates and CDM changes.

Commands

Command Purpose
silvervine Run the tray daemon
silvervine setup Configure browsers and the daemon
silvervine init Run the interactive setup wizard
silvervine patch [browser] Patch one or all detected browsers
silvervine status Show browser and daemon status
silvervine list-browsers List detected browsers
silvervine doctor [error-code] [--media-stack] Run diagnostics, collect passive media evidence, or explain an EME error
silvervine test [--browser <name>] Run an explicit browser-reported EME capability check
silvervine update widevine Update or roll back the CDM
silvervine launch <browser> Verify, patch if needed, then launch
silvervine repair Rebuild Silvervine's local state
silvervine uninstall [--purge] Remove the daemon and cache; --purge also removes config; the binary and browser changes remain

Run silvervine --help or silvervine <command> --help for all options, JSON output, shell completions, and man-page generation.

silvervine doctor --media-stack does not launch a browser or access the network. It inspects local browser/CDM versions, binary architecture, Silvervine ownership and digest provenance, and a fixed allowlist of optional graphics utilities. silvervine test is the explicit live mode: it opens the selected browser with its normal profile against a tokenized 127.0.0.1 page, then caches the result only for the exact browser version and verified CDM digest. Use silvervine test --url <url> to open a manual test page without an automated result. Browser capability evidence is not proof of certified L1, HD/4K access, or streaming-service entitlement.

Upgrading an existing installation

Silvervine automatically migrates configuration, cache, logs, and user-daemon registration created by earlier releases of this project. silvervine setup also detects legacy Bash, Homebrew, AUR, .deb, and .rpm installations and provides package-manager-specific cleanup guidance.

The former Homebrew tap is retired. See MIGRATION.md for paths, conflict handling, and recovery instructions.

Platform support

Silvervine supports x86_64 Linux and Intel or Apple Silicon macOS. Linux ARM64 and Windows are unsupported in V2. Linux receives native CI and maintainer testing on Arch; macOS receives native CI with contributor-led hardware verification.

Linux tray integration uses the StatusNotifierItem protocol. Desktops without a compatible tray host can run Silvervine in notifications-only mode.

Documentation

License

MIT

Releases

Used by

Contributors

Languages