Download and install
Install System Bridge on Linux or Windows from the AUR, a package, the installer, mise, aqua or an archive.
Download the package for your platform from the releases page.
Each release ships these assets:
- Arch Linux:
system-bridge-*-x86_64.pkg.tar.zst(stable releases only) - Debian / Ubuntu:
system-bridge_<version>_<arch>.deb - Fedora / RHEL:
system-bridge-<version>.<arch>.rpm - Flatpak:
system-bridge-<version>.flatpak - Linux archive:
system-bridge-<version>-linux-x86_64.tar.gz - Windows:
system-bridge-<version>-setup.exe - Windows archive:
system-bridge-<version>-windows-x86_64.zip
The archives hold just the executable, for mise and manual installs. Prefer a package where there is one, as the archives don’t set up a service, shortcuts or dependencies.
Install the package that matches your distribution’s package manager, or use mise or the archive on any distribution.
Install from the AUR with an AUR helper such as yay.
For the latest stable release, use the system-bridge package:
yay -S system-bridgeFor the development branch, use the system-bridge-git package. This builds and installs the application from the latest dev branch, which is updated automatically every commit:
yay -S system-bridge-gitAlternatively, install the .pkg.tar.zst from the releases page or downloaded workflow asset directly:
sudo pacman -U system-bridge-*-x86_64.pkg.tar.zstInstall the .deb asset with apt so dependencies are resolved automatically:
sudo apt install ./system-bridge_<version>_<arch>.debYou can also install it with dpkg:
sudo dpkg -i system-bridge_<version>_<arch>.debInstall the .rpm asset with dnf:
sudo dnf install ./system-bridge-<version>.<arch>.rpmInstall the .flatpak bundle:
flatpak install system-bridge-<version>.flatpakThen run it with:
flatpak run dev.timmo.system-bridgeThe repository is a Nix flake that builds System Bridge from source on x86_64 Linux, from the latest dev branch. Run it without installing:
nix run github:timmo001/system-bridge -- backend --open-web-clientOr add it to your NixOS configuration as a flake input:
{
inputs.system-bridge.url = "github:timmo001/system-bridge";
outputs = { nixpkgs, system-bridge, ... }: {
nixosConfigurations.<host> = nixpkgs.lib.nixosSystem {
modules = [
{
environment.systemPackages = [
system-bridge.packages.x86_64-linux.default
];
}
];
};
};
}system-bridge-full is the same package with most of the optional dependencies added to its PATH: lm_sensors, pciutils, pipewire, pulseaudio (for pactl and paplay, which work with PipeWire’s pipewire-pulse too), alsa-utils, zenity and ddcutil. Use system-bridge.packages.x86_64-linux.system-bridge-full instead of default to get them, or add whichever you want to environment.systemPackages with the plain package.
The rest come from NixOS options, with either package:
nvidia-smicomes with the NVIDIA driver, fromhardware.nvidiaandservices.xserver.videoDrivers = [ "nvidia" ], so it always matches the driver that’s running.- Bluetooth devices need
hardware.bluetooth.enable = true. ddcutilneedshardware.i2c.enable = true, with your user in thei2cgroup.
If you run System Bridge from systemd.user.services in your configuration, NixOS gives the service a minimal PATH, so it won’t find tools from environment.systemPackages. Use system-bridge-full, or list the tools in the service’s path.
mise installs the Linux archive from the latest release, through the aqua registry:
mise use -g aqua:timmo001/system-bridgePin a version with aqua:timmo001/system-bridge@<version>; the archives start at 5.20.0. mise checks the download against the release’s GitHub attestation. aqua itself works too, with aqua g -i timmo001/system-bridge and then aqua i.
The executable needs libx11, libxtst, libxkbcommon and libxkbcommon-x11 (libx11-6, libxtst6, libxkbcommon0 and libxkbcommon-x11-0 on Debian / Ubuntu), even without a desktop. Nothing starts it for you: run system-bridge backend, or add your own service or autostart entry. See Running.
Download the archive with the GitHub CLI and put system-bridge somewhere on your PATH:
gh release download -R timmo001/system-bridge -p '*-linux-x86_64.tar.gz'
tar -xzf system-bridge-*-linux-x86_64.tar.gz -C ~/.local/bin system-bridgeCheck the download first with gh attestation verify system-bridge-*-linux-x86_64.tar.gz -R timmo001/system-bridge.
The executable needs the same libraries as with mise, and nothing starts it for you. See Running.
Run the system-bridge-<version>-setup.exe installer to install the application. After installation completes, you can start System Bridge from the Start Menu shortcut.
mise installs the Windows archive from the latest release, through the aqua registry:
mise use -g aqua:timmo001/system-bridgePin a version with aqua:timmo001/system-bridge@<version>; the archives start at 5.20.0. aqua itself works too, with aqua g -i timmo001/system-bridge and then aqua i. mise checks the download against the release’s GitHub attestation. Nothing starts it for you: run system-bridge backend. See Running.
Download the archive with the GitHub CLI:
gh release download -R timmo001/system-bridge -p '*-windows-x86_64.zip'
Expand-Archive system-bridge-*-windows-x86_64.zip "$env:LOCALAPPDATA\Programs\system-bridge"Add that folder to your PATH, and keep the now-playing folder beside system-bridge.exe, as the media module needs it. Nothing starts it for you: run system-bridge backend. See Running.
Code signing policy
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
The Windows executable and installer are built from this repository on GitHub Actions and signed through SignPath, so Windows shows SignPath Foundation as the publisher. The NowPlaying helper bundled with them comes from dotnet-now-playing and isn’t signed.
- Committers and reviewers: Aidan Timson (timmo001)
- Approvers: Aidan Timson (timmo001)
Pull requests from anyone else are reviewed by a committer before they’re merged, and every release is approved by hand before it’s signed.
System Bridge doesn’t send any information to other networked systems unless you ask it to, apart from what’s listed on Privacy and security.
macOS is not officially supported and has no prebuilt packages. You can still build it from source and test it for yourself.
See Developing for the full build, run, and test workflow from source.
Updating
On Linux, System Bridge restarts itself within a minute of a package update replacing it, so the new version runs without you restarting it. Flatpak keeps running the version it started with, so restart System Bridge after updating it there.
The same goes for replacing the Linux executable from an archive by hand. mise installs each version to its own folder instead, so restart System Bridge after mise upgrade, and after updating from the Windows archive.
Optional dependencies
System Bridge reads most hardware metrics directly from the kernel, so these tools aren’t required. On Linux, installing them improves detection on some systems:
| Package | Tool | What it adds |
|---|---|---|
lm_sensors (Arch, Fedora), lm-sensors (Debian / Ubuntu) |
sensors |
The full set of temperature and fan sensors on some boards. Run sudo sensors-detect once to load the relevant modules. |
nvidia-utils |
nvidia-smi |
NVIDIA GPU metrics. Intel and AMD GPUs use the kernel drm/hwmon interfaces and need nothing extra. |
pciutils |
lspci |
Friendly GPU model names. GPUs are still detected without it, but fall back to a generic name. |
pipewire (Arch), pipewire-bin (Debian / Ubuntu), pipewire-utils (Fedora) |
pw-dump |
Names the apps using the microphone or camera. Without it, microphone usage falls back to ALSA, which names the sound server instead of the app. |
zenity |
zenity |
The confirmation before Quit or Hide system tray. Without it, those actions can’t be confirmed, so they don’t run. |
libpulse (Arch), pulseaudio-utils (Debian / Ubuntu, Fedora) |
pactl, paplay |
Audio devices and audio controls, and notification sounds. Needs PulseAudio 16 or later, or PipeWire with pipewire-pulse. |
alsa-utils |
aplay |
Notification sounds when paplay isn’t installed. |
bluez |
bluetoothd |
Bluetooth devices and Bluetooth controls. |
ddcutil |
ddcutil |
Brightness and power for external monitors over DDC/CI. Needs access to /dev/i2c-*, usually by being in the i2c group. |
The .deb and .rpm packages recommend pciutils, PipeWire, zenity and pulseaudio-utils, so apt and dnf install them by default. The Arch package lists all of these as optional dependencies, which pacman shows but doesn’t install.
The command prefabs run tools for the desktop you’re on, such as grim for screenshots. A prefab that can’t run says which tools it looks for. Reading and setting the clipboard needs wl-clipboard, or xclip or xsel on X11.
On Windows, the waiting package update count needs winget, which Windows 11 includes. Nothing else is needed.
Power readings on Linux
CPU power, integrated Intel GPU power and, on laptops, system power come from the kernel’s RAPL energy counters. Since CVE-2020-8694 the kernel lets only root read them, so the Arch, .deb and .rpm packages install a udev rule, 60-system-bridge-rapl.rules, that makes them readable by every local user.
mise, the archive and Flatpak can’t install the rule. Add it yourself, then apply it without a reboot:
SUBSYSTEM=="powercap", KERNEL=="intel-rapl:*|intel-rapl-mmio:*", ACTION=="add|change", RUN+="/bin/chmod a+r /sys%p/energy_uj"
sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=powercap --action=change
On NixOS, add the package to services.udev.packages as well.
Next steps
- Start System Bridge: see Running.
- Monitor and control your system from the web client.
- Explore the CLI and get your token.
- Connect it to Home Assistant.