Deploy Operator OS on resource-constrained hardware including Raspberry Pi, RISC-V boards, and other ARM/x86 edge devices. Covers cross-compilation, auto-start with systemd, and hardware interface access.
Use this file to discover all available pages before exploring further.
Operator OS was designed from the ground up for constrained environments. Its Go runtime, CGO-free build, and single-binary distribution make it uniquely suited to edge hardware that cannot run typical Node.js or Python agent frameworks.
<10 MB RAM
99% smaller memory footprint than equivalent Python or Node.js agents.
<1s boot
Cold starts in under one second, even on single-core 0.6 GHz processors.
Single binary
No runtime dependencies, no package manager, no interpreter — copy and run.
Operator OS uses CGO_ENABLED=0, which means you can cross-compile for any target from any host with Go 1.25+ installed. No toolchain, no sysroot.
ARM64
ARMv7
RISC-V 64
All platforms
# For Raspberry Pi 3, 4, 5 and Zero 2 W (64-bit OS)GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build \ -tags stdjson \ -ldflags "-s -w" \ -o build/operator-linux-arm64 \ ./cmd/operator
Or use the Makefile shortcut:
make build-linux-arm64
# For Raspberry Pi Zero 2 W (32-bit OS) and other ARMv7 boardsGOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build \ -tags stdjson \ -ldflags "-s -w" \ -o build/operator-linux-arm \ ./cmd/operator
Or use the Makefile shortcut:
make build-linux-arm
To build both 32-bit and 64-bit Pi binaries at once:
This produces binaries in build/ for: linux-amd64, linux-arm64, linux-arm (ARMv7 and ARMv6), linux-riscv64, linux-loong64, darwin-arm64, and windows-amd64.exe.
On the Zero 2 W, expect roughly 6–8 MB RSS at steady state when connected to one channel.
The original Pi Zero uses a single-core ARM1176JZF-S (ARMv6). Use the GOARM=6 build:
# Cross-compile on your build machineGOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=0 go build \ -tags stdjson \ -ldflags "-s -w" \ -o build/operator-linux-armv6 \ ./cmd/operatorscp build/operator-linux-armv6 pi@pizero.local:/usr/local/bin/operatorchmod +x /usr/local/bin/operator
The Pi Zero (first generation) has only 512 MB RAM and a 700 MHz single-core CPU. Disable all unnecessary channels and use a fast, low-latency model to avoid timeout issues.
SPI devices are accessible via /dev/spidev*. Enable SPI on Raspberry Pi by adding dtparam=spi=on to /boot/config.txt and rebooting. The spi-tools package provides spi-config and spi-pipe for testing.
You can instruct the agent to periodically poll sensors using the built-in cron tool and store readings in the workspace. This enables autonomous environmental monitoring without any additional application code.
sudo systemctl status operator.servicesudo journalctl -u operator.service -f
On systems without systemd (e.g., Alpine Linux with OpenRC), use a similar /etc/init.d/operator script or run the gateway under supervise / s6-svscan. The binary has no dependencies on systemd itself.