Sonic-Forage // M1NDB0TZ // operator lesson

Live AI Radio Framework, explained while it runs.

A full-page demo for the stream: what is live, how the browser + generated-radio + Modal pusher works, what viewers can safely ask for, and what tests prove it is real without leaking keys or letting chat drive shell commands.

Modal task: 1single-primary generated-radio pusher
Speed: ~1xFFmpeg frame/time proof after restart
Chat→shell: falsesafe queue only, no raw command bridge
Watchdog: armedquiet 5-minute Modal task check

Framework map

The five lanes

Verify
1. Idea / Chat Spark

Viewer or operator drops a safe spark: poem, badge, lesson, proof card, music block, build queue.

2. Safety Router

Filters: no secrets, no chat-to-shell, no spend, no upload, no external action without human yes.

3. Browser Program

HTML/CSS/JS surface becomes the on-stream show: lesson, build wall, queue, avatar, captions.

4. FFmpeg Pusher

Captures browser with Xvfb, loops owned/generated audio, encodes H.264/AAC to RTMPS.

5. Receipts

Modal task, frame logs, manifests, verifiers, and watchdog reports prove live vs reconnecting.

Interactive lesson demo

What the audience sees

Local JS only. No network calls except the manifest link if clicked.
LIVE STATE // GENERATED RADIO

The music stays on while Hermes explains the architecture. The show is a browser surface, not a raw terminal.

modal_app=sonic-forage-kick-generated-radio-v4\ntasks=1\nffmpeg_speed≈1x\nstream_key_visible=false

What we can do next

Capabilities unlocked

01

Lesson / tutorial mode

Turn the stream into a live class: explain the framework, show receipts, teach how the AI station is assembled.

02

Viewer spark queue

Chat ideas become safe cards: poems, badges, drops, DJ lines, proof-card prompts, no automatic external actions.

03

Episode blocks

Swap hourly: build wall, radio show, archive investigation, avatar office, arcade mode, or generated art review.

04

Proof hub receipts

Every new lane gets JSON manifests, verifier commands, closed gates, and a human-readable explanation page.

05

Human takeover

OBS can take over upstream of the relay, then hand back to the AI fallback without fighting the stream key.

06

Real API crowd feedback

Later: Kick OAuth/webhooks for chat/rewards, least-privilege scopes, local queue bridge, and explicit approval gates.

Test plan

How we know it is not fake

Static page contract
PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_sonic_forage_live_framework_lesson.py

Checks HTML parse, manifest schema, expected copy, no external scripts, all risky gates false.

Modal dry-run
modal run /opt/data/scripts/kick_24h_streamer_generated_radio_mix_v4.py --dry-run-seconds 12 --hours 0.01

Proves browser capture, audio loop, FFmpeg encode, and timing without touching public RTMPS.

Live pusher receipt
modal app list --json → sonic-forage-kick-generated-radio-v4 Tasks == 1

Confirms the single Modal source exists. Public Kick viewer state is checked separately because platforms cache and refuse sessions.

Secret scan
grep-like scan changed docs/scripts for stream key/token patterns

Ensures the page explains the system without committing the stream key. Beavis would paste the key into the hero. We do not let Beavis drive.

Build route

Next useful upgrades

Now: lesson page + receipt manifest

This file. It can be screen-shared or used as a future browser source after controlled refresh approval.

Next: live JSON status panel

Write a tiny redacted status JSON from the watchdog so the page displays task age, source, and last proof line.

Then: safe chat spark intake

Kick chat/OAuth/webhook messages land in a moderated JSONL queue. The page renders accepted prompts only.

Later: program mixer

Move from direct Modal browser pusher to a stable program/mixer feed so human OBS, AI fallback, and emergency cards switch upstream without RTMPS fights.

Closed gates

What this page does not do

No stream key display

Credentials stay in protected env/Modal Secret. Page copy never prints them.

No chat-to-shell

Chat can request ideas; it cannot run commands, upload data, spend money, or mutate repos.

No public claim inflation

“Live” means active pusher evidence. “Reconnecting” means reconnecting. No fake victory laps.

No paid/model actions

Training, uploads, paid generation, outreach, payments, and public posts remain human-approved gates.