via INTERNAL_SECRET
Persona renderer connects to /v1/sessions/{sid}/stream to consume PoseFrame + BlendshapeFrame at tick rate.
via PERSONA_INTERNAL_URL
VRM upload/list/delete proxy — SPA talks only to BlueGenie, which forwards to persona-server
via SOCIAL_URL (hardcoded https://social.blal.pro)
Loads the social UI in the native iframe — frontend served by openalice-social
via GATEWAY_URL_PERSONA
Proxy /persona/* HTTP and /ws/persona WebSocket requests to the persona backend
via NEXT_PUBLIC_RADIO_URL
RadioPlayer subscribes to wss://radio.<domain>/v1/radio/channels/<slug>/subscribe; each now_playing frame drives the BgmPlayer cross-fade so the live page tracks the current radio track without restarting BGM.
via NEXT_PUBLIC_DEFAULT_DOMAIN
Embeds the VRM avatar renderer as an iframe (persona.blal.pro/<user>) in every VRM-bearing scene mode; forwards ?avatar=, ?anim=, ?token= from the parent URL.
via DOMAIN
radio_bridge subscribes to wss://radio.${DOMAIN}/v1/radio/channels/:slug/subscribe and re-emits now_playing frames onto the PersonaEvent SSE bus when bgm_source=radio:<slug>.
via PERSONA_JWT_SECRET
Bundled persona server (profile=persona/full); serves avatar state to rt
via NEXT_PUBLIC_PERSONA_URL
Fetch and update persona profiles (avatar, emotion) displayed in-world