RADIOCLI

Platforms

Runtime requirements, installation routes, native feature limits, and the evidence behind RadioCLI's platform tiers.

RadioCLI requires Node.js 22 or newer. Local audio needs a working player. The reference matrix below covers Node.js 22 and 24. Runtime eligibility, installed tools, and verified RadioCLI behavior are tracked separately for each OS version, CPU, libc, and Node release line.

Run radiocli doctor --json to inspect the capabilities of the current machine. Use radiocli setup --dry-run to preview the native playback packages and commands for the detected operating system.

Support Tiers

TierRequired evidence
First-classA repeatable installation with verified prerequisites, packed runtime and playback checks on the target, and maintained required CI whose failures block releases
SupportedA verified, repeatable runtime, packed installation, and playback path without required CI coverage
ExperimentalA code path or package route exists, but project verification is incomplete
UnsupportedA known requirement blocks the configuration, such as Node.js below 22 or an incompatible OS/CPU runtime

A package recipe, a mocked platform test, or a downloaded binary does not establish a verified installation. A Linux container exercises its host kernel; a full BSD guest exercises a BSD kernel. Foreign-CPU emulation is recorded as emulation. Each result applies to the configuration and artifact actually tested.

The upstream Node rating is a separate axis: repeatable project evidence can establish a supported configuration on a community runtime. Known runtime requirements still apply.

Doctor reports support.scope=current-installation. It checks runtime requirements and available tools without running packed-install or audio acceptance tests, and does not import a reference machine's CI evidence. Its support.tier therefore remains experimental for an unverified local installation, even when the reference configuration below is supported or first-class. A known runtime blocker is reported as unsupported. Individual capability results explain what can be used in the current session.

Tested Configurations

The required CI matrix covers macOS, Ubuntu, and Windows on Node.js 22 and 24. BSD package checks run in full guest kernels. The table describes exactly what those checks exercise; it does not imply support for unlisted desktop, audio, terminal, or hardware combinations.

ConfigurationAutomated coverageProject tier
macOS arm64; Node 22 and 24Full tests plus packed installation with normal and omitted optional dependencies; native mpv decoding and IPC controls through null audio outputFirst-class
macOS Intel x64; Node 22 and 24Full tests plus both packed-install and native mpv playback modesFirst-class
Ubuntu glibc x64 and arm64; Node 22 and 24Full tests, both packed-install modes, native mpv IPC playback, and separate source playback checksFirst-class
Windows Server x64; Node 22 and 24Full tests, both packed-install modes, native mpv named-pipe playback, PowerShell argument handling, and console TTY checksFirst-class for the tested server environment; Windows desktop behavior depends on the local terminal and audio setup
Windows 11 arm64; Node 22 and 24Full tests, both packed-install modes, native arm64 mpv named-pipe playback, PowerShell argument handling, and console TTY checksFirst-class for the tested Windows 11 environment
FreeBSD 14.4 and OpenBSD 7.9 x64; Node 22Packed CLI, cache, import/export, MCP, and native mpv IPC playback with --omit=optional in full QEMU guestsSupported for the core package route; desktop applications and background scheduling are not covered
NetBSD 10.1 x64; Node 22The same core guest checks after installation of the matching X11 base librariesSupported for the core package route; desktop applications and background scheduling are not covered
Alpine/musl, WSL, other Linux CPUs, other BSD CPUs, Termux, illumos, AIXRuntime and package detection paths are available, but complete installation and playback checks are not part of the maintained matrixExperimental
Standard HaikuPorts Node 20 installation; Node below 22; Windows XP; 32-bit macOS; Windows x86 with Node 24The normal runtime route does not meet RadioCLI's requirement. A Haiku player package does not resolve its Node version blocker.Unsupported for these configurations

The native matrix contains 12 required OS, CPU, and Node combinations: macOS arm64 and Intel, Ubuntu x64 and arm64, and Windows x64 and arm64, each on Node 22 and 24. A configured job counts as first-class only while its installation, test, packaging, and playback checks remain required release gates.

The mpv checks verify decoding and IPC through null audio output. Physical audio devices, terminal applications, screen readers, desktop window opening, and actual wake delivery depend on the user's hardware and operating-system policy. The visual regression suite verifies terminal output at fixed sizes.

Node.js Runtime Reference

The version numbers here are upstream binary or build baselines. Node.js also excludes OS releases whose vendor support has ended, even if they meet a listed minimum. A newer Node major may meet RadioCLI's package minimum while remaining outside this Node 22/24 reference matrix. The primary references are the Node 22 platform list and Node 24 platform list.

System and CPUOS / libc baselineNode 22 upstream statusNode 24 upstream status
macOS x64 / arm64macOS 11 for Node 22; macOS 13.5 for Node 24Tier 1Tier 1
Windows x64Windows 10 / Server 2016 or newerTier 1Tier 1
Windows arm64Windows 10 or newerTier 2Tier 2
Windows x86Windows 10 or newer; upstream tests use WoW64Binaries provided; running is Tier 1, native compilation experimentalNo Windows x86 runtime
glibc Linux x64 / arm64Kernel 4.18+, glibc 2.28+Tier 1Tier 1
glibc Linux ARMv7Kernel 4.18+, glibc 2.28+Tier 1Experimental; community build needed
glibc Linux ppc64le / s390xKernel 4.18+, glibc 2.28+; POWER8+ for ppc64leTier 2Tier 2
glibc Linux x86Kernel 3.10+, glibc 2.17+ExperimentalExperimental
glibc Linux riscv64Node 24 reference: kernel 5.19+, glibc 2.36+Not listed; community route needs verificationExperimental
Linux big-endian ppc64A compatible community Node 22+ port must be establishedNo standard upstream route listedNo standard upstream route listed
musl Linux x64, including AlpineKernel 3.10+, musl 1.1.19+; use a musl buildExperimentalExperimental
musl Linux arm64 / s390x; ARMv7 on Node 22Distribution-specific build and runtime librariesDistribution route; verify the selected packageDistribution route for arm64 / s390x; ARMv7 unverified
WSLA compatible Linux runtime inside the selected WSL distributionWSL-specific issues are outside upstream native Linux supportSame limitation

The glibc release binaries also need a compatible libstdc++; the reference symbol version is GLIBCXX_3.4.25, or GLIBCXX_3.4.28 for Node 22 ARMv7. Linux ppc64le is little-endian; it is distinct from both Linux big-endian ppc64 and the big-endian POWER runtime used by AIX. A generic arm label alone does not establish ARMv7 compatibility.

Node 24 publishes x64-musl archives while retaining an experimental musl rating. Its current release files do not include ARMv7 binaries. Use the Node 24 release manifest and distribution image architecture records to check the available build; a glibc Linux archive is not a musl or Android Bionic archive. Distribution images do not establish RadioCLI audio or desktop verification.

Additional OS Runtime Routes

SystemOS / CPU referenceNode route and limit
FreeBSDUpstream experimental baseline: FreeBSD 13.2+ x64; verified guest: 14.4 x64Node 22/24 ports exist. Other CPUs use port-specific routes; an architecture allowlist does not establish a binary package for every release.
OpenBSDRelease and CPU must provide Node 22+; verified guest: 7.9 x64The current Node port is 24.x and lists amd64, aarch64, i386, powerpc64, and riscv64. Release binary repositories can supply an older Node; the recorded 7.9 guest supplied Node 22.23.2.
NetBSDRelease-specific pkgsrc packages; selected guest: 10.1 x64Node 22/24 pkgsrc recipes exist. The guest supplied Node 22.23.0. Other CPUs need separate package and runtime verification.
Android / TermuxAndroid 7+ with Termux's Bionic packagesnodejs-lts currently provides Node 24. Recipe targets include aarch64, arm, i686, and x86_64; device execution is unverified. Android outside Termux has no established RadioCLI install route.
SmartOSUpstream reference: SmartOS 18+ x64Node 22/24 list Tier 2; use a suitable maintained distribution or pkgsrc build.
Other illumos distributionsx64 package routes depend on the distributionGeneric SunOS kernel 5.11 does not identify SmartOS or prove its version requirements. Verify the selected Node port and backend.
AIXAIX 7.2 TL04+, big-endian POWER8+Node 22/24 list Tier 2; Node 24 also needs libstdc++12. A native player installation route remains unverified.
HaikuA custom working Node 22+ port would be requiredThe inspected HaikuPorts catalog provides Node 20.15.1, below RadioCLI's minimum. The normal package route is blocked.

These routes come from the FreeBSD Node ports, OpenBSD Node port, pkgsrc Node 22 and Node 24 recipes, Termux installation requirements, Termux Node LTS recipe, and HaikuPorts Node catalog. They describe available routes, not completed RadioCLI tests.

Installation And Playback Prerequisites

After installing a compatible Node runtime and npm, the standard package command is npm install -g @ciphore/radiocli. mpv provides IPC playback controls; ffplay and VLC are limited-control fallbacks. Custom player installations can use the absolute path overrides.

The recipes below were checked against package sources. Only the recorded configurations in the evidence table have completed RadioCLI verification. System package commands need the host's appropriate administrator access; Termux pkg and Haiku pkgman run without sudo.

SystemPlayback / runtime routePackaging limits and primary source
macOSCompatible Node plus npm; Homebrew mpv, or sudo port install mpv with MacPortsHomebrew's OS/CPU policy is narrower than Node's. MacPorts mpv is a separate route.
Windowsx64: winget install --id shinchiro.mpv -e; arm64: Scoop's mpv; x86: a matching native i686 buildThe checked WinGet mpv manifest is x64-only. Scoop lists x64 and arm64; mpv release assets also include i686.
glibc Linuxmpv from the configured distribution catalog; setup selects apt, dnf, pacman, or zypperVerify the actual Node version and media repository. A distribution's nodejs package can still be below 22. See mpv's package references.
Alpine / muslapk add nodejs npm mpv, with a compatible repositoryThe inspected Alpine 3.24 x64 Node package is 24.x. Other releases/CPUs need separate checks.
FreeBSDpkg install -y node22 npm-node22 mpv, or a matching Node 24/npm pairNode ports omit npm, so install the matching npm package. FFmpeg's SDL option controls whether ffplay is present.
OpenBSDdoas pkg_add -I node mpvCheck that the selected release supplies Node 22+. The pkg_add manual defines -I as noninteractive.
NetBSD / pkgsrcInstall the matching NetBSD X11 base set, then pkgin -y install 'nodejs>=22<23' mpv, when that line exists in the repositoryThe binary mpv package links to system X11 libraries even for null output; a minimal OS image can lack them. Binary Node packages are named nodejs, with npm included. Use an available Node 24 range if needed. pkgin manages the catalog; pkgsrc ffplay uses versioned packages and executables such as ffplay7.
SmartOS / illumosBootstrap the appropriate pkgsrc environment, then use its pkgin Node/mpv packagesRadioCLI's setup recipe uses existing pkgin; it does not treat IPS pkg as FreeBSD pkg. See SmartOS packages and illumos binary packages.
Termuxpkg install -y nodejs-lts npm mpv as the normal app userSetup identifies this as termux-pkg. Its main FFmpeg recipe omits ffplay; the separate ffplay package needs x11-repo and its display/audio environment.
Haikupkgman install -y mpv; ffmpeg8_tools provides FFmpeg/ffplayThese player recipes do not resolve the Node 20 runtime blocker. No working normal RadioCLI install is claimed.
AIXProvision a compatible Node runtime and native player manuallyNo verified mpv or ffplay package recipe was established. The IBM Toolbox catalog is not evidence that a dnf install mpv command exists.

Homebrew applies its own support-tier policy to Intel macOS. That policy is independent of Node's x64 runtime eligibility. Likewise, a Windows x64 media package does not establish native ARM64 or x86 playback; use an executable built for the target architecture.

The optional AirPlay sender has native installation dependencies. A package installed with --omit=optional retains the normal local-player path but omits that sender. Installs with and without optional dependencies are separate acceptance checks; neither establishes an AirPlay receiver connection. The recorded BSD guests installed the packed tarball with --omit=optional in fresh temporary projects and executed the generated npm bin link. For a manual registry installation, use npm install -g --omit=optional @ciphore/radiocli; that global registry route and normal optional-dependency installation were not the recorded guest checks.

Playback And Desktop Compatibility

These tables describe implemented adapters and their prerequisites. Tool discovery is checked separately from successful execution. Shared TUI code supports Unicode, ASCII decoration, limited color, screen-reader output, and reduced motion; it still needs interactive keyboard input. See TUI Controls for rendering options.

HostLocal playback / TUIBrowser and clipboardTerminal reopening
macOSmpv Unix-socket IPC; ffplay/VLC fallback; shared TUIopen and pbcopy in a local desktop sessionSupported installed macOS terminal; Apple Terminal/iTerm2 may require Automation consent
Windowsmpv named-pipe IPC; ffplay/VLC fallback; shared TUIexplorer and clip in a local desktop sessionWindows Terminal or a PowerShell console
Linux, glibc or muslShared player/TUI paths; actual backend and audio service requiredxdg-open; wl-copy, xclip, or xsel, with an appropriate desktop sessionAn installed supported GUI terminal and display session
WSLLinux player/TUI paths require separate WSL verificationLinux session helpers; Windows desktop access is not inferredLinux terminal path; depends on the guest's display/session
FreeBSD / OpenBSD / NetBSDShared player/TUI paths; exact guest results above do not establish a desktop terminal applicationxdg-open and the available Wayland/X11 clipboard helperUnix terminal adapter; installed terminal and display required, launch unverified
TermuxBionic runtime and Termux mpv path; device/TUI/audio execution unverifiedtermux-open-url; termux-clipboard-set needs Termux:APINo separate terminal-reopening adapter
illumos / AIX / custom Haiku or other portsCore execution requires a separately verified Node/player pairNo automatic browser or clipboard adapterNo terminal-reopening adapter

The Termux helper contracts are defined by termux-open-url and termux-clipboard-set. Clipboard access also requires the helper package and a compatible, correctly signed Termux:API app; Android permission and execution checks still apply.

Alarm, Power, And Output Paths

HostBackground alarmsSystem volumeSleep inhibition and wakeAirPlay
macOSPer-user launchd LaunchAgentmacOS output-volume scriptingcaffeinate for idle sleep; no privileged exact-wake eventExperimental; FFmpeg, Bonjour, usable sender, and explicit receiver selection required
WindowsTask Scheduler with interactive user tokenCore Audio through PowerShellSetThreadExecutionState; WakeToRun can be requested, subject to hardware and policyNo adapter
Linux, including muslAccessible systemd user manager and timer requiredWorking wpctl, pactl, or amixerLive systemd-inhibit lease; no privileged WakeSystem requestNo adapter
WSLLinux systemd user path only when its session is usable; unverifiedLinux mixer path, not Windows host volumeLinux inhibitor path; Windows wake behavior is not inferredNo adapter
FreeBSD / OpenBSD / NetBSDNo background scheduler adapterNo system-volume adapterNo sleep-inhibitor or wake adapterNo adapter
Termux / illumos / AIX / Haiku / other portsNo background scheduler adapterNo system-volume adapterNo sleep-inhibitor or wake adapterNo adapter

Finding systemctl does not prove a working systemd user manager. Finding a mixer or inhibitor command does not prove it can control this session. Player volume remains separate from system output volume, and local playback can remain usable when optional desktop or scheduling features are unavailable.

Use radiocli alarm doctor and Verify alarm setup for the current machine. The latter performs native actions and bounded sample playback. The Alarms guide, Reliability, and Troubleshooting describe repair paths and delivery limits.

On this page