WWebBuddyMarketplace
Get started

Requirements

The server, database, domain and provider accounts Reception AI needs, why serverless hosting will not work, and a sizing starting point.

4 min readUpdated Oct 17, 2026Applies to Reception AI 1.0.0

On this page

At a glance

You need Required for Notes
Node.js 22 Everything Use a current 22.x release. The Docker image is built on node:22-slim.
A long-running process Everything A VPS, a container host or a platform that keeps one process alive. Not serverless functions.
Postgres Production Any Postgres you can reach over TCP. Without one, an in-memory database is used and wiped on restart.
A domain with HTTPS Production Sign-in cookies require HTTPS on any host other than localhost, and carriers need public HTTPS and secure WebSocket URLs.
OpenAI API key Live voice Live phone calls and the homepage voice demo.
xAI API key Chat and AI features Workspace chat, the website widget, voice previews, rehearsals, the AI builder and Twilio outbound calls.
Twilio or Plivo account Real phone calls Twilio answers and places calls; Plivo answers only. See Phone numbers and carriers.
Stripe account Optional Self-serve paid plans.
SMTP server Optional Only used to email the first admin's confirmation link.
Google, Microsoft or Salesforce app registrations Optional Google sign-in and the OAuth connectors.

Why it needs an always-on process

A live phone call is a relay: Reception AI holds one WebSocket open to the carrier and another to OpenAI for the whole length of the call, copying audio between them. Serverless functions are cut off after a short time and cannot hold those connections, so calls would drop.

Two more things live inside the process:

  • The job queue. Campaign dialling, call reconciliation and similar work is queued in Postgres and drained by a scheduled task every minute inside the running server.
  • Short-lived caches. Settings and plans are cached for about a minute per process.

Container platforms (Docker on a VPS, Railway, Fly.io, Render, a Kubernetes deployment with one replica) and a plain VM with systemd all work.

Warning

Turn off any "scale to zero" or auto-stop feature on your host. A cold start on a voice platform is silence on a live call.

Database

  • Postgres 12 or newer. The schema uses stored generated columns, which arrived in Postgres 12. No extensions are needed: knowledge search uses Postgres' built-in full-text search.
  • Any provider. Self-hosted, Neon, Supabase, Railway, RDS and similar all work. The app connects with the standard pg driver over TCP.
  • Migrations are a deploy step. The app never migrates a real database on its own. You run npm run db:migrate when you install and on every update; see Installation.

For a first look you can skip Postgres entirely. Without DATABASE_URL the app starts an embedded Postgres (PGLite) in memory. Everything works, and everything is wiped when the process restarts.

Domain and HTTPS

Reception AI does not terminate TLS or redirect HTTP to HTTPS itself. Put it behind something that does: Caddy, nginx with Let's Encrypt, a load balancer, or your platform's built-in HTTPS.

HTTPS is not optional in production, for three reasons:

  • Session cookies are named __Host-… and marked Secure. Browsers only accept them over HTTPS (with an exception for http://localhost), so sign-in will not stick on plain HTTP.
  • Carriers deliver webhooks to https://<your-domain>/api/voice/….
  • Live audio streams to wss://<your-domain>/api/voice/stream, so your proxy must also pass WebSocket upgrades.

Provider accounts

Provider What it powers Required?
OpenAI Live phone calls and the homepage voice demo (Realtime API), OpenAI-voice speech Yes, for any live voice
xAI Workspace and widget chat, transcription, the Reception AI voices, rehearsals, the AI builder, Twilio outbound and the turn-based phone path Yes, for chat and most AI features
Twilio Inbound and outbound calls, SMS For real calls
Plivo Inbound calls Alternative for inbound
Stripe Plan checkout and the customer portal Only for self-serve billing

Note

In version 1.0.0 the xAI key is required for chat even if you connect another chat provider. See AI models and providers for the details.

Server size

These numbers are a starting point, not a measured benchmark. The relay copies audio without transcoding, so a call costs network and memory far more than CPU.

Workload Suggested starting size
Evaluation, a single business 1 vCPU, 1 to 2 GB RAM
A small SaaS with a handful of concurrent calls 2 vCPU, 2 to 4 GB RAM
Growing beyond that Watch memory and open connections, and scale up before scaling out

Two placement tips from the project's own deployment notes:

  • Run the app close to its database. Distant Postgres adds latency to every turn of a live call.
  • Run it close to OpenAI. The relay sits on the long leg of the audio path, so a US East region is a good default even if your callers are elsewhere.

Start with one instance. A call's two sockets live inside one process, and the bundled Railway configuration runs a single replica for that reason.

Local development

For a laptop install you only need Node.js 22 and npm. Postgres, keys and a domain can all come later. Quick start walks through it.