Documentation
Self-hosting
Run Allomi yourself with Docker Compose.
Allomi is open source (MIT). The code you run is the code of the cloud: same images, same database, same API.
git clone https://github.com/allomi-ai/allomi
cd allomi
cp .env.example .env
# fill in .env (see below), then:
docker compose -f docker-compose.selfhost.yml up -d
What runs
| Service | Role |
|---|---|
postgres | Postgres 16: data and job queue (pg-boss). |
migrate | Applies database migrations, then stops. |
api | REST API, sessions, API keys, webhooks, remote MCP (port 3001). |
voice | Bridge between the phone network (Twilio) and the voice model (port 3002). |
worker | The assistant brain, memory, scheduler, webhook delivery, connectors. |
web | This website and the app. |
The images are published as ghcr.io/allomi-ai/*. Pin a version with ALLOMI_VERSION.
What you need
- A server with Docker (one small VM is enough).
- A public HTTPS URL for the voice service (
VOICE_PUBLIC_URL): Twilio connects to it. Put a reverse proxy such as Caddy in front, or use a tunnel while testing. - A Twilio account (numbers, media streams, optional Verify for SMS login codes) and an OpenAI API key for the real-time voice.
- A model for the assistant's reasoning, configured with
ANTHROPIC_BASE_URLandANTHROPIC_AUTH_TOKEN. - Optional: Stripe (billing, off when unset), Resend (e-mails).
Every variable is documented in .env.example. Generate the sealing key that encrypts stored secrets with openssl rand -base64 32 and keep it safe: without it, connector keys cannot be read again.
Backups and updates
Back up the postgres-data volume (a daily pg_dump is enough). To update, change ALLOMI_VERSION, run docker compose pull then up -d: the migrate service applies new migrations first.