Installation
galois-edge ships as a single self-contained binary plus a frozen Python instrument engine. Installation places both in /usr/local/bin (Linux) or Program Files\galois-edge\ (Windows), drops a config file, registers a system service, and — on Linux — installs udev rules so non-root users can talk to USB instruments.
System requirements
Section titled “System requirements”- Linux — kernel 4.x+, glibc 2.28+, systemd. Tested on Ubuntu 20.04+, Debian 11+, Raspberry Pi OS (Bullseye+), Fedora 38+.
- Windows — Windows 10 21H2 or Windows 11 (x86_64).
- Architectures —
x86_64(amd64),aarch64(arm64),armv7(32-bit Pi). - Free disk — at least 100 MB at the config dir (enforced by
galois-edge doctor). - Optional — linux-gpib drivers if you have GPIB hardware; NI-VISA if you prefer it as the PyVISA backend on Windows.
Linux — one-line install
Section titled “Linux — one-line install”curl -fsSL https://galoislabs.ai/install.sh | sudo shThis downloads the latest release from releases.galoislabs.ai, verifies SHA-256 checksums, places binaries in /usr/local/bin, installs udev rules at /etc/udev/rules.d/99-galois-edge.rules, registers a systemd unit, and starts the service.
To install and register with the cloud in one shot, pass your API key from the Galois dashboard:
curl -fsSL https://galoislabs.ai/install.sh | sudo sh -s -- --token glc_XXXXXXXXOther flags:
| Flag | Description |
|---|---|
--token <key> | API key for cloud registration (glc_…). |
--name <name> | Edge name reported to the backend (default: hostname). |
--backend <url> | Override backend URL (default: https://cloud.galoislabs.ai). |
--version <ver> | Pin to a specific release (default: latest). |
You can also set GALOIS_VERSION and GALOIS_BASE_URL as environment variables.
What the installer touches
Section titled “What the installer touches”/usr/local/bin/galois-edge # Go supervisor (this CLI)/usr/local/bin/galois-edge-daemon # Frozen Python instrument engine/usr/local/bin/galois-edge-uninstall # Helper that reverses the install/etc/galois-edge/config.env # Configuration (mode 640)/etc/udev/rules.d/99-galois-edge.rules # USBTMC + serial permissions/etc/systemd/system/galois-edge.service # Service unitThe udev rules grant the plugdev group access to USBTMC devices from Keysight/Agilent (0957), Tektronix (0699), Rohde & Schwarz (0aad), National Instruments (3923), Rigol (1ab1), and Siglent (f4ec). USB-serial adapters (FTDI 0403, Prolific 067b, CH340 1a86, CP210x 10c4) are granted to the dialout group instead, matching the Linux convention. Add yourself to both groups before unplugging/replugging instruments:
sudo usermod -aG plugdev,dialout $USERWindows
Section titled “Windows”Download galois-edge-windows-amd64.msi from the latest release at releases.galoislabs.ai and run it as Administrator:
msiexec /i galois-edge-windows-amd64.msi /qbThe MSI:
- Installs
galois-edge.exe,galois-edge-daemon.exe, andgalois-edge-tray.exeunderC:\Program Files\galois-edge\. - Adds the install dir to the system
PATH. - Creates
C:\ProgramData\galois-edge\config.env(NeverOverwrite="yes"— preserved across upgrades and uninstall). - Registers and starts the galois-edge Windows Service via the Go binary’s own
installsubcommand (mirrors the Linux flow). - Adds a “Galois Edge Status” Start Menu shortcut and a tray-autorun registry value under
HKLM\Software\Microsoft\Windows\CurrentVersion\Run.
To register with the cloud at install time, supply the token as an MSI property:
msiexec /i galois-edge-windows-amd64.msi GALOIS_TOKEN=glc_XXXXXXXX /qbThe MSI invokes galois-edge setup <token> after the service registers, so config.env lands populated.
If you’d rather not install the tray autorun under HKLM, opt into per-user autorun:
msiexec /i galois-edge-windows-amd64.msi TRAY_AUTORUN=user /qbTo register manually after install:
galois-edge setup glc_XXXXXXXXManual install (any platform)
Section titled “Manual install (any platform)”If you can’t use the installer (air-gapped lab, custom packaging), download the binaries directly from https://releases.galoislabs.ai/<version>/:
VERSION=$(curl -fsSL https://releases.galoislabs.ai/latest)BASE=https://releases.galoislabs.ai/$VERSION
curl -fsSL -O $BASE/galois-edge-linux-amd64curl -fsSL -O $BASE/galois-edge-daemon-linux-amd64curl -fsSL -O $BASE/checksums-linux-amd64.sha256
sha256sum -c checksums-linux-amd64.sha256
sudo install -m 755 galois-edge-linux-amd64 /usr/local/bin/galois-edgesudo install -m 755 galois-edge-daemon-linux-amd64 /usr/local/bin/galois-edge-daemon
sudo galois-edge install # registers the systemd unitsudo galois-edge setup glc_XXXXXXXX # register with the cloudsudo systemctl start galois-edgeVERSION=$(curl -fsSL https://releases.galoislabs.ai/latest)BASE=https://releases.galoislabs.ai/$VERSION
curl -fsSL -O $BASE/galois-edge-linux-arm64curl -fsSL -O $BASE/galois-edge-daemon-linux-arm64curl -fsSL -O $BASE/checksums-linux-arm64.sha256
sha256sum -c checksums-linux-arm64.sha256
sudo install -m 755 galois-edge-linux-arm64 /usr/local/bin/galois-edgesudo install -m 755 galois-edge-daemon-linux-arm64 /usr/local/bin/galois-edge-daemon
sudo galois-edge installsudo galois-edge setup glc_XXXXXXXXsudo systemctl start galois-edge$Version = (Invoke-RestMethod https://releases.galoislabs.ai/latest)$Base = "https://releases.galoislabs.ai/$Version"
Invoke-WebRequest -Uri "$Base/galois-edge-windows-amd64.exe" -OutFile galois-edge.exeInvoke-WebRequest -Uri "$Base/galois-edge-daemon-windows-amd64.exe" -OutFile galois-edge-daemon.exe
Move-Item galois-edge.exe "C:\Program Files\galois-edge\galois-edge.exe"Move-Item galois-edge-daemon.exe "C:\Program Files\galois-edge\galois-edge-daemon.exe"
galois-edge installgalois-edge setup glc_XXXXXXXXnet start galois-edgeVerifying the install
Section titled “Verifying the install”After installing, run the diagnostics:
galois-edge doctorOutput looks like:
[PASS] go_binary: Go binary is running (linux/amd64) at /usr/local/bin/galois-edge [PASS] disk_space: Disk space OK: 41984 MB free on /etc/galois-edge [PASS] config_file: Config file OK: /etc/galois-edge/config.env (412 bytes) [PASS] python_binary: Python binary OK: /usr/local/bin/galois-edge-daemon [PASS] python_health: Python gRPC reachable at 127.0.0.1:50052 [PASS] usb_permissions: User alex is in plugdev group [PASS] gpib_driver: linux-gpib driver found (gpib_config present) [PASS] network_backend: Backend reachable at https://cloud.galoislabs.ai (HTTP 200)doctor exits non-zero if any check fails — wire it into provisioning scripts. Use --json for machine-readable output.
Upgrading
Section titled “Upgrading”Re-run the install command. The installer detects the current version, stops the running service, swaps binaries, and starts the new build:
curl -fsSL https://galoislabs.ai/install.sh | sudo shTo pin a specific version:
curl -fsSL https://galoislabs.ai/install.sh | sudo sh -s -- --version v0.9.4Uninstalling
Section titled “Uninstalling”The installer leaves a helper:
sudo galois-edge-uninstallThis stops the service, removes binaries from /usr/local/bin, and removes the udev rules. The config directory at /etc/galois-edge/ is preserved so a re-install keeps your registration. Delete it manually if you want a clean slate.
On Windows:
net stop galois-edgegalois-edge uninstall