audio streaming app plyr.fm

rebrand from "music on ATProto" to "audio streaming app" (#821)

- drops redundant "on ATProto" (like HTTP, it's the fundamental layer)
- changes "music" to "audio" to encourage podcasts and other audio content

updated:
- frontend tagline and meta descriptions
- terms/privacy legal pages
- backend config defaults
- moderation service landing page
- README and AGENTS.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

authored by zzstoatzz.io

Claude Opus 4.5 and committed by
GitHub
d942684f fa921b56

+10 -10
+1 -1
AGENTS.md
··· 1 1 # plyr.fm Developer Context 2 2 3 - **music streaming on AT Protocol** 3 + **audio streaming app** 4 4 5 5 ## Reminders 6 6 - i am already hot-reloading the backend and frontend. i might also have ngrok exposing 8001
+1 -1
README.md
··· 1 1 # [plyr.fm](https://plyr.fm) 2 2 3 - music on [atproto](https://atproto.com) 3 + audio streaming app 4 4 5 5 check the [plyr.fm artist page](https://plyr.fm/u/plyr.fm) for the latest [auto-generated](.github/workflows/status-maintenance.yml) development podcast! 6 6
+2 -2
backend/.env.example
··· 9 9 # branding (optional) 10 10 # backend branding settings 11 11 # APP_NAME=plyr.fm 12 - # APP_TAGLINE=music streaming on atproto 12 + # APP_TAGLINE=audio streaming app 13 13 # CANONICAL_HOST=plyr.fm 14 14 # CANONICAL_URL_OVERRIDE= 15 15 # BROADCAST_CHANNEL_PREFIX=plyr 16 16 17 17 # frontend branding (requires VITE_ prefix for SvelteKit) 18 18 # VITE_APP_NAME=plyr.fm 19 - # VITE_APP_TAGLINE=music streaming on atproto 19 + # VITE_APP_TAGLINE=audio streaming app 20 20 # VITE_APP_CANONICAL_HOST=plyr.fm 21 21 # VITE_APP_CANONICAL_URL= 22 22 # VITE_APP_BROADCAST_PREFIX=plyr
+1 -1
backend/src/backend/config.py
··· 105 105 description="Public-facing application name", 106 106 ) 107 107 tagline: str = Field( 108 - default="music streaming on atproto", 108 + default="audio streaming app", 109 109 description="Short marketing tagline for metadata", 110 110 ) 111 111 debug: bool = Field(
+1 -1
frontend/src/lib/branding.ts
··· 1 1 const DEFAULT_APP_NAME = 'plyr.fm'; 2 - const DEFAULT_TAGLINE = 'music on atproto'; 2 + const DEFAULT_TAGLINE = 'audio streaming app'; 3 3 const DEFAULT_APP_STAGE = 'alpha'; 4 4 const DEFAULT_CANONICAL_HOST = 'plyr.fm'; 5 5 const DEFAULT_BROADCAST_PREFIX = 'plyr';
+1 -1
frontend/src/routes/+page.svelte
··· 93 93 94 94 <svelte:head> 95 95 <title>{APP_NAME} - {APP_TAGLINE}</title> 96 - <meta name="description" content="discover and stream music on the atproto network" /> 96 + <meta name="description" content={APP_TAGLINE} /> 97 97 98 98 <!-- Open Graph / Facebook --> 99 99 <meta property="og:type" content="website" />
+1 -1
frontend/src/routes/privacy/+page.svelte
··· 21 21 <p class="last-updated">Last updated: January 20, 2026</p> 22 22 23 23 <p class="intro"> 24 - {APP_NAME} ("we", "us", or "our") is a music streaming application built on the 24 + {APP_NAME} ("we", "us", or "our") is an audio streaming application built on the 25 25 <a href="https://atproto.com" target="_blank" rel="noopener">AT Protocol</a>. 26 26 This privacy policy applies to the instance at 27 27 <a href={APP_CANONICAL_URL}>{APP_CANONICAL_URL}</a> (the "site").
+1 -1
frontend/src/routes/terms/+page.svelte
··· 21 21 <p class="last-updated">Last updated: January 20, 2026</p> 22 22 23 23 <p class="intro"> 24 - {APP_NAME} ("we", "us", or "our") is a music streaming application built on the 24 + {APP_NAME} ("we", "us", or "our") is an audio streaming application built on the 25 25 <a href="https://atproto.com" target="_blank" rel="noopener">AT Protocol</a>. 26 26 These terms of service apply to the instance at 27 27 <a href={APP_CANONICAL_URL}>{APP_CANONICAL_URL}</a> (the "site").
+1 -1
moderation/src/handlers.rs
··· 135 135 <p class="subtitle">ATProto labeler for audio content moderation</p> 136 136 137 137 <p>This service provides content labels for <a href="https://plyr.fm">plyr.fm</a>, 138 - the music streaming platform on ATProto.</p> 138 + the audio streaming app.</p> 139 139 140 140 <p><strong>Labeler DID:</strong> <code>{}</code></p> 141 141