Skip to main content
Self-hosting LobbyStack means you connect your own accounts with several third-party services. Three providers are required to get a working installation: Convex for the backend, Twilio for phone calls, and OpenAI for AI voice. The rest are optional and unlock specific features you can add at any time. For each provider below you will find what it does in LobbyStack, how to sign up, what credentials you receive, and which environment variables to configure. See Environment variables for the full variable reference.

Required providers

Convex is the primary backend for LobbyStack. It stores all your data (contacts, calls, appointments, knowledge base, settings), runs the serverless functions that power the application, and handles authentication. Your data lives in a Convex project tied to your account.Sign up: convex.dev — a free tier is available.What you get:
  • A Convex project with a deployment URL and site URL
  • Access to the Convex dashboard for monitoring and managing your data
Environment variables to set:
VariableWhere to find it
CONVEX_URLConvex dashboard → your project → Settings → deployment URL
CONVEX_SITE_URLConvex dashboard → your project → Settings → HTTP actions URL
VITE_CONVEX_URLSame value as CONVEX_URL, set as a build variable
VITE_CONVEX_SITE_URLSame value as CONVEX_SITE_URL, set as a build variable
Twilio provides your dedicated business phone number, handles all inbound and outbound voice calls, and delivers SMS messages. Every call your AI receptionist answers goes through Twilio.Sign up: twilio.com — a free trial account is available.What you need to set up:
  1. Purchase a phone number in the Twilio Console.
  2. Create an API key in Twilio ConsoleAccountAPI keys & tokens.
  3. After deploying the voice gateway, configure your Twilio phone number’s voice webhook to POST https://your-voice-gateway.example.com/twilio/voice/inbound.
What you get:
  • Account SID and Auth Token (from the Console dashboard)
  • API Key SID and API Secret (from the API keys page)
  • A phone number for inbound and outbound calls
Environment variables to set:
VariableWhere to find it
TWILIO_ACCOUNT_SIDTwilio Console → home dashboard
TWILIO_AUTH_TOKENTwilio Console → home dashboard
TWILIO_API_KEYTwilio Console → AccountAPI keys
TWILIO_API_SECRETShown once when you create the API key
TWILIO_ALERT_SMS_FROMYour Twilio phone number or Messaging Service SID
OpenAI powers the AI voice conversations in LobbyStack through the Realtime API. The AI receptionist uses OpenAI to understand what callers say and respond naturally in real time.Sign up: platform.openai.comWhat you need:
  • Access to the OpenAI Realtime API (available on Pay-as-you-go accounts)
What you get:
  • An API key from the OpenAI platform
Environment variables to set:
VariableWhere to find it
OPENAI_API_KEYOpenAI platform → API keys
The OpenAI Realtime API is a usage-billed service. Your OpenAI account will be charged directly for voice processing usage in your self-hosted deployment — this is separate from any LobbyStack plan pricing.

Optional providers

Required if you want your AI receptionist to check availability and book appointments in Google Calendar.Sign up: console.cloud.google.comWhat you need to set up:
  1. Create a project in Google Cloud Console.
  2. Enable the Google Calendar API for your project.
  3. Create an OAuth 2.0 Client ID (Web application type) under APIs & ServicesCredentials.
  4. Add your Convex HTTP endpoint as an authorized redirect URI.
Environment variables to set:
VariableWhere to find it
GOOGLE_CLIENT_IDGoogle Cloud Console → APIs & ServicesCredentials
GOOGLE_CLIENT_SECRETSame credentials page
GOOGLE_REDIRECT_URIThe redirect URI you registered, pointing to your Convex HTTP endpoint
Required if you want your AI receptionist to check availability and book appointments in Microsoft Outlook or Microsoft 365 calendars.Sign up: portal.azure.comWhat you need to set up:
  1. Register a new application in Azure Active DirectoryApp registrations.
  2. Add the required Microsoft Graph calendar permissions.
  3. Create a client secret under Certificates & secrets.
  4. Add your Convex HTTP endpoint as a redirect URI.
Environment variables to set:
VariableWhere to find it
MICROSOFT_CLIENT_IDAzure portal → your app registration → Overview
MICROSOFT_CLIENT_SECRETAzure portal → your app registration → Certificates & secrets
MICROSOFT_TENANT_IDUse common unless you are limiting to a single Azure tenant
MICROSOFT_REDIRECT_URIThe redirect URI you registered in your app registration
Resend sends auth emails — specifically password reset emails and email change confirmation messages. Without Resend, users cannot reset their passwords or confirm email address changes.Sign up: resend.com — a free tier is available.What you need to set up:
  1. Verify your sending domain in the Resend dashboard.
  2. Create an API key under API Keys.
Environment variables to set:
VariableWhere to find it
RESEND_API_KEYResend dashboard → API Keys
EMAIL_FROM_ADDRESSYour verified sender address, e.g. [email protected]
Also set SITE_URL (in the Core variables) to your web dashboard’s public URL. Convex Auth uses it to build the correct reset and confirmation links inside the emails Resend delivers.
Firecrawl enables the website knowledge import feature. When you enter a URL in your knowledge base settings, LobbyStack uses Firecrawl to crawl that site and extract its content, which the AI can then reference when answering caller questions.Sign up: firecrawl.devEnvironment variables to set:
VariableWhere to find it
FIRECRAWL_API_KEYFirecrawl dashboard → API Keys
Google Gemini generates the text embeddings that power semantic search in your knowledge base. When a caller asks a question, LobbyStack uses embeddings to find the most relevant answers from your documents and FAQs. Without Gemini, knowledge base search uses a simpler fallback method.Sign up: aistudio.google.comEnvironment variables to set:
VariableWhere to find it
GOOGLE_GENERATIVE_AI_API_KEYGoogle AI Studio → Get API key
Polar powers subscription billing. You need this only if you are operating a multi-tenant deployment where your own customers pay for access to LobbyStack — for example, if you are building a product on top of the LobbyStack codebase. For a single-business self-hosted installation, Polar is not needed.Sign up: polar.shWhat you need to set up in Polar:
  1. Create a Polar organization.
  2. Create three products: a Pro monthly recurring product, an AI SMS monthly add-on product, and an AI SMS one-time setup product.
  3. Configure a webhook pointing to your Convex HTTP endpoint at /polar/events.
Environment variables to set:
VariableWhere to find it
POLAR_ORGANIZATION_TOKENPolar dashboard → SettingsAPI
POLAR_WEBHOOK_SECRETPolar dashboard → your webhook configuration
POLAR_SERVERSet to production or sandbox to match your token
POLAR_PRO_PRODUCT_IDPolar dashboard → your Pro product → product ID
POLAR_AI_SMS_ADDON_PRODUCT_IDPolar dashboard → your AI SMS add-on product → product ID
POLAR_AI_SMS_SETUP_PRODUCT_IDPolar dashboard → your AI SMS setup product → product ID
Keep POLAR_ORGANIZATION_TOKEN and POLAR_WEBHOOK_SECRET as backend-only secrets. Never expose them to the web app, browser environment variables, or client-side code.