refactor: split music streaming into Hope Music
Rebuild & Deploy / rebuild (push) Successful in 2m7s

Move the media server, downloader, library volume, and browser player to the
standalone hope-media-music product. Keep Hope's music tools as a thin HTTP
client of the LAN service on port 8094.

Use a stable voice-room player scope instead of ephemeral LiveKit room names.
The agent now owns the conversation handshake: fresh reported playback mutes
its input, joining pauses music, and the last participant leaving resumes only
music it paused. Peer failures remain non-fatal.

Also move the voice deploy workflow onto the active Unraid Gitea runner and
remove yt-dlp/ffmpeg/media health and volume dependencies from the image.
This commit is contained in:
snowspeeder authored and Shane Maynard committed 2026-09-12 06:35:15 -04:00
1 parent d4ea4fc984
commit 436b3fc8b1
23 files changed
+356 -2518

No files matched your search

+10 -12
View File
@@ -29,18 +29,16 @@ FIRECRAWL_BASE=http://192.168.86.2:3002
# Per-user memory profiles and Bearer tokens live in config/users.json.
VOICE_DEFAULT_USER=shane
# ── Media player (music library + YouTube Music downloads) ─────────────────
# The permanent library lives in ./media (bind-mounted to /data/media):
# media/files/ transcoded mp3 tracks
# media/thumbs/ cover art
# media/jobs/ download job status
# MEDIA_SERVER_PORT=8093 (8092 is taken by YOURLS/Apache on xNAS)
#
# Optional: export cookies.txt from a browser logged into YouTube and drop it
# in ./media/cookies.txt to avoid "confirm you're not a bot" download blocks.
# Anonymous access works from most residential IPs; cookies are the reliable
# path.
# YTDLP_COOKIES=/data/media/cookies.txt
# ── Hope Music (separate LAN service) ───────────────────────────────────────
# The voice agent keeps the music MCP tools, but the library, downloads,
# streaming, and browser player live in the hope-media-music product.
MUSIC_BASE_URL=http://192.168.86.2:8094
# Stable player scope shared with the standalone Hope Music page. Do not use
# the ephemeral LiveKit room name minted for each conversation.
MUSIC_ROOM=voice-room
# Player reports are refreshed every few seconds. Older "playing" reports are
# treated as stale so a closed player cannot leave Hope's mic disabled.
MUSIC_REPORT_TTL=30
# Extra MCP servers (optional). JSON list of {url, transport} objects.
# transport: "sse" | "streamable_http" | omit for auto-detect