WOLP LAN Power Control
Wake or shut down LAN devices by sending WOL-plus packets from the agent host. Use this when the user wants to power on a device with a raw Ethernet magic pa...
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 1 · 28 · 0 current installs · 0 all-time installs
byli.yao@leeyeel
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description match the included Python script and SKILL.md. The script constructs and sends Wake-on-LAN and WOL-plus UDP payloads, reads/writes a local devices.json inventory, and documents the external client it can install. No unrelated capabilities or credentials are requested.
Instruction Scope
SKILL.md keeps instructions focused on wake/shutdown/list operations and installing/configuring the optional WOL-plus client. It does instruct the agent/user on installing a client on target machines (downloads from GitHub Releases) and to edit client config paths like /usr/local/etc/wolp/wolp.json; those steps are reasonable for enabling shutdown support but are higher-privilege operations on target hosts and should only be performed with explicit user consent. The skill will also update skill/assets/devices.json in-place after successful non-dry-run operations (it persists MAC/IP entries).
Install Mechanism
The skill is instruction-only with a bundled script; there is no automated install spec. SKILL.md recommends obtaining the client from a GitHub repo and releases, which is an expected source for third-party client software. Nothing is downloaded automatically by the skill itself.
Credentials
The skill declares no environment variables, credentials, or config paths to access. It stores device inventory locally (MACs and IPs) in assets/devices.json — this is expected but may contain sensitive network topology data. The Python script only requires the optional wakeonlan pip package for the 'wake' action.
Persistence & Privilege
The skill does not request always:true or elevated platform privileges. It writes and updates its own assets/devices.json (its own bundle area) but does not modify other skills or system-wide agent settings. SKILL.md does describe installing a separate client service on remote machines, which is a normal operational requirement for shutdown functionality but is an explicit external action.
Assessment
This skill appears to do what it says — sending LAN Wake-on-LAN and WOL-plus shutdown packets and keeping a small local inventory. Before installing or using it: (1) run operations with --dry-run first to confirm payloads; (2) be aware the skill will update skill/assets/devices.json with MACs and IPs — treat that file as sensitive; (3) the 'wake' action requires the wakeonlan pip package (install manually if needed); (4) enabling shutdown support requires installing a separate WOL-plus client on target hosts (SKILL.md points to a GitHub Releases page) — verify the release source and only install on machines you control; (5) change the client's default web UI credentials (admin/admin123) immediately after install; (6) do not grant the agent remote install rights or SSH access to hosts unless you explicitly trust the agent and understand the changes it will make.Like a lobster shell, security has layers — review code before you run it.
Current versionv0.0.2
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
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 Pythonshutdown: send a UDP magic packet to a target IPv4 addresslist: print the resolved device inventory
Use the bundled Python script:
scripts/wolp_power.pyassets/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, defaultFF:FF:FF:FF:FF:FF - optional UDP port, default
9
Constraints:
shutdownuses a normal UDP socket and does not requireroot.wakeuses the Python packagewakeonlanand does not require a compiled helper.- Install the dependency before sending wake packets:
python3 -m pip install wakeonlan
- The
wakesubcommand will print a clear error ifwakeonlanis missing. shutdownrequires 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
wakeandshutdowncommands automatically write the resolved device info back toassets/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 newdevice-<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
listbefore 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
- URL:
Agent standard install procedure:
- Confirm the minimum missing inputs only:
- target OS: Windows, Debian/Ubuntu, or RPM-based Linux
- target architecture when relevant:
amd64orarm64/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:
- Windows:
- download
installer_windows_amd64_v<version>.exefrom Releases - if the agent cannot control the Windows desktop session, tell the user to run the installer manually
- after installation, verify the service is running and open
http://<windows-ip>:2025
- download
- Debian/Ubuntu:
sudo dpkg -i wolp-client_<version>_amd64.deb sudo systemctl status wolp.service - RPM Linux:
sudo rpm -ivh wolp-client-<version>-1.x86_64.rpm sudo systemctl status wolp.service
- Windows:
- 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.serviceis active - confirm the Web UI responds at
http://<client-ip>:2025 - tell the user to change the default password after first login
- confirm
- Configure the client when the user wants shutdown support:
- edit
/usr/local/etc/wolp/wolp.json - set
mac_addressto the client machine MAC that should receive the shutdown packet - set
interfaceto the active NIC name on the client machine - set
extra_datato match the sender's--extra-data - set
udp_portto match the sender's--port - set
shutdown_delay,username, andpasswordas requested
- edit
- 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
- binary:
- Keep protocol roles clear:
- sender-side inventory
interfacematters only forwake - receiver-side
udp_portandextra_datamatter only forshutdown
- sender-side inventory
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
wakeonlanPython 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_dataandudp_portvalues you configured
Files
3 totalSelect a file
Select a file to preview.
Comments
Loading comments…
