Open-source video conferencing app created 100% by AI agent using dTelecom — a decentralized WebRTC platform with Solana-based node discovery.
Think Google Meet, but decentralized and self-hostable.
Live Demo | Documentation | LLM Resources
You only need two environment variables:
| Variable | Description |
|---|---|
API_KEY |
Your dTelecom API key from cloud.dtelecom.org |
API_SECRET |
Your dTelecom API secret |
Webhook URL and Solana network settings are configured automatically.
- Video & audio conferencing — camera, microphone, screen sharing
- Pre-join preview — test your camera/mic before entering the room
- Host controls — kick and mute participants
- In-room chat — real-time text messaging via data channels
- Live participant count — see how many people are in a room before joining
- Webhook integration — SFU nodes push
participant_joined/participant_left/room_finishedevents - Decentralized — no single point of failure, SFU nodes discovered via Solana registry
- Next.js 16 (App Router)
- React 19
- @dtelecom/components-react — LiveKitRoom, VideoConference, PreJoin, Chat
- @dtelecom/server-sdk-js — tokens, room service, webhook verification
- Tailwind CSS 4
Sign up at cloud.dtelecom.org and grab your API Key and API Secret.
git clone https://github.com/dTelecom/dtelecom-meet.git
cd dtelecom-meet
npm installcp .env.example .env.localEdit .env.local:
API_KEY=<your-api-key>
API_SECRET=<your-api-secret>npm run devOpen http://localhost:3000.
Webhooks enable live participant counts on the pre-join screen. On Vercel this works automatically. For local development, dTelecom SFU nodes can't reach localhost, so use cloudflared to create a tunnel:
brew install cloudflared
npm run tunnelSet the printed URL as WEBHOOK_URL in .env.local and restart the dev server:
WEBHOOK_URL=https://random-words.trycloudflare.com/api/webhookapp/
page.tsx # Home — enter room name and identity
prejoin/page.tsx # Camera/mic preview + participant count
room/[roomName]/page.tsx # The video conference
api/
join/route.ts # Create token + resolve nearest SFU node
webhook/route.ts # Receive events from SFU nodes
room-count/route.ts # GET participant count for a room
create-room/route.ts # Create room (host)
kick/route.ts # Remove participant (host)
mute/route.ts # Mute participant (host)
components/
ConferenceRoom.tsx # Grid layout + sidebar panels
CustomControlBar.tsx # Media controls + share/chat/participants toggles
ParticipantListPanel.tsx # Participant list with host actions
ChatPanel.tsx # In-room chat
ConnectionStateOverlay.tsx # Reconnecting/disconnected overlay
lib/
api.ts # Client-side fetch helpers
types.ts # Shared types (Role, RoomMetadata)
room-service.ts # Server-side RoomServiceClient
participant-count.ts # In-memory webhook counter
- dTelecom Docs — full platform documentation
- Conference App Guide — step-by-step tutorial
- Conference App Plan — architecture blueprint
- LLM Resources — files for AI coding assistants
MIT