wolp
Use this skill when the user wants the agent to control a device on the local network.
Supported operations:
wake: send a standard UDP Wake-on-LAN magic packet with Python
shutdown: send a UDP magic packet to a target IPv4 address
list: print the resolved device inventory
Use the bundled Python script:
scripts/wolp_power.py
assets/devices.json
Required inputs:
- Wake:
- target MAC address
- optional broadcast IPv4 address, default
255.255.255.255
- optional UDP port, default
9
- Shutdown:
- target MAC address
- target IPv4 address
- optional
extra_data, default FF:FF:FF:FF:FF:FF
- optional UDP port, default
9
Constraints:
shutdown uses a normal UDP socket and does not require root.
wake uses the Python package wakeonlan and does not require a compiled helper.
- Install the dependency before sending wake packets:
python3 -m pip install wakeonlan
- The
wake subcommand will print a clear error if wakeonlan is missing.
shutdown requires IP connectivity to the target host and a compatible WOL-plus listener on the target machine.
- Packet send confirms only local transmission, not that the remote machine actually changed power state.
Device inventory:
- Store reusable devices in
skill/wolp/assets/devices.json.
- Successful non-dry-run
wake and shutdown commands automatically write the resolved device info back to assets/devices.json.
- If
--device <name> is provided, that entry is updated in place; otherwise the script reuses an existing entry with the same MAC or creates a new device-<mac> entry.
- Repeated operations on the same device keep refreshing that device's stored fields and the latest success metadata.
- The file format is:
{
"defaults": {
"broadcast_ip": "255.255.255.255",
"port": 9,
"extra_data": "FF:FF:FF:FF:FF:FF"
},
"devices": {
"nas": {
"mac": "AA:BB:CC:DD:EE:FF",
"host": "192.168.1.50",
"broadcast_ip": "192.168.1.255"
},
"desktop": {
"mac": "11:22:33:44:55:66",
"host": "192.168.1.60",
"extra_data": "12:34:56:78:9A:BC",
"last_action": "shutdown",
"last_success_at": "2026-03-21T00:00:00Z",
"port": 9
}
}
}
- Use
list before sending if you need to inspect or verify stored devices.
- CLI flags override inventory values.
Preferred commands:
python3 skill/wolp/scripts/wolp_power.py list
python3 skill/wolp/scripts/wolp_power.py wake --device nas
python3 skill/wolp/scripts/wolp_power.py shutdown --device nas
python3 skill/wolp/scripts/wolp_power.py wake --mac AA:BB:CC:DD:EE:FF
python3 skill/wolp/scripts/wolp_power.py wake --mac AA:BB:CC:DD:EE:FF --broadcast-ip 192.168.1.255 --port 9
python3 skill/wolp/scripts/wolp_power.py shutdown --host 192.168.1.50 --mac AA:BB:CC:DD:EE:FF --extra-data FF:FF:FF:FF:FF:FF --port 9
For safe previews or debugging, use --dry-run first:
python3 skill/wolp/scripts/wolp_power.py wake --device nas --dry-run
python3 skill/wolp/scripts/wolp_power.py shutdown --device nas --dry-run
Client install and config:
- Project:
https://github.com/leeyeel/WOL-plus
- Releases:
https://github.com/leeyeel/WOL-plus/releases
- Client receives shutdown packets and serves the Web UI.
- Default Web UI access:
- URL:
http://<client-ip>:2025
- username:
admin
- password:
admin123
Agent standard install procedure:
- Confirm the minimum missing inputs only:
- target OS: Windows, Debian/Ubuntu, or RPM-based Linux
- target architecture when relevant:
amd64 or arm64/aarch64
- whether the agent can install directly on the target machine or must only provide user instructions
- target machine IP if the user wants Web UI verification
- Choose the install source:
- prefer a matching package from Releases
- prefer the Debian package when the agent can reach a Debian/Ubuntu host over SSH
- only build from this repo when a needed Debian package is unavailable from Releases
- Install by platform:
- Debian build fallback from this repo:
bash scripts/build-deb.sh amd64 0.0.0-dev
sudo dpkg -i release/client/wolp-client_0.0.0-dev_amd64.deb
sudo systemctl status wolp.service
- Verify the client after install:
- confirm
wolp.service is active
- confirm the Web UI responds at
http://<client-ip>:2025
- tell the user to change the default password after first login
- Configure the client when the user wants shutdown support:
- edit
/usr/local/etc/wolp/wolp.json
- set
mac_address to the client machine MAC that should receive the shutdown packet
- set
interface to the active NIC name on the client machine
- set
extra_data to match the sender's --extra-data
- set
udp_port to match the sender's --port
- set
shutdown_delay, username, and password as requested
- Remember the fixed defaults and path layout:
- binary:
/usr/local/bin/wolp
- config:
/usr/local/etc/wolp/wolp.json
- web UI:
/usr/share/wolp/webui
- service:
wolp.service
- default
extra_data=FF:FF:FF:FF:FF:FF
- default
udp_port=9
- default
shutdown_delay=60
- default HTTP UI port
2025
- Keep protocol roles clear:
- sender-side inventory
interface matters only for wake
- receiver-side
udp_port and extra_data matter only for shutdown
When reporting results or performing installs:
- echo the resolved broadcast IP, host, UDP port, and normalized MAC values
- for wake, report that the packet is sent through the
wakeonlan Python package
- state clearly whether the script performed a real send or a dry run
- if the user did not provide enough data, ask only for the missing MAC, target IPv4 address, or wake broadcast IP when needed
- if you install the client, report the package source, package path, config path, Web UI URL, and the exact
extra_data and udp_port values you configured