Radio Panel
Interactive vinyl-style radio panel for Grafana. The panel supports weekday-based station scheduling, optional timed override, and now playing metadata per station.
Screenshots

Features
- Clickable vinyl disk UI that plays a configured radio stream.
- Day-by-day station setup or one shared station for all days.
- Optional station presets with per-day preset selection.
- Timed override for selected weekdays starting at a specific hour.
- Now playing presets for NPO Sterren NL, Arrow Classic Rock, and custom JSON APIs.
- Optional continuous playback mode for dashboard playlist transitions.
- Styling controls for panel, disk, and label borders.
- Grafana variable support in station name, stream URL, and logo URL.
Station presets
You can optionally use presets as a faster way to configure day schedules.
- Enable
Use station presets for daysin panel options. - Configure preset slots in the
Presetscategory. - Select a preset per day in the
Stationscategory. - Choose
No presetfor a day to use that day's custom station fields.
This is additive and non-breaking: existing day-by-day station setup continues to work.
Now Playing and CORS
This panel runs in the browser as a Grafana panel plugin and cannot use Grafana's server-side data source proxy for arbitrary HTTP requests. Some external now-playing APIs block browser-origin requests due to CORS policy.
The Arrow Classic Rock preset uses r.jina.ai as a default CORS-friendly wrapper so metadata can be fetched in browser context.
You can set one global CORS proxy for all stations with the panel option Now playing CORS proxy URL.
- Leave empty to use the preset default behavior.
- Use a URL prefix (for example
https://r.jina.ai/) to prepend the API URL. - Or use
{{url}}placeholder when your proxy expects a query parameter (for examplehttps://my-proxy.example/fetch?url={{url}}).
When a now-playing request is blocked by CORS (or another network-level browser restriction), the panel stops polling that endpoint for the active station and falls back to normal station/status text. To keep now-playing metadata enabled, use endpoints that allow browser CORS or place a CORS-enabled proxy in front of the metadata API.
Add your own now-playing API
Yes. You can configure your own endpoint without code changes:
- Set the station
now playing presettoCustom JSON API. - Fill in
now playing API URLwith your endpoint. - Optionally set
Now playing CORS proxy URLwhen the endpoint blocks browser CORS.
The custom parser tries common keys such as artist, title, song, track, image, and coverUrl.
Requirements
- Grafana
>=12.3.0
Support
Plugin Insights
Quality scores for version 1.2.0
- Status: PassedSecurity
All checks passed
- Status: PassedMaintenance
All checks passed
- Status: PassedDocumentation
All checks passed
- Version
- 1.2.0
- Dependencies
- Grafana >=12.3.0
- Developer
- teuwsenservices
- Last Updated
- April 9, 2026