Skip to content

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.

  • 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).
  • Architecturesx86_64 (amd64), aarch64 (arm64), armv7 (32-bit Pi).
  • Free disk — at least 100 MB at the config dir (enforced by galois-edge doctor).
  • Optionallinux-gpib drivers if you have GPIB hardware; NI-VISA if you prefer it as the PyVISA backend on Windows.
Terminal window
curl -fsSL https://galoislabs.ai/install.sh | sudo sh

This 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:

Terminal window
curl -fsSL https://galoislabs.ai/install.sh | sudo sh -s -- --token glc_XXXXXXXX

Other flags:

FlagDescription
--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.

/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 unit

The 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:

Terminal window
sudo usermod -aG plugdev,dialout $USER

Download galois-edge-windows-amd64.msi from the latest release at releases.galoislabs.ai and run it as Administrator:

Terminal window
msiexec /i galois-edge-windows-amd64.msi /qb

The MSI:

  • Installs galois-edge.exe, galois-edge-daemon.exe, and galois-edge-tray.exe under C:\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 install subcommand (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:

Terminal window
msiexec /i galois-edge-windows-amd64.msi GALOIS_TOKEN=glc_XXXXXXXX /qb

The 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:

Terminal window
msiexec /i galois-edge-windows-amd64.msi TRAY_AUTORUN=user /qb

To register manually after install:

Terminal window
galois-edge setup glc_XXXXXXXX

If you can’t use the installer (air-gapped lab, custom packaging), download the binaries directly from https://releases.galoislabs.ai/<version>/:

Terminal window
VERSION=$(curl -fsSL https://releases.galoislabs.ai/latest)
BASE=https://releases.galoislabs.ai/$VERSION
curl -fsSL -O $BASE/galois-edge-linux-amd64
curl -fsSL -O $BASE/galois-edge-daemon-linux-amd64
curl -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-edge
sudo install -m 755 galois-edge-daemon-linux-amd64 /usr/local/bin/galois-edge-daemon
sudo galois-edge install # registers the systemd unit
sudo galois-edge setup glc_XXXXXXXX # register with the cloud
sudo systemctl start galois-edge

After installing, run the diagnostics:

Terminal window
galois-edge doctor

Output 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.

Re-run the install command. The installer detects the current version, stops the running service, swaps binaries, and starts the new build:

Terminal window
curl -fsSL https://galoislabs.ai/install.sh | sudo sh

To pin a specific version:

Terminal window
curl -fsSL https://galoislabs.ai/install.sh | sudo sh -s -- --version v0.9.4

The installer leaves a helper:

Terminal window
sudo galois-edge-uninstall

This 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:

Terminal window
net stop galois-edge
galois-edge uninstall