Aelio
Installation

Local Development

Run the full Aelio stack locally for development and testing.

Full local stack

You need three processes running:

Terminal 1: Aelio Server     (port 3010)
Terminal 2: Your backend     (port 8080 or your choice)
Terminal 3: Your frontend    (port 3000 or your choice)

Step 1: Start Aelio Server

cd aelio   # cloned monorepo
export AELIO_SDK_SECRET=change-me-in-production
export OPENAI_API_KEY=sk-...        # optional, uses mock LLM without it
pnpm --filter @aelio/server dev

Step 2: Start example backend

# Minimal Express example
export AELIO_SDK_SECRET=change-me-in-production
pnpm --filter aelio-example-express start

# Or the Shopping Testbed demo
cd Aelio-Test
docker-compose up -d db
AELIO_SECRET=change-me-in-production AELIO_SERVER_URL=ws://127.0.0.1:3010 npm start

Step 3: Open demo

URLWhat
http://localhost:3010/demo.htmlBuilt-in demo page with widget
http://localhost:3010/healthServer health check
http://127.0.0.1:4173Shopping Testbed storefront
http://127.0.0.1:4173/chatShopping Testbed chat page

One-liner (server + example)

pnpm start   # boots server + example backend together

Test a conversation

Open the demo, click Chat, and ask:

What is my order status?

Expected flow: Widget → Aelio Server → LLM → SDK getOrderStatus → reply.

Test without widget (SDK ingest)

curl -sS http://127.0.0.1:4173/api/aelio/ingest \
  -H 'content-type: application/json' \
  -d '{"channel":"web","from":"user@example.com","text":"Show me my cart"}'

Run automated tests

AELIO_TEST_MODE=1 pnpm test:all

Common local dev issues

IssueFix
Widget "Origin not allowed"Add http://127.0.0.1:PORT to allowed_origins
SDK not connectingCheck AELIO_SDK_SECRET matches on both sides
Mock LLM responsesSet OPENAI_API_KEY for real responses
Widget bundle 404Build widget: pnpm --filter @aelio/chat build

On this page