{"_id":"@emeraldjean/spacebar-livekit-webrtc","_rev":"7-839daa93e3b68c5a2cb88b7d7383faa3","name":"@emeraldjean/spacebar-livekit-webrtc","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"@emeraldjean/spacebar-livekit-webrtc","version":"1.0.0","keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication"],"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","_id":"@emeraldjean/spacebar-livekit-webrtc@1.0.0","maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"dist":{"shasum":"26706aad55d9c9c615f3c0e77fa517e282272ba2","tarball":"https://registry.npmjs.org/@emeraldjean/spacebar-livekit-webrtc/-/spacebar-livekit-webrtc-1.0.0.tgz","fileCount":20,"integrity":"sha512-cE+W0kAjN6i7nctV6O7gsnEX1Llln2plR4w80BMJ9Bdkke/20Tm6x9DZb9c8k1atWcS3IHMMwKMYd5Wxcz2GuQ==","signatures":[{"sig":"MEYCIQDxG6ryIvJnqSaxYGKOzIFXeD8imxJJQ4mzavyflWBzuQIhAIVOjj3SCtOGY9UddZoB6uz42Ua5Z9IRFAwhfEDyCcxX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141411},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c2f0d0514ddccfd25398be33f0f74cf66fb2b411","scripts":{"dev":"npm run build && npm test","test":"jest","build":"tsc","clean":"rm -rf dist","prepack":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"emeraldjean","email":"emeraldjean97@gmail.com"},"repository":{"url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git","type":"git"},"_npmVersion":"10.9.3","description":"A WebRTC server implementation compatible with Spacebar using LiveKit for enhanced scalability and features","directories":{"test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"@livekit/rtc-node":"^0.13.20","livekit-server-sdk":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.6.3","@types/jest":"^29.5.0","@types/node":"^20.17.1","@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"peerDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/spacebar-livekit-webrtc_1.0.0_1760778900573_0.17895480745499182","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@emeraldjean/spacebar-livekit-webrtc","version":"1.0.1","keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication"],"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","_id":"@emeraldjean/spacebar-livekit-webrtc@1.0.1","maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"dist":{"shasum":"27545914f575b6e6070886dd61ea561815e6ab9f","tarball":"https://registry.npmjs.org/@emeraldjean/spacebar-livekit-webrtc/-/spacebar-livekit-webrtc-1.0.1.tgz","fileCount":20,"integrity":"sha512-1OSdIcjkHw74pp4nBb9FmXLyio+6TfeJ2RSIjSvvZ9qiu9liyk4xA8/9z9WqW1xiXnA6pwacD2FKJewivrMECg==","signatures":[{"sig":"MEUCIEOYlduutet+TbRVwDBhZ8I0CMCYmHWeWNZ3NIv4R9CWAiEApRjKqGMJTkcXQu/A3+G0CDdWuDtWFX4rZjMMq2q7ffc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143852},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e1d06dce4a9635684cb9b46f9a8f3cefeda0a76c","scripts":{"dev":"npm run build && npm test","test":"jest","build":"tsc","clean":"rm -rf dist","prepack":"npm run build","test:watch":"jest --watch","postinstall":"node -e \"try { require('@livekit/rtc-node'); } catch(e) { console.log('Note: @livekit/rtc-node native dependencies may need to be installed separately for your platform.'); }\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"emeraldjean","email":"emeraldjean97@gmail.com"},"repository":{"url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git","type":"git"},"_npmVersion":"10.9.3","description":"A WebRTC server implementation compatible with Spacebar using LiveKit for enhanced scalability and features","directories":{"test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"@livekit/rtc-node":"^0.13.20","livekit-server-sdk":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.6.3","@types/jest":"^29.5.0","@types/node":"^20.17.1","@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"peerDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"optionalDependencies":{"@livekit/rtc-node-darwin-x64":"0.13.20","@livekit/rtc-node-darwin-arm64":"0.13.20","@livekit/rtc-node-linux-x64-gnu":"0.13.20","@livekit/rtc-node-win32-x64-msvc":"0.13.20","@livekit/rtc-node-linux-arm64-gnu":"0.13.20"},"_npmOperationalInternal":{"tmp":"tmp/spacebar-livekit-webrtc_1.0.1_1760865722467_0.4974860633849034","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@emeraldjean/spacebar-livekit-webrtc","version":"1.0.2","keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication","experimental","work-in-progress","beta"],"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","_id":"@emeraldjean/spacebar-livekit-webrtc@1.0.2","maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"dist":{"shasum":"37ea25e2286187128436189e4dbd01438b87b6bc","tarball":"https://registry.npmjs.org/@emeraldjean/spacebar-livekit-webrtc/-/spacebar-livekit-webrtc-1.0.2.tgz","fileCount":20,"integrity":"sha512-8ylnQvKhk1kAByGT4cay7BFpXXlJiVmcP61MO9+/NmkvJRuZTSrWLYJHFJ4NheGgKRtY9BCmL/T+LncHdyswoQ==","signatures":[{"sig":"MEYCIQDjLH6tYjn6y5UPG3EbArxUkF4USvDDk5OwOVkRutwuzAIhAJQGWq1S/70FxDeqq2Qmm9HVBCDFYW2qTNkjS229iGru","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128007},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"fbb26501e01dc6ca2077473bf5876c0fef563157","scripts":{"dev":"npm run build && npm test","test":"jest","build":"tsc","clean":"rm -rf dist","prepack":"npm run build","test:watch":"jest --watch","postinstall":"node -e \"try { require('@livekit/rtc-node'); } catch(e) { console.log('Note: @livekit/rtc-node native dependencies may need to be installed separately for your platform.'); }\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"emeraldjean","email":"emeraldjean97@gmail.com"},"repository":{"url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git","type":"git"},"_npmVersion":"10.9.3","description":"A WebRTC server implementation compatible with Spacebar using LiveKit (WORK IN PROGRESS - Experimental)","directories":{"test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"livekit-server-sdk":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.6.3","@types/jest":"^29.5.0","@types/node":"^20.17.1","@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"peerDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/spacebar-livekit-webrtc_1.0.2_1760866302885_0.7969202914058857","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@emeraldjean/spacebar-livekit-webrtc","version":"1.0.3","keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication","experimental","work-in-progress","beta"],"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","_id":"@emeraldjean/spacebar-livekit-webrtc@1.0.3","maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"dist":{"shasum":"0f4f5987396b6c430caad38aeae1f6c32ccfa2ce","tarball":"https://registry.npmjs.org/@emeraldjean/spacebar-livekit-webrtc/-/spacebar-livekit-webrtc-1.0.3.tgz","fileCount":20,"integrity":"sha512-SpcH+lKOndFeQXxvHNffuIPoi2DOd+gOF2NSgqNQsEt5iO2UAJqtlr/SUEfTkqDvkWPjHQegj61rEydF6gz3vA==","signatures":[{"sig":"MEUCIHiMSHRJLvSAGB9qpv6toqZKWK9fyIHJSy0rx/Tf7VIhAiEAx+S3XsmxdwWI7M71jkTsG0pDNSM3ItO05K+k9wKVPvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127962},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"fbb26501e01dc6ca2077473bf5876c0fef563157","scripts":{"dev":"npm run build && npm test","test":"jest","build":"tsc","clean":"rm -rf dist","prepack":"npm run build","test:watch":"jest --watch","postinstall":"node -e \"try { require('@livekit/rtc-node'); } catch(e) { console.log('Note: @livekit/rtc-node native dependencies may need to be installed separately for your platform.'); }\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"emeraldjean","email":"emeraldjean97@gmail.com"},"repository":{"url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git","type":"git"},"_npmVersion":"10.9.3","description":"A WebRTC server implementation compatible with Spacebar using LiveKit (WORK IN PROGRESS - Experimental)","directories":{"test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"livekit-server-sdk":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.6.3","@types/jest":"^29.5.0","@types/node":"^20.17.1","@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"peerDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/spacebar-livekit-webrtc_1.0.3_1761673552032_0.5393244846453924","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@emeraldjean/spacebar-livekit-webrtc","version":"1.0.4","keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication","experimental","work-in-progress","beta"],"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","_id":"@emeraldjean/spacebar-livekit-webrtc@1.0.4","maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"dist":{"shasum":"a48e5b092af7e25d798d551d3dcc205b2fa7e645","tarball":"https://registry.npmjs.org/@emeraldjean/spacebar-livekit-webrtc/-/spacebar-livekit-webrtc-1.0.4.tgz","fileCount":20,"integrity":"sha512-c8T9ZoRt6UFFFKjCri+hOHVg/F/yLA6dLiVeXVyG+hBuh2jRarnBaE8Yg7pJ1a2oK7USe0kWULTh9ugpN5oXFQ==","signatures":[{"sig":"MEUCIBVSVot5aMr9KBFK4i+wrfGvLIU/YOtM4mYwLf02EvoHAiEA13T3DiNNBH2QEmHLTcfdvLgeUOo95A1+PEu0r2N/C9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127784},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"fbb26501e01dc6ca2077473bf5876c0fef563157","scripts":{"dev":"npm run build && npm test","test":"jest","build":"tsc","clean":"rm -rf dist","prepack":"npm run build","test:watch":"jest --watch","postinstall":"node -e \"try { require('@livekit/rtc-node'); } catch(e) { console.log('Note: @livekit/rtc-node native dependencies may need to be installed separately for your platform.'); }\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"emeraldjean","email":"emeraldjean97@gmail.com"},"repository":{"url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git","type":"git"},"_npmVersion":"10.9.3","description":"A WebRTC server implementation compatible with Spacebar using LiveKit (WORK IN PROGRESS - Experimental)","directories":{"test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"livekit-server-sdk":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.6.3","@types/jest":"^29.5.0","@types/node":"^20.17.1","@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"peerDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/spacebar-livekit-webrtc_1.0.4_1761674516084_0.5416453049601406","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@emeraldjean/spacebar-livekit-webrtc","version":"1.0.5","keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication","experimental","work-in-progress","beta"],"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","_id":"@emeraldjean/spacebar-livekit-webrtc@1.0.5","maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"dist":{"shasum":"56d2ac3f2632d2d1079afa59f19ffbd27d4fc946","tarball":"https://registry.npmjs.org/@emeraldjean/spacebar-livekit-webrtc/-/spacebar-livekit-webrtc-1.0.5.tgz","fileCount":20,"integrity":"sha512-hNZmc/hiBVv5QIwWGGhPUsd+/8kzlVHykotACv7iI+sRg7FvclliZHG72f4YCGKB6e59sC/MoNkUwyyh4H3TTw==","signatures":[{"sig":"MEQCIBDmjs+tabGwPqAhFUkfJt3RYSu9XCo1G3ISKJn42+N9AiAQxNejZu5Pjdwl+FXgb8Sh7qmH+EqUzBh9SyRNAze/PQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127662},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5d0d84617b47deeef9dd411efd31dd4823f04c39","scripts":{"dev":"npm run build && npm test","test":"jest","build":"tsc","clean":"rm -rf dist","prepack":"npm run build","test:watch":"jest --watch","postinstall":"node -e \"try { require('@livekit/rtc-node'); } catch(e) { console.log('Note: @livekit/rtc-node native dependencies may need to be installed separately for your platform.'); }\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"emeraldjean","email":"emeraldjean97@gmail.com"},"repository":{"url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git","type":"git"},"_npmVersion":"10.9.3","description":"A WebRTC server implementation compatible with Spacebar using LiveKit (WORK IN PROGRESS - Experimental)","directories":{"test":"tests"},"_nodeVersion":"22.20.0","dependencies":{"livekit-server-sdk":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.6.3","@types/jest":"^29.5.0","@types/node":"^20.17.1","@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"peerDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/spacebar-livekit-webrtc_1.0.5_1761674829582_0.0656232777687995","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@emeraldjean/spacebar-livekit-webrtc","version":"1.0.6","description":"A WebRTC server implementation compatible with Spacebar using LiveKit (WORK IN PROGRESS - Experimental)","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js","default":"./dist/index.js"}},"keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication","experimental","work-in-progress","beta"],"publishConfig":{"access":"public"},"scripts":{"build":"tsc && node fix-exports.js","prepublishOnly":"npm run build","prepack":"npm run build","postinstall":"node -e \"try { require('@livekit/rtc-node'); } catch(e) { console.log('Note: @livekit/rtc-node native dependencies may need to be installed separately for your platform.'); }\"","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","clean":"rm -rf dist","dev":"npm run build && npm test"},"dependencies":{"livekit-server-sdk":"^2.0.0"},"devDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1","@types/jest":"^29.5.0","@types/node":"^20.17.1","jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.6.3"},"peerDependencies":{"@spacebarchat/spacebar-webrtc-types":"^1.0.1"},"repository":{"type":"git","url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git"},"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","directories":{"test":"tests"},"_id":"@emeraldjean/spacebar-livekit-webrtc@1.0.6","gitHead":"5d0d84617b47deeef9dd411efd31dd4823f04c39","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-kwL08DceGI0GK9KXWERZrJaqsH0kAC4hxylEcbyZxJuU85GzqI3jgJpJHy//W2ZMmyEY2p+W+ZuFMw7HT587hw==","shasum":"f76cfbc922acbee1db040595c119c5a493b7a3a7","tarball":"https://registry.npmjs.org/@emeraldjean/spacebar-livekit-webrtc/-/spacebar-livekit-webrtc-1.0.6.tgz","fileCount":20,"unpackedSize":127897,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDiH2bMx6vGhvCAZcH7LFwZTtg45ORueKNLLTUHgEHg9AiEA2LBcv/RweWeOQYU5Hph7UNlBXfRQiHCbXWfh7qDIR1g="}]},"_npmUser":{"name":"emeraldjean","email":"emeraldjean97@gmail.com"},"maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/spacebar-livekit-webrtc_1.0.6_1761675070676_0.9019072996668351"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-18T09:15:00.496Z","modified":"2025-10-28T18:11:11.101Z","1.0.0":"2025-10-18T09:15:00.761Z","1.0.1":"2025-10-19T09:22:02.673Z","1.0.2":"2025-10-19T09:31:43.115Z","1.0.3":"2025-10-28T17:45:52.244Z","1.0.4":"2025-10-28T18:01:56.279Z","1.0.5":"2025-10-28T18:07:09.787Z","1.0.6":"2025-10-28T18:11:10.906Z"},"bugs":{"url":"https://github.com/emeraldjean/spacebar-livekit-webrtc/issues"},"author":{"name":"emeraldjean"},"license":"AGPL-3.0-only","homepage":"https://github.com/emeraldjean/spacebar-livekit-webrtc#readme","keywords":["spacebar","webrtc","livekit","voice","video","streaming","sfu","real-time","communication","experimental","work-in-progress","beta"],"repository":{"type":"git","url":"git+https://github.com/emeraldjean/spacebar-livekit-webrtc.git"},"description":"A WebRTC server implementation compatible with Spacebar using LiveKit (WORK IN PROGRESS - Experimental)","maintainers":[{"name":"emeraldjean","email":"emeraldjean97@gmail.com"}],"readme":"# Spacebar LiveKit WebRTC\n\nA WebRTC server implementation compatible with Spacebar using LiveKit for enhanced scalability and features.\n\n> **⚠️ WORK IN PROGRESS**: This is an experimental, community-maintained fork that is currently under heavy development. The implementation is not yet production-ready and may have bugs, missing features, or breaking changes. We encourage testing and contributions from the community!\n\n> **Note**: This project replaces the original Medooze-based WebRTC implementation with LiveKit integration for improved performance and features.\n\n## Features\n\n- **LiveKit Integration**: Modern SFU architecture with better scalability than traditional mesh networks\n- **Server-side Management**: Handles room management, token generation, and signaling coordination\n- **Client Direct Connection**: Spacebar clients connect directly to LiveKit (not through our server)\n- **Webhook Support**: Handles LiveKit webhooks for real-time updates\n- **Cross-platform**: Works on Linux, macOS, and Windows\n- **Backward Compatibility**: Maintains the same interface as the original Medooze implementation\n\n## Architecture\n\nThis implementation uses a **hybrid architecture**:\n\n1. **Spacebar Server** (this package):\n   - Manages rooms via LiveKit Server SDK\n   - Generates access tokens for clients\n   - Handles signaling coordination\n   - Processes LiveKit webhooks\n\n2. **Spacebar Clients**:\n   - Connect directly to LiveKit using the provided tokens\n   - Handle WebRTC connections through LiveKit's infrastructure\n   - No direct connection to our server for media\n\n3. **LiveKit Server**:\n   - Handles all WebRTC media processing\n   - Manages SFU (Selective Forwarding Unit) functionality\n   - Provides recording, streaming, and other advanced features\n\n## Current Status\n\n### ✅ Implemented\n- Basic LiveKit integration\n- Signaling delegate interface\n- WebRTC client management\n- Room state management\n- Token generation and authentication\n- Cross-platform native dependencies\n\n### 🚧 In Progress\n- Complete feature parity with Medooze implementation\n- Advanced LiveKit features (recording, streaming, etc.)\n- Performance optimization\n- Error handling improvements\n- Documentation completion\n\n### ❓ Planned\n- Comprehensive testing suite\n- Production-ready error handling\n- Advanced configuration options\n- Performance monitoring\n- Migration guides\n\n## Supported Environments\n\n- Linux\n- macOS\n- Windows\n- Docker containers\n\n## Installation\n\nInstall the package in your Spacebar server:\n\n```bash\nnpm install @emeraldjean/spacebar-livekit-webrtc --no-save\n```\n\n### Dependencies\n\nThis package only requires the LiveKit Server SDK for server-side operations. No native dependencies are needed as WebRTC processing is handled by the LiveKit server.\n\n## ⚠️ Important: Testing and Feedback Needed\n\n**This implementation is experimental and needs extensive testing!** \n\n- The code may have bugs or missing features\n- Breaking changes may occur between versions\n- Not recommended for production use yet\n- We need your help to make it stable and feature-complete\n\n**Please test this implementation and report any issues you find!**\n\n## Configuration\n\n### Environment Variables\n\nSet the following environment variables in your Spacebar `.env` file:\n\n```env\n# LiveKit Configuration\nLIVEKIT_URL=wss://your-livekit-server.com\nLIVEKIT_API_KEY=your-api-key\nLIVEKIT_API_SECRET=your-api-secret\n\n# WebRTC Configuration (for compatibility)\nWRTC_LIBRARY=@emeraldjean/spacebar-livekit-webrtc\nWEBRTC_PORT_RANGE=10000-20000\n```\n\n### Spacebar Configuration\n\nIn your Spacebar `.env` file, configure the server to load this package:\n\n```env\nWRTC_LIBRARY=@emeraldjean/spacebar-livekit-webrtc\n```\n\n## LiveKit Server Setup\n\n### Option 1: LiveKit Cloud (Recommended)\n\n1. Sign up at [LiveKit Cloud](https://livekit.io/cloud)\n2. Create a new project\n3. Get your API key and secret from the dashboard\n4. Use the provided WebSocket URL\n\n### Option 2: Self-hosted\n\n1. Deploy LiveKit server using Docker:\n```bash\ndocker run --rm -p 7880:7880 -p 7881:7881 -p 7882:7882/udp \\\n  -e LIVEKIT_KEYS=\"your-api-key: your-api-secret\" \\\n  livekit/livekit-server\n```\n\n2. Configure your environment variables to point to your server\n\n## Migration from Medooze\n\nThis package maintains the same interface as the original Medooze implementation, making migration straightforward:\n\n1. Install the new package\n2. Update your environment variables\n3. Deploy a LiveKit server\n4. Restart your Spacebar server\n\n## API Compatibility\n\nThe package implements the same `SignalingDelegate` interface as the original Medooze implementation:\n\n- `start(public_ip, portMin, portMax)`: Initialize the signaling delegate\n- `join(roomId, userId, ws, type)`: Join a voice room\n- `onOffer(client, sdpOffer, codecs)`: Handle WebRTC offers\n- `onClientClose(client)`: Handle client disconnection\n- `createRoom(rtcServerId, type)`: Create a new room\n- `disposeRoom(rtcServerId)`: Clean up a room\n\n## Room Types\n\n- **guild-voice**: Guild voice channels\n- **dm-voice**: Direct message voice calls\n- **stream**: Live streaming rooms\n\n## Enhanced Features\n\n### Recording\nLiveKit provides built-in recording capabilities that can be enabled per room:\n\n```typescript\n// Enable recording for a room\nconst roomService = new RoomServiceClient(url, apiKey, apiSecret);\nawait roomService.updateRoomMetadata(roomName, {\n  recording: {\n    enabled: true,\n    format: 'mp4'\n  }\n});\n```\n\n### Streaming\nStream rooms to external platforms:\n\n```typescript\n// Start streaming to RTMP\nconst egressClient = new EgressClient(url, apiKey, apiSecret);\nawait egressClient.startRoomCompositeEgress(roomName, {\n  output: {\n    case: 'rtmp',\n    value: {\n      urls: ['rtmp://your-streaming-server.com/live/stream-key']\n    }\n  }\n});\n```\n\n## Troubleshooting\n\n### Connection Issues\n- Verify your LiveKit server is running and accessible\n- Check that your API credentials are correct\n- Ensure firewall allows WebSocket connections (port 7880)\n\n### Audio/Video Issues\n- LiveKit handles codec negotiation automatically\n- Check browser compatibility for WebRTC features\n- Verify microphone/camera permissions\n\n### Performance\n- LiveKit's SFU architecture provides better performance than mesh networks\n- Monitor server resources and scale as needed\n- Use LiveKit Cloud for automatic scaling\n\n## Troubleshooting\n\n### Common Issues\n\nIf you encounter errors when using the package, try the following:\n\n1. **Clear npm cache and reinstall**:\n   ```bash\n   npm cache clean --force\n   rm -rf node_modules package-lock.json\n   npm install\n   ```\n\n2. **Check your Node.js version**: This package requires Node.js 18 or higher\n\n3. **Verify LiveKit server connectivity**: Ensure your LiveKit server is running and accessible\n\n4. **Check environment variables**: Ensure all required LiveKit configuration is set correctly\n\n### Error Types\n\n- **\"Cannot find module\" errors**: Usually related to missing dependencies or incorrect imports\n- **Import/require failures**: Check that all dependencies are installed correctly\n- **LiveKit connection errors**: Verify LiveKit server URL and credentials\n- **Token generation errors**: Check API key and secret configuration\n\n## Contributing\n\nWe welcome contributions from the community! This project is in active development and there are many opportunities to help:\n\n### How to Contribute\n\n1. **Fork the repository** and create a feature branch\n2. **Test the current implementation** and report any issues\n3. **Submit pull requests** for bug fixes or new features\n4. **Improve documentation** and examples\n5. **Share feedback** and suggestions\n\n### Areas Needing Help\n\n- **Testing**: Help test the implementation with different Spacebar configurations\n- **Bug Reports**: Report issues you encounter during testing\n- **Feature Development**: Implement missing features or improvements\n- **Documentation**: Improve README, code comments, and examples\n- **Performance**: Help optimize the implementation\n- **Cross-platform Testing**: Test on different operating systems\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/emeraldjean/spacebar-livekit-webrtc.git\ncd spacebar-livekit-webrtc\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n\n# Run tests\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n```\n\n### Reporting Issues\n\nWhen reporting issues, please include:\n- Your operating system and Node.js version\n- Spacebar version you're testing with\n- Steps to reproduce the issue\n- Expected vs actual behavior\n- Any error messages or logs\n\n## Support\n\n- [LiveKit Documentation](https://docs.livekit.io)\n- [Spacebar Discord](https://discord.gg/spacebar)\n- [GitHub Issues](https://github.com/emeraldjean/spacebar-livekit-webrtc/issues)\n\n## License\n\nAGPL-3.0-only","readmeFilename":"README.md"}