Aelio
Server

Deployment

Deploy Aelio Server with Docker, Railway, Render, or Fly.io.

docker build -t aelio/server:latest -f server/Dockerfile .
docker run -p 3010:3010 \
  -e AELIO_SDK_SECRET=your-secret \
  -e OPENAI_API_KEY=sk-... \
  -e AELIO_CONFIG=/config/config.docker.yaml \
  -v $(pwd)/config.docker.yaml:/config/config.docker.yaml \
  aelio/server:latest

The image is ~190MB (distroless). Includes SQLite, widget bundle, and all runtime dependencies.

Deploy templates

The server/ directory includes ready-made deploy templates:

PlatformTemplate
Railwayserver/deploy/railway/
Renderserver/deploy/render/
Fly.ioserver/deploy/fly/

Production checklist

  1. Set AELIO_SDK_SECRET to a strong random value
  2. Set identity.allow_anonymous: false in config
  3. Configure channels.web.allowed_origins with your production domains
  4. Set your LLM API key (OPENAI_API_KEY, etc.)
  5. Set AELIO_REQUIRE_LLM_KEY=1 to hard-fail without an LLM key
  6. Enable HTTPS (widget requires wss:// in production)
  7. Point your SDK at the production WebSocket URL

Static export (optional)

For static hosting of docs only (not the server):

// next.config.mjs
const config = {
  output: 'export',
  images: { unoptimized: true },
};

Base path (subpath deployment)

const config = {
  basePath: '/docs',
};

Connecting SDK and widget to production

# Your backend
AELIO_SDK_SECRET=your-secret
AELIO_SERVER_URL=wss://your-aelio-server.com

# Your frontend
NEXT_PUBLIC_AELIO_SERVER_URL=https://your-aelio-server.com

Health monitoring

# Liveness probe
GET /health

# Readiness probe (checks db, migrations, widget, sdk)
GET /ready

In production, /ready redacts the SDK function catalog for security.

On this page