OpenWrt RMM Agent
Production MVP shell agent for OpenWrt, plus an experimental Go agent preview.
The agent uses outbound HTTP polling:
- Enrolls with the server using an enrollment token.
- Sends heartbeat with inventory and metrics.
- Receives queued commands from the heartbeat response.
- Executes only allowlisted commands.
- Sends command results back to the server.
Config
Default config path:
/etc/rmm-agent.conf
Example:
SERVER_URL="http://server:8080"
ENROLLMENT_TOKEN="dev-enroll-token"
INTERVAL_SECONDS="30"
TUNNEL_IDENTITY_FILE="/etc/rmm-agent/tunnel_key"
After enrollment the agent writes:
DEVICE_ID="..."
DEVICE_TOKEN="..."
Run
sh ./agent/openwrt/rmm-agent.sh
Go Agent Preview
The Go agent lives at:
agent/go/cmd/rmm-agent
It is protocol-compatible with the server for enrollment, heartbeat, inventory, metrics, command polling, command result reporting, lock handling, backoff, graceful shutdown, and result spooling.
The Go agent is not the production command runner yet. It intentionally reports queued commands as failed with a clear message until the shell allowlist is migrated command by command.
Build locally:
go build -o ./tmp/rmm-agent-go ./agent/go/cmd/rmm-agent
Run once against an existing config:
./tmp/rmm-agent-go -config /etc/rmm-agent.conf -once
OpenWrt Package
Package skeleton:
agent/package/rmm-agent
It installs the agent as /usr/bin/rmm-agent, the procd service as /etc/init.d/rmm-agent, and the default config as /etc/rmm-agent.conf.
For Docker Compose reverse SSH access, install the generated tunnel private key at /etc/rmm-agent/tunnel_key with mode 600. The agent automatically uses it for remote_ssh_reverse.