This custom integration connects Home Assistant to the Unraid Management Agent running on your Unraid server. It provides monitoring, control, dynamic entity discovery, and real-time updates through the agent's REST API and WebSocket event stream.
- UI-based setup with config flow support
- Zeroconf discovery for compatible Unraid Management Agent versions
- Hybrid update model using WebSocket push with REST polling fallback
- Dynamic entities for Docker containers, virtual machines, disks, fans, network interfaces, ZFS pools, remote shares, and unassigned devices
- Control surfaces through switches, buttons, numbers, events, and Home Assistant services
- System metrics such as CPU usage, memory usage, temperatures, uptime, swap usage, flash usage, and plugin or OS update status
- Array and parity monitoring including array usage, parity progress, parity schedule, and parity history
- Docker monitoring and control, including per-container CPU, memory, restart count, network throughput, update availability, and start or stop operations
- VM monitoring and control, including state, restart and force-stop controls, and service actions
- ZFS monitoring including pool health, corrupted files, ARC statistics, and configured ARC max
- UPS, GPU, mover, registration, notifications, network services, remote shares, and unassigned device data when available on the target server
- Diagnostics-backed sensors such as degraded subsystem count and Docker port conflict count
You must have the Unraid Management Agent plugin installed and running on your Unraid server before adding this integration.
- Unraid 6.9.0 or newer
- Unraid Management Agent installed and reachable from Home Assistant
- Home Assistant 2025.1 or newer
Confirm the agent is reachable before configuring the integration:
http://<your-unraid-ip>:8043/api/v1/health
You should receive a healthy JSON response.
- Open the Unraid web interface.
- Go to Apps.
- Search for Unraid Management Agent.
- Install the plugin.
- Review the plugin settings and confirm the API port, which defaults to 8043.
- Open the Unraid web interface.
- Go to Plugins.
- Select Install Plugin.
- Paste the following URL:
https://raw.githubusercontent.com/ruaan-deysel/unraid-management-agent/main/unraid-management-agent.plg
- Install the plugin.
- Review the plugin settings and confirm the API port.
Manual HACS steps:
- Open HACS in Home Assistant.
- Go to Integrations.
- Open the three-dot menu and select Custom repositories.
- Add
https://github.com/ruaan-deysel/ha-unraid-management-agent. - Set the category to Integration.
- Install Unraid Management Agent from HACS.
- Restart Home Assistant.
- Download the latest release from the releases page.
- Extract
custom_components/unraid_management_agentinto your Home Assistant configuration directory. - Restart Home Assistant.
If your Unraid Management Agent version advertises _unraid-mgmt-agent._tcp.local., Home Assistant can discover it automatically through Zeroconf.
- Open Settings > Devices & Services in Home Assistant.
- Select Add Integration.
- Search for Unraid Management Agent.
- Enter the host and port for your Unraid server.
- Leave WebSocket enabled unless you have a specific reason to disable it.
- Host: IP address or DNS name of the Unraid server
- Port: API port exposed by the Unraid Management Agent,
8043by default - Enable WebSocket: enables near real-time updates with REST fallback if the socket disconnects
The REST polling interval is fixed at 30 seconds when polling is required.
The Configure dialog includes optional behavior toggles:
- Enable fan control entities
- Enable container update checks
The integration registers 18 services.
unraid_management_agent.container_startunraid_management_agent.container_stopunraid_management_agent.container_restartunraid_management_agent.container_pauseunraid_management_agent.container_resume
Example:
service: unraid_management_agent.container_start
data:
container_id: plexunraid_management_agent.vm_startunraid_management_agent.vm_stopunraid_management_agent.vm_restartunraid_management_agent.vm_pauseunraid_management_agent.vm_resumeunraid_management_agent.vm_hibernateunraid_management_agent.vm_force_stop
Example:
service: unraid_management_agent.vm_hibernate
data:
vm_id: Fedoraunraid_management_agent.array_startunraid_management_agent.array_stop
unraid_management_agent.parity_check_startunraid_management_agent.parity_check_stopunraid_management_agent.parity_check_pauseunraid_management_agent.parity_check_resume
The exact entity set depends on what the Unraid Management Agent exposes for your server.
- Sensors for system, array, flash, plugins, mover, parity, notifications, registration, ZFS, UPS, GPU, containers, remote shares, and unassigned devices
- Binary sensors for array state, parity state, update availability, mover state, UPS connectivity, network services, remote shares, and unassigned devices
- Switches for containers, virtual machines, disk spin control, and remote shares
- Buttons for array actions, parity actions, system power actions, VM controls, and user scripts
- Number entities for supported fan speed control
- Event entities for notifications
Dynamic entities are cleaned up automatically when the corresponding resource is removed from Unraid.
Replace tower below with your actual server naming in Home Assistant.
automation:
- alias: Unraid High CPU Alert
trigger:
- platform: numeric_state
entity_id: sensor.unraid_tower_cpu_usage
above: 80
for:
minutes: 5
action:
- service: notify.mobile_app
data:
title: Unraid Alert
message: "CPU usage is {{ states('sensor.unraid_tower_cpu_usage') }}%"automation:
- alias: Unraid UPS Critical Shutdown
trigger:
- platform: numeric_state
entity_id: sensor.unraid_tower_ups_battery
below: 10
action:
- delay:
seconds: 30
- service: button.press
target:
entity_id: button.unraid_tower_stop_arrayautomation:
- alias: Restart Plex On Stop
trigger:
- platform: state
entity_id: switch.unraid_tower_container_plex
to: "off"
for:
minutes: 1
action:
- service: unraid_management_agent.container_start
data:
container_id: plexThe integration is structured around a typed API package and a central coordinator.
custom_components/unraid_management_agent/api/: vendored REST, model, formatting, and WebSocket client codecustom_components/unraid_management_agent/coordinator.py: polling and push-update orchestrationcustom_components/unraid_management_agent/config_flow.py: UI configuration and options flowcustom_components/unraid_management_agent/sensor.py,binary_sensor.py,switch.py,button.py,number.py,event.py: entity platformscustom_components/unraid_management_agent/cleanup.py: stale dynamic entity cleanup
- Confirm the agent is running on the Unraid server.
- Check
http://<ip>:8043/api/v1/healthdirectly. - Verify firewall and network routing between Home Assistant and Unraid.
- Confirm the Unraid Management Agent version supports Zeroconf advertising.
- Ensure Home Assistant and Unraid are on the same local network segment.
- Add the integration manually if discovery is unavailable in your environment.
- Some entities are conditional and only appear when the corresponding collector or subsystem exists on the Unraid server.
- Container, VM, GPU, UPS, ZFS, remote share, and fan-related entities depend on runtime availability.
- Reload the integration after changing Unraid-side configuration.
- The integration falls back to REST polling automatically.
- If live updates stop, check Home Assistant logs for connection and reconnect messages.
- The integration includes client-side retry logic for UMA API rate limiting.
- Temporary debug log entries about retries are expected if the server is busy.
custom_components/unraid_management_agent/
__init__.py
api/
binary_sensor.py
button.py
cleanup.py
config_flow.py
coordinator.py
diagnostics.py
entity.py
event.py
number.py
repairs.py
sensor.py
services.yaml
switch.py
script/lint
pytest tests/ -v --timeout=30
./script/developEnable debug logging in Home Assistant when needed:
logger:
default: info
logs:
custom_components.unraid_management_agent: debugContributions are welcome.
- Fork the repository.
- Create a feature branch.
- Make the change.
- Run linting and tests.
- Open a pull request.
Pull requests should follow Home Assistant integration conventions, keep type hints current, and update documentation when behavior changes.
Releases follow the project's date-based versioning scheme. See the releases page for packaged versions and release notes.
This project is licensed under the MIT License. See LICENSE.
Unraid is a registered trademark of Lime Technology, Inc. This project is not affiliated with, endorsed by, or sponsored by Lime Technology, Inc. action: