FPP-resident build of ShowPilot. Runs on the same host as Falcon Player and provides voting, jukebox, and a now-playing display for visitors. Audio streaming is removed — this is the right pick for shows delivering audio externally (PulseMesh, FM transmitter, Icecast, etc.) where ShowPilot doesn't need to host audio bytes.
Migrating from Remote Falcon? ShowPilot's viewer page renderer is fully compatible with Remote Falcon templates. All the standard placeholders (
{PLAYLISTS},{NOW_PLAYING},{JUKEBOX_QUEUE},{NEXT_PLAYLIST},{QUEUE_DEPTH},{LOCATION_CODE}, etc.) and mode containers ({playlist-voting-dynamic-container},{jukebox-dynamic-container},{after-hours-message},{location-code-dynamic-container}) work identically. Paste your existing Remote Falcon viewer HTML into ShowPilot's editor and it just works — no template rewrite needed. If something doesn't render quite right out of the box (older RF templates sometimes lack a few of the toast hooks or the after-hours setup ShowPilot expects), drop your HTML into the RF Template Converter — it adds the missing pieces, flags layout traps, and gives you back a paste-ready ShowPilot template.
| ShowPilot | ShowPilot-Lite | |
|---|---|---|
| Where it runs | LXC / Docker / VM / bare metal | On FPP itself (same Pi/BBB as the player) |
| Audio streaming to viewers | ✅ HTTP audio + cache + sync | ❌ Removed — pair with PulseMesh / FM / Icecast |
| Voting / Jukebox | ✅ | ✅ |
| Now-playing display | ✅ (with optional player controls) | ✅ (display-only bar, auto-shows when playing) |
| Backup / restore | ✅ | ✅ |
| Plugin sync (sequences, status) | ✅ | ✅ |
| Cover art (MusicBrainz / iTunes) | ✅ | ✅ |
| Song progress bar on the viewer page | ✅ | ✅ |
Visitor messages to the show ({MESSAGE_BOX}), optional message wall ({MESSAGE_WALL}) |
✅ | ✅ |
| Redesigned admin + customizable Cockpit tablet mode | ✅ | ✅ |
| Public access via Cloudflare Tunnel | ✅ | ✅ |
| Footprint on FPP's SD card | n/a (runs elsewhere) | Tiny — no audio cache, no audio bytes |
If you need HTTP audio for viewers (cars without FM, etc.), use the full ShowPilot on a separate host. If your audio reaches viewers another way, Lite gives you everything else without putting audio I/O on FPP's SD card.
- FPP 8.0 or newer on the Pi / BeagleBone that will run Lite
- Internet access during install (Node.js and dependencies are downloaded)
ShowPilot-Lite installs as an FPP plugin. From FPP's web UI:
- Open Content Setup → Plugin Manager
- Either find ShowPilot-Lite in the list (once published to the FPP plugin registry), or scroll to the Manual Add section and paste:
https://raw.githubusercontent.com/ShowPilotFPP/ShowPilot-Lite/main/pluginInfo.json - Click Install. FPP will clone the repo and run the install script, which:
- Installs Node 22 from NodeSource if not already present
- Compiles native dependencies (
better-sqlite3) - Sets up a data directory at
/home/fpp/media/plugindata/ShowPilot-Lite/(backed up by FPP's own backup feature) - Drops a
systemdunit and starts the service on port 3100 (plus a small helper service used for the optional Cloudflare Tunnel)
- After install completes, restart FPPD if FPP prompts you to, then choose ShowPilot-Lite Admin under FPP's Content Setup menu to open the admin.
- First login:
admin/admin. You'll be prompted to set a password immediately.
If you want to run Lite outside FPP's plugin manager:
# 1. Install Node 22 if not present
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
# 2. Clone and install
git clone https://github.com/ShowPilotFPP/ShowPilot-Lite.git
cd ShowPilot-Lite
npm install --omit=dev
# 3. Copy config template, edit if needed
cp config.example.js config.js
# 4. Run
node server.jsShowPilot-Lite assumes audio reaches viewers via something other than itself. PulseMesh is the obvious pick — it handles RF audio distribution at a quality and scale this software can't. Configure PulseMesh per its own docs; ShowPilot-Lite handles the voting / jukebox / display side.
Edit config.js. Defaults are sensible for FPP-on-LAN deployments. Notable settings:
port— defaults to 3100dbPath— defaults to./data/showpilot-lite.dbjwtSecretandshowToken— leavenullto auto-generate; persisted todata/secrets.jsonafter first boottrustProxy—falseif you expose port 3100 directly,1if you put nginx/Caddy in front
Once a day ShowPilot-Lite sends an anonymous check-in so we know how many installs are running and which versions they use. It sends only a random ID made on your install, the product name and the version. No show name, URL, IP address or settings, and nothing is sent back. You can see the exact message in Settings → General → Install count.
- Turn it off: untick Count this install there, or set
installCount: falseinconfig.js, or set the environment variableSHOWPILOT_NO_INSTALL_COUNT=1.DO_NOT_TRACK=1also works. - Show map (optional, off by default): pick Country, State / region or Town to put your show on the public map. ShowPilot-Lite still sends no location; the counter uses an approximate lookup of the connection and keeps only the level you chose.
MIT. See LICENSE.