Skip to main content
Work through this page before Install and run. Most of it is quick; the accounts can take a day if you are procuring a phone number.

Software

Verify:
Installing Docker Desktop is not enough — it must also be running (the whale icon in your menu bar / system tray). docker run --rm hello-world fails with “Cannot connect to the Docker daemon” if Docker Desktop hasn’t been launched yet.
start-application-services.sh needs python3 with the cryptography package to generate PROVIDER_AUTH_ENCRYPTION_KEY. Without it the script stops and tells you to set the key manually.
On Ubuntu, and inside WSL2’s Ubuntu shell, system Python usually refuses this with externally-managed-environment (PEP 668). If you hit that error, create and activate a virtual environment first, then continue from inside it:

Hardware

For the core stack — API, runtime, FerretDB, Redis, MinIO — with cloud model providers: Recordings and transcripts accumulate in MinIO, so size disk for your call volume. A GPU is not required unless you self-host models. If you do, see Running on GPUs — model images are large and the first build needs substantial disk.

Accounts

VoicEra provides no telephony and no models. Bring your own.

Model providers — required

At least one provider for each of speech-to-text, text-to-speech, and a language model. One vendor can cover all three: openai, google, and sarvam each register STT, TTS, and LLM. Browse what is available once running:
The alternative is self-hosting — see Model server.

Telephony — required for phone calls

A Vobiz or Plivo account with at least one number. You need the account credentials and a number you can attach.
You can skip telephony entirely at first. A websocket agent runs the same pipeline from a browser, with no telephony account and no call charges. See Test and call with your agent.

Optional

Without embedding credentials, everything works except knowledge-base ingestion.

Network

For local evaluation, none of this matters. For real phone calls, your telephony provider must reach your runtime from the public internet: For testing, a tunnel such as ngrok or cloudflared works. See Public voice URLs.

Ports

Published on the host by default: PostgreSQL and Redis are not published. All ports are overridable — see Ports and defaults.

Checklist

  • Docker Engine and Compose v2 installed and working
  • make installed and on PATH
  • python3 with cryptography available
  • 20 GB+ free disk
  • Credentials for at least one STT, one TTS, and one LLM provider
  • A telephony account and number, if you want real calls
  • A public HTTPS hostname, if you want real calls
  • Host ports free, or overrides chosen

Next

Install and run