Skip to content
zzstoatzzPublic

About

audio streaming app

Resources

Contributing

Stars

22 stars

Watchers

0 watching

Forks

Repository files navigation

plyr.fm record logo

plyr.fm

audio streaming on ATProto
put something on. make something of your own.

listen · publish audio · docs · contribute

plyr.fm is an open-source home for music and other audio, built on the protocol behind Bluesky. sign in with your ATProto identity, upload a track, or settle into someone else's corner of the catalog. tracks, likes, comments, and public playlists are published as records in your personal data server (PDS). private playlists stay private in plyr.fm’s database.

find your next listen

  • make a queue — browse artists, albums, tags, and playlists; search with Cmd/Ctrl+K; like a track or add it to a playlist from the player.
  • stay a while — shuffle, repeat, skip through longer tracks, or let “keep playing” pick from your For You feed when the queue ends.
  • listen together — tune into radio or join a jam for synchronized listening. leave a timed comment at the part you came back for.
  • take it with you — download public tracks and whole albums where the artist allows it, with lossless originals preferred. connect teal.fm for scrobbling.

put something into the world

upload audio with artwork, tags, and featured artists; arrange it into albums; share a track, playlist, album, or radio embed. AIFF and FLAC uploads get compatible playback renditions, and automatic genre suggestions help with tagging. artists can add support links and offer supporter-gated tracks.

your ATProto identity and public audio records are usable beyond plyr.fm. audio is served through a CDN, with PDS audio mirroring and bulk export available; the artist guide explains publishing, downloads, and leaving the platform. moderation uses signed ATProto labels, listener preferences, and a review queue.

this is a small, actively evolving project. STATUS.md records current work and known rough edges. you can also hear the development notes — the project's own artist page carries its automatically generated development podcast.

under the hood

piece what it does built with
frontend persistent player and queue, discovery, publishing tools, shared listening, and embeds SvelteKit, Svelte 5 runes, Bun, vanilla CSS; Cloudflare Pages
backend ATProto OAuth, audio delivery, records, catalog, and background jobs FastAPI, Neon Postgres, R2, docket, Redis; Fly.io
services audio conversion, signed moderation labels, and audio analysis Rust + ffmpeg transcoder, Rust labeler, CLAP on Modal, genre classification on Replicate

Pydantic Logfire provides observability. CLAP embeddings and turbopuffer power the feature-flagged mood search and audio recommendations. developers can use the public API, ATProto lexicons, or the Python SDK / MCP server.

build with an agent

start at llms.txt or the agent guide. choose HTTP, the Python SDK / CLI, or the read-only hosted MCP; follow a search result through to track detail and a playable link. the live OpenAPI schema describes the HTTP contract.

work on plyr.fm

start with the contributing guide and local setup. once configured, run these from the repository root in separate terminals:

just backend run       # FastAPI, port 8001
just frontend run      # SvelteKit, port 5173

just --list shows the available workflows. coding assistants should read STATUS.md and AGENTS.md; shared skills live in .agents/skills, with Claude-compatible symlinks. the skill catalog explains discovery and usage.

merges to main deploy staging. production is a separate promote through the release workflow.

keeping it running

the live cost dashboard and COSTS.md track the infrastructure bill and its attribution gaps. some features may eventually be paid to keep the project sustainable; join the discussion.

development happens on GitHub, with a Tangled mirror. public guides live at docs.plyr.fm; architecture and runbooks live in docs/internal.

About

audio streaming app

Resources

Contributing

Stars

22 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages