Latest release: v1.2.4Download zip
Capabilities
Compatibility
Security Scan
OpenClaw
Suspicious
high confidencePurpose & Capability
The stated purpose is an internet radio Web UI with player controls and stream database management, and the README/manifest disclose stats, list, check, rebuild, and add functions. The runtime code matches that purpose by invoking fixed Python scripts from the companion OpenClaw skills.
Instruction Scope
The plugin registers HTTP routes for player and database APIs, including check, rebuild, and add operations. These are purpose-aligned but state-changing and potentially expensive, with limited in-artifact warning about side effects or deployment scope.
Install Mechanism
The install/package metadata labels the release as bundle-only and executesCode=false, but the artifact contains index.js, registers an on-startup plugin entry, and uses child_process.execFile to run local Python scripts. That mismatch is material under-disclosure for installation review.
Credentials
Access is limited to fixed paths under ~/.openclaw/skills for the required radio-player and radio-db skills, and commands are executed with execFile arguments rather than shell interpolation. This is proportionate for the plugin’s purpose, but still gives the plugin local command execution through those companion scripts.
Persistence & Privilege
The plugin is enabled by default and activates on startup, but it does not install persistence outside the OpenClaw plugin mechanism, does not create background workers itself, and does not show credential collection or exfiltration behavior.
Scan Findings in Context
[SDI-1] expected: The scanner’s concern about database rebuild/add/check routes is artifact-backed, but those operations are disclosed in the README and align with stream database management. The residual concern is exposure and warning scope, not deception.
[SQP-2] expected: The README documents the administrative database actions, so they are not hidden. It does not clearly warn that rebuild/check can be disruptive or long-running, which supports Review-level caution when combined with the capability metadata mismatch.
[VirusTotal] expected: VirusTotal telemetry was clean and does not add a negative signal.
[staticScan] expected: The static scan reported no suspicious patterns. Manual review still found the package capability metadata inconsistent with the executable plugin behavior.
[pre-scan unicode-control-chars] expected: The only control character found in the artifact was a UTF-8 BOM at the start of README.md, which does not indicate hidden instructions or prompt-injection content.
What to consider before installing
Install only if you expect this plugin to run on startup, call local Python scripts from the companion radio skills, and allow authenticated local Web UI/API actions that can rebuild or modify the stream database. Do not expose the OpenClaw gateway or embedded panel to untrusted users without appropriate access controls.Verification
Tags
Internet Radio Music WebUI
Web UI plugin for OpenClaw that provides an embeddable control panel for the internet radio music player and stream database management.
What it does
- Music Player Controls: Play, Stop, Next, Previous, Resume (auto-resume after stop)
- Mood-based Genre Selection: Pick from 20+ genres (ambient, jazz, rock, etc.)
- Stream Database Management: View stats, list streams, check availability, rebuild database
- Embeddable Panel: Embed in webchat via
[embed url=http://127.0.0.1:18789/mplayer]
Requirements
⚠️ This plugin REQUIRES the following skills to be installed:
- internet-radio-music-player — Music player script (
play_music.py) - internet-radio-music-db — Stream database management (
cli.py,show_stats.py, etc.)
The plugin will NOT work without these skills installed.
API Endpoints
Player API (/api/player/*)
POST /api/player/status— Get current playback statusPOST /api/player/play— Start playback (optional{"mood": "jazz"}body)POST /api/player/stop— Stop playbackPOST /api/player/next— Next random streamPOST /api/player/prev— Previous stream from historyPOST /api/player/history— Playback history
Database API (/api/db/*)
POST /api/db/stats— Full statistics (optional{"sub": "genres|lang|speed|effective"})POST /api/db/list— List streams (optional{"genre": "jazz"})POST /api/db/check— Check all streams availabilityPOST /api/db/rebuild— Rebuild stream databasePOST /api/db/add— Add stream ({"url": "...", "name": "...", "genre": "...", "lang": "..."})
HTML Panel
GET /mplayer— Embeddable web panel with Player and DB tabs
Usage in WebChat
Embed the panel in a webchat message:
[embed url="http://127.0.0.1:18789/mplayer" title="Music Player" height="200"]
Auto-Resume Feature
When playback is stopped via stop, pressing play without specifying a mood/genre automatically resumes the last played stream. Specifying a mood always starts a new random stream.
Installation
⚠️ Important: use the clawhub: prefix, otherwise the plugin will not be found.
openclaw plugins install "clawhub:internet-radio-music-webui"
openclaw gateway restart
License
MIT
