⚠️ Beta Release: This software is currently in beta, and both configurations and APIs may undergo breaking changes. It is not yet 100% feature complete, but it functions as intended.
Install the agent with the one-liner below:
curl -L -o /tmp/compute-blade-agent-installer.sh https://raw.githubusercontent.com/compute-blade-community/compute-blade-agent/main/hack/autoinstall.sh
chmod +x /tmp/compute-blade-agent-installer.sh
/tmp/compute-blade-agent-installer.sh
The agent runs as a system service and monitors various hardware states and events:
- Reacts to button presses and SoC temperature.
- Automatically enters critical mode (fan 100%, red LED) when overheating.
- Exposes system metrics via a Prometheus endpoint (
/metrics
).
The identify function can be triggered via bladectl
or a physical button press. It makes the edge LED blink to assist locating a blade in a rack.
bladectl
is a CLI utility for remote or local interaction with the running agent. Example use cases:
bladectl set identify --wait # Blink LED until button is pressed
bladectl set identify --confirm # Cancel identification
bladectl unset identify # Cancel identification (alternative)
This firmware runs on the fan unit microcontroller and:
- Controls fan speed via UART commands from blade agents.
- Reports RPM and airflow temperature back to the blade.
- Forwards button events (1x = left blade, 2x = right blade).
- Uses EMC2101 for optional advanced features like airflow-based fan control.
To install it, download the fanunit.uf2
, and follow the firmware upgrade instructions here.
Install the agent with the one-liner below:
curl -L -o /tmp/compute-blade-agent-installer.sh https://raw.githubusercontent.com/compute-blade-community/compute-blade-agent/main/hack/autoinstall.sh
chmod +x /tmp/compute-blade-agent-installer.sh
/tmp/compute-blade-agent-installer.sh
Note:
bladectl
requires root privileges when used locally, due to restricted access to the Unix socket (/tmp/compute-blade-agent.sock
).
The default configuration file is located at:
/etc/compute-blade-agent/config.yaml
You can also override any config option via environment variables using the BLADE_
prefix.
listen:
metrics: ":9666"
BLADE_LISTEN_METRICS=":1234"
Variable | Description |
---|---|
BLADE_STEALTH_MODE=false |
Enable/disable stealth mode |
BLADE_FAN_SPEED_PERCENT=80 |
Set static fan speed |
BLADE_CRITICAL_TEMPERATURE_THRESHOLD=60 |
Set critical temp threshold (°C) |
BLADE_HAL_RPM_REPORTING_STANDARD_FAN_UNIT=false |
Disable RPM monitoring for lower CPU use |
OTEL_EXPORTER_OTLP_ENDPOINT |
Endpoint for the OTLP exporter |
To allow secure remote use of bladectl
over the network:
listen:
metrics: ":9666"
grpc: ":8081"
authenticated: true
mode: tcp
systemctl restart compute-blade-agent
This will:
- Generate new mTLS server and client certificates in
/etc/compute-blade-agent/*.pem
- Write a new bladectl config to:
~/.config/bladectl/config.yaml
with the client certificates in place
- Copy the config from the blade:
scp root@blade-pi1:~/.config/bladectl/config.yaml ~/.config/bladectl/config.yaml
- Fix the server address to point to the blade:
yq e '.blades[] | select(.name == "blade-pi1") .blade.server = "blade-pi1.local:8081"' -i ~/.config/bladectl/config.yaml
Your bladectl
tool can now securely talk to the remote agent via gRPC over mTLS.