Aelio
Server

Server Configuration

Configure Aelio via config.yaml — LLM, channels, safety, memory, and more.

Aelio is configured via a single config.yaml file, validated by Zod on boot. Use ${VAR} syntax for environment variable interpolation.

Minimal config

name: my-aelio
secret: ${AELIO_SDK_SECRET}

llm:
  provider: openai
  model: gpt-4o-mini
  api_key: ${OPENAI_API_KEY}

channels:
  web:
    enabled: true
    allowed_origins:
      - "http://127.0.0.1:4173"
      - "https://your-app.com"
  whatsapp:
    enabled: false

identity:
  allow_anonymous: true   # dev only; set false in production

harness:
  enabled: true

Major config sections

SectionPurpose
nameServer instance name
secretSDK auth secret (${AELIO_SDK_SECRET})
llmLLM provider, model, API key, fallback chain
embeddingsEmbedding provider for memory/vector search
channelsWeb widget and WhatsApp configuration
safetyTool safety defaults and confirmation settings
identityCustomer identity resolution, anonymous mode
sessionSession TTL, token expiry
memoryFact extraction, recall settings
harnessTurn engine budgets and behavior
daemonBackground reflection daemon
proactiveProactive outreach settings
cacheResponse cache for no-tool replies
sunjetOptional Rust storage engine
loggingLog level and format

LLM configuration

llm:
  provider: openai          # openai | anthropic | gemini | groq | ollama | mock
  model: gpt-4o-mini
  api_key: ${OPENAI_API_KEY}
  fallback:
    provider: mock          # fallback if primary fails

Switch providers by pointing AELIO_CONFIG at a profile:

AELIO_CONFIG=/path/to/config.anthropic.yaml pnpm --filter @aelio/server dev

Web channel

channels:
  web:
    enabled: true
    allowed_origins:
      - "http://127.0.0.1:4173"
      - "https://your-app.com"
    # Use "*" for local dev to allow all origins

WhatsApp (Meta adapter)

channels:
  whatsapp:
    enabled: true
    provider: meta
    phone_id: ${WA_PHONE_ID}
    token: ${WA_TOKEN}
    verify_token: ${WA_VERIFY_TOKEN}
    app_secret: ${WA_APP_SECRET}
    webhook_path: /wa/webhook

WhatsApp (BYO provider)

channels:
  whatsapp:
    enabled: true
    provider: sdk   # inbound via aelio.ingest(), delivery via aelio.onSend()

Safety

safety:
  default_level: read
  confirmation_prompt: "Reply **yes** to confirm this action."
  block_destructive: true

Memory

memory:
  enabled: true
  max_facts_per_turn: 5
  recall_top_k: 10

Harness budgets

harness:
  enabled: true
  max_tool_calls: 8
  max_replans: 3
  max_wall_clock_ms: 30000
  max_tokens: 16000

On this page