Quickstart
Get galois-edge running on your machine and controlling instruments in under 5 minutes. The daemon is a single self-contained binary — no Python runtime, no Docker, no dependencies.
Prerequisites
Section titled “Prerequisites”- Linux (x86_64 or arm64) or Windows 10/11
- At least one instrument connected via USB, GPIB, LAN, or Serial
Step 1 — Install
Section titled “Step 1 — Install”curl -fsSL https://get.galoislabs.ai | shThe installer places galois-edge in /usr/local/bin and registers a systemd service. Supports x86_64 and arm64 (including Raspberry Pi).
Download and run the MSI installer:
https://galoislabs.ai/download/galois-edge-latest.exeThe installer registers galois-edge as a Windows service that starts automatically on boot.
Step 2 — Start the daemon
Section titled “Step 2 — Start the daemon”galois-edge startThe daemon auto-discovers connected instruments and prints what it found:
galois-edge v0.9.4 starting... Scanning GPIB bus... found Keithley 2400 at GPIB::24 Scanning USB... found Keysight 34461A at USB0::... gRPC API listening on :50051 WebSocket API on :8765 MCP server on :8767/mcp Ready.Step 3 — Run your first measurement
Section titled “Step 3 — Run your first measurement”Point any MCP-capable agent at the daemon and every connected instrument shows up as a typed tool. Claude Desktop, Cursor, and any other client that reads mcpServers config takes the same shape:
// claude_desktop_config.json (Claude Desktop)// ~/.cursor/mcp.json (Cursor){ "mcpServers": { "galois-edge": { "url": "http://localhost:8767/mcp" } }}Restart the agent. It now sees per-instrument typed tools (keithley_2400__source_voltage(value), keysight_34461a__measure_voltage_dc()) plus generic list_instruments, get_capabilities, start_sweep, and start_stream tools. See Agents (MCP) for the full client matrix.
Install the PyVISA backend:
pip install pyvisa-galoisThen use it just like standard PyVISA — one line changes:
import pyvisa
rm = pyvisa.ResourceManager("@galois") # swap in the galois backend
# List all connected instrumentsprint(rm.list_resources())# ('GPIB::24', 'USB0::2391::...')
# Open an instrument and take a readingdmm = rm.open_resource("USB0::2391::...")print(dmm.query("*IDN?"))print(dmm.query("MEAS:VOLT:DC?"))# List instruments via gRPC (requires grpcurl)grpcurl -plaintext localhost:50051 galois.edge.v1.EdgeDaemonService/ListInstrumentsSee the full gRPC reference for available methods.
Next steps
Section titled “Next steps”- Connect more instruments — GPIB, USB, LAN, Serial, Modbus, CAN
- Drive it from an agent — Claude Desktop, Anthropic API, OpenAI Agents SDK, Cursor, LangGraph
- Python from a notebook — typed
galoisSDK and PyVISA backend - Daemon API reference — gRPC contract
- Connect to Galois Cloud — team workspaces, data platform, AI assistant