Ctrl Room
Running your own server
Ctrl Room is a Next.js app on Supabase (Postgres, Auth and Realtime), with LiveKit for calls. The code's README covers local setup and deployment. These settings are the ones people ask about most.
Required
| Setting | What it is |
|---|---|
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY |
Your Supabase project. |
NEXT_PUBLIC_SITE_URL |
Your public address, used in invite links. |
Voice and video
NEXT_PUBLIC_LIVEKIT_URL, LIVEKIT_API_KEY and LIVEKIT_API_SECRET from LiveKit Cloud or a self-hosted livekit-server. Without them, everything except calls works.
AI helpers
| Setting | What it is |
|---|---|
SUPABASE_SERVICE_ROLE_KEY |
Lets the server post the helpers' answers. Keep it secret. |
AI_BASE_URL |
Any OpenAI-compatible endpoint: Ollama (http://localhost:11434/v1), vLLM, OpenRouter (https://openrouter.ai/api/v1) and others. |
AI_MODEL |
The model name at that endpoint. Pick one that supports tool calling. |
AI_API_KEY |
The endpoint's key, if it needs one. |
SEARCH_PROVIDER |
searxng (open source, self-hostable) or brave. |
SEARXNG_URL / BRAVE_API_KEY |
Where to search. SearXNG needs its JSON output format turned on. |
Without AI_BASE_URL and AI_MODEL, the helpers reply that they aren't set up yet. Without a search provider, @ctrl still answers but can't search the web.

