Operations — running, deploying, and recovering the show

Day-to-day operation lives on the ops landing page served by the show network itself: http://192.168.8.172:8080 (startup steps, shutdown ritual, live status, links to everything — including an offline copy of this wiki). This page covers what the landing page doesn’t: how the show’s brain is deployed, backed up, and rebuilt from nothing.

Everything below runs from the playa-deploy/ directory of the private gothic-folly-leds repo on John’s Mac. No internet is required for any of it — the Mac just joins the show wifi.


The backup inventory

What Where Restores
SD card images (full Pi system) backups/pi-images/ on John’s Mac — definitive: gothic-folly-fpp-pi-2026-08-19.img.gz The Pi’s OS + FPP + services
Show state (playlists, button board, schedule, DDP config) git, playa-deploy/show/ Everything the show is
Sequences playa-deploy/content/sequences/ + backups/fpp-media-*/ on the Mac All playable .fseq files
Falcon config (all 48 ports, certified) git, falcon-backups/Falcon_F48V5_AC59_2026-08-17.json The controller via its UI’s restore
Pi system config (fstab, cmdline, cron, services) git, playa-deploy/pi-system/ Rebuild-from-stock reference

Key fact: the Pi’s SD card holds the OS; the SSD holds the media (sequences, wiki, board config, ops scripts). Reflashing the SD does NOT touch the SSD — media survives an SD swap.


Routine deploys (new sequences, playlists, board changes)

cd playa-deploy
make              # process raw .fseq renders -> -c80 + power report
./deploy-show.sh  # push sequences/playlists/board/schedule to the Pi

If code changed (the launchpad bridge, web pages, ops scripts):

./update-pi-code.sh

If the wiki changed (like the pre-playa cleanup):

make wiki && make deploy   # re-mirrors the site into the Pi's offline copy

All idempotent — safe to re-run any time.

Pipeline scripts (reference copies)

The three scripts behind make — for reading, or for running the pipeline on another machine:

Script Role
expand-fseq.py Rose window expansion — 224 design cells → 517 physical LEDs/petal (appended at u76+, originals untouched)
compress-fseq.py The power limiter — expands the rose in-memory, then scales frames so no PSU exceeds rating and the show stays under the generator budget (rose protected most)
analyze-fseq.py The brightness/power analyzer behind the per-sequence reports
petal-config-v2.json Per-petal calibration data the expansion uses — cell → physical LED segment mapping for all 16 petals

These are snapshots of the canonical scripts in the private repo (pixel-map/); note compress/analyze also need the wiring DB from that repo to run.


If Nick’s laptop is lost or dies

The show does not depend on the laptop. Everything operational — playlists, the Launchpad, the hourly chime and sunrise automation, the FPP and Falcon web UIs, the ops page at fpp-pi:8080 — runs on the FPP Pi and works from any phone or browser on the show WiFi. Credentials live in Nick’s password manager (also on his phone).

What the laptop is actually for, and the fallback for each:

Laptop job Fallback
Operating the show Any browser on the show WiFi — nothing to install
Asking Claude / looking things up Slack → Claude on the home Pi, which holds the full project repos, the wiring DB, and the runbook (kept current)
Editing / creating sequences Rebuild a sequencing station on any borrowed laptop — see below

Rebuilding a sequencing station (any Mac/PC, ~30 minutes + downloads):

  1. Install xLights (xlights.org).
  2. Clone the project repo from GitHub (jkeefe/johnclaude-pi-projectsgothic-folly-leds/).
  3. Restore the xLights show directory from the home-Pi backup: ~/backups/xlights-show-2026-08-26/ (661 MB — full show dir including renders; ask Claude via Slack to serve/transfer it).
  4. Point xLights at that folder as the show directory. Render → expand-fseq/compress-fseq (in the repo, needs python3 + zstd) → upload to FPP as usual.

The playable .fseq files themselves never leave the playa — they’re on the FPP Pi’s SSD, independent of any laptop.

Reaching the home Pi (three paths, in order of ease):

  1. Slack — no setup needed. Log into Slack from any browser or phone and DM Claude (“Really Good Smarts” workspace). Claude runs on the home Pi with full repo access and can answer questions, regenerate files, or push anything to a fetchable location. This is the primary path.
  2. Files without SSH: ask Claude (via Slack) to copy anything — including the 661 MB xLights backup — to Google Drive or another downloadable link. No network setup on the borrowed laptop at all.
  3. Direct SSH (only if truly needed): the home Pi lives on Nick’s Tailscale network (johnkeefe@100.110.227.39) — a borrowed laptop must first install Tailscale and sign in with Nick’s Tailscale account (credentials in the password manager) to join the tailnet. Nick’s phone with the Tailscale app + an SSH client also works.

Restoring the Pi from an image (SD card death / corruption)

  1. Write the image to a same-size-or-larger card (on a Mac):
    diskutil unmountDisk /dev/diskN
    gunzip -c gothic-folly-fpp-pi-2026-08-19.img.gz | sudo dd of=/dev/rdiskN bs=4m
    
  2. Card into the Pi (SSD attached), power on, wait for boot.
  3. Bring the code current (the image predates the newest features):
    cd playa-deploy && ./update-pi-code.sh
    
  4. Bring the content current:
    ./deploy-show.sh
    

That’s the whole rebuild: image + two scripts = the show’s brain from nothing. The Falcon needs no rebuild (its config is on the board); if it ever does, upload falcon-backups/…json via its web UI’s restore.


Restoring the Falcon controller

Falcon UI (http://192.168.8.205) → backup/restore → upload falcon-backups/Falcon_F48V5_AC59_2026-08-17.json (in git — every port certified against the wiring runbook). Set nothing else by hand.


The Gothic Folly — Burning Man 2026