Skip to main content
Low ops. Automatic HTTPS. Deploy in multiple regions to sit near your agents.
Everything specific to VoiceGateway on this page is verified against this repository. Everything specific to Fly (flyctl flags, fly.toml fields, managed Postgres, generated hostnames) is written from Fly’s documented behavior and is not verified here. Fly changes on its own schedule; check their docs if a step does not match what you see.
Use 0.24.0 or newer. Images at or below 0.22.3 require a config file at VOICEGW_CONFIG and exit at boot without one, raising ConfigError: Config file not found: /data/voicegw.yaml before the port binds, so Fly restarts the machine forever.
Provide a config file anyway. From 0.24.0 a missing one is only a warning and the daemon boots on built-in defaults, but a default-config daemon has no providers, models, or projects declared. The image bakes VOICEGW_CONFIG=/data/voicegw.yaml; write or mount a voicegw.yaml there with a [[files]] block in fly.toml or a volume, and repoint VOICEGW_CONFIG if you use a different path.
Deploy in a region close to where your agents run to cut ingest latency: --region on fly deploy, or primary_region in fly.toml.

Prerequisites

  • flyctl installed
  • A Fly account: fly auth login
1

Create fly.toml

Create fly.toml in a working directory:
2

Add Postgres

Option A: Fly Postgres (unmanaged)
fly postgres attach sets DATABASE_URL automatically, in postgres://... form.Option B: Neon or another managed providerSkip fly postgres create and supply the connection string directly in the next step.
3

Set secrets

Fly’s DATABASE_URL (from fly postgres attach) uses the postgres:// scheme. VoiceGateway requires postgresql+asyncpg://. Copy the connection string and rewrite the scheme; everything after :// stays the same.
VOICEGW_API_KEY must not start with vk_. Generate it with openssl rand -hex 32. No volume is needed since data is stored in Postgres.
4

Deploy

HTTPS is automatic at https://<your-app-name>.fly.dev.

Verify

Follow the steps at Verify, using https://<your-app-name>.fly.dev as the daemon URL and VOICEGW_API_KEY as the key.

Connect your agent

See Connect your agent. Use https://<your-app-name>.fly.dev as collector_url and VOICEGW_API_KEY as api_key.