{"id":50469675,"url":"https://github.com/braedonsaunders/openstudio","last_synced_at":"2026-06-01T09:32:41.694Z","repository":{"id":344705072,"uuid":"1123464954","full_name":"braedonsaunders/openstudio","owner":"braedonsaunders","description":"Real-time collaborative music studio with sub-30ms latency. Jam with anyone, anywhere in your browser. 35+ DSP effects, AI stem separation, MIDI loops, and optional Rust native bridge for ASIO/CoreAudio. Built with Next.js, Supabase, and Cloudflare.","archived":false,"fork":false,"pushed_at":"2026-05-13T23:00:35.000Z","size":7494,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-14T00:57:07.825Z","etag":null,"topics":["audio","cloudflare","collaboration","daw","dsp","jamming","low-latency","music","music-production","nextjs","opus-codec","real-time","rust","supabase","web-audio-api","webrtc"],"latest_commit_sha":null,"homepage":"https://openstudio.cafe","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/braedonsaunders.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY_AUDIT_MVP.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-26T23:42:42.000Z","updated_at":"2026-05-13T23:00:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/braedonsaunders/openstudio","commit_stats":null,"previous_names":["braedonsaunders/openstudio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/braedonsaunders/openstudio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braedonsaunders%2Fopenstudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braedonsaunders%2Fopenstudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braedonsaunders%2Fopenstudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braedonsaunders%2Fopenstudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/braedonsaunders","download_url":"https://codeload.github.com/braedonsaunders/openstudio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braedonsaunders%2Fopenstudio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33769491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","cloudflare","collaboration","daw","dsp","jamming","low-latency","music","music-production","nextjs","opus-codec","real-time","rust","supabase","web-audio-api","webrtc"],"created_at":"2026-06-01T09:32:40.406Z","updated_at":"2026-06-01T09:32:41.689Z","avatar_url":"https://github.com/braedonsaunders.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./readme.png\" alt=\"OpenStudio screenshot\" width=\"1200\" /\u003e\n\n  \u003ch1\u003eOpenStudio\u003c/h1\u003e\n\n  \u003ch3\u003eThe online rehearsal room for musicians\u003c/h3\u003e\n\n  \u003cp\u003e\n    Play together in real time, share a room link, run synced backing tracks, shape your sound with effects,\n    and keep the session moving without turning setup into a project.\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://openstudio.cafe\"\u003e\u003cstrong\u003eOpen OpenStudio\u003c/strong\u003e\u003c/a\u003e\n    ·\n    \u003ca href=\"https://openstudio.cafe\"\u003e\u003cstrong\u003eopenstudio.cafe\u003c/strong\u003e\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/openstudio-cafe/openstudio/discussions\"\u003e\u003cstrong\u003eCommunity\u003c/strong\u003e\u003c/a\u003e\n    ·\n    \u003ca href=\"./docs\"\u003e\u003cstrong\u003eDocs\u003c/strong\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/braedonsaunders/codeflow\"\u003e\u003cimg src=\".github/codeflow-card.svg\" alt=\"OpenStudio codebase stats — powered by codeflow\" width=\"100%\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nOpenStudio is a browser-based collaborative music studio built for real rehearsals, writing sessions, lessons, and online jams. The easiest way to use it is the hosted app at [openstudio.cafe](https://openstudio.cafe).\n\nIf you want to make music with it, start there. If you want to self-host it or contribute to the codebase, this repository has what you need below.\n\n## Start At openstudio.cafe\n\nThe recommended way to use OpenStudio is the live app:\n\n1. Go to [openstudio.cafe](https://openstudio.cafe).\n2. Create a room or join one with a room code.\n3. Join as a performer if you want to send audio, or as a listener if you just want to hear the room.\n4. Put on wired headphones, pick your input, and start playing.\n\nThat path gets you into a session fastest, with no local setup and no self-hosting work.\n\n## Why Musicians Use It\n\n- Real-time online rooms for rehearsals, songwriting, remote practice, and casual jams.\n- Low-latency audio in the browser, with an optional native bridge for lower hardware latency on supported setups.\n- Synced backing tracks so everyone hears the same arrangement at the same time.\n- Effects, mixing controls, loops, and performance tools in one shared room.\n- AI-assisted features like stem separation and music generation where those services are enabled.\n- Listener mode for collaborators, students, producers, or friends who want to hear the session without performing.\n\n## Best Results For Live Playing\n\n- Use wired headphones to avoid speaker bleed and echo.\n- Use wired internet when possible. Wi-Fi jitter is usually the first thing that hurts a session.\n- An audio interface helps, especially if you want the best monitoring feel.\n- Use a current Chromium-based browser or Firefox with microphone permissions enabled.\n- Close extra apps that may take over your audio device or add CPU load.\n\n## What You Can Do In A Room\n\n- Create a room and invite people with a link or room code.\n- Join as a performer or a listener.\n- Run backing tracks and keep playback in sync across the room.\n- Shape your sound with built-in effects.\n- Use loops and musical tools to sketch ideas quickly.\n- Build a lightweight online practice space without asking everyone to install a full DAW first.\n\n## Self-Hosting And Local Development\n\nIf you are here to run OpenStudio yourself instead of using [openstudio.cafe](https://openstudio.cafe), start with the web app:\n\n```bash\ngit clone https://github.com/openstudio-cafe/openstudio.git\ncd openstudio\nnpm install\ncp .env.example .env.local\nnpm run dev\n```\n\nThen open `http://localhost:3000`.\n\n### Required Services\n\nOpenStudio depends on a few external services for the full experience:\n\n| Service | Used for |\n| --- | --- |\n| Supabase | Auth, database, realtime state |\n| Cloudflare Calls | Low-latency room audio |\n| Cloudflare R2 | Track and media storage |\n| Optional AI providers | Stem separation, generation, and live AI features |\n\nUse [.env.example](./.env.example) as the source of truth for environment variables.\n\n## Native Bridge\n\nFor supported hardware setups, OpenStudio also includes an optional Rust native bridge for lower audio-device latency.\n\n```bash\ncd native-bridge\ncargo build --release\n./target/release/openstudio-bridge\n```\n\nThe bridge connects to the browser session over WebSocket. For implementation details and direction, see [native-bridge/README.md](./native-bridge/README.md) and [docs/native-bridge-roadmap.md](./docs/native-bridge-roadmap.md).\n\n## Contributing\n\nOpenStudio is production software for real musicians. Keep changes complete, tested, and ready to ship.\n\nFor web app changes:\n\n```bash\nnpm run lint\nnpm run test\nnpm run build\n```\n\nFor native bridge changes:\n\n```bash\ncd native-bridge\ncargo fmt\ncargo clippy\ncargo test\n```\n\nBefore making deeper schema or architecture changes, read:\n\n- [AGENTS.md](./AGENTS.md)\n- [docs/DATABASE.md](./docs/DATABASE.md)\n- [docs/native-bridge-roadmap.md](./docs/native-bridge-roadmap.md)\n\n## Community\n\n- Use the app: [openstudio.cafe](https://openstudio.cafe)\n- Discuss ideas and ask questions: [GitHub Discussions](https://github.com/openstudio-cafe/openstudio/discussions)\n- Contribute code or report issues: [openstudio-cafe/openstudio](https://github.com/openstudio-cafe/openstudio)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraedonsaunders%2Fopenstudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbraedonsaunders%2Fopenstudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraedonsaunders%2Fopenstudio/lists"}