openalice-selfhosted
Run the **whole OpenAlice stack on your own box** with a single `docker compose up`. Designed for integrators who want the platform without renting it from us.
Architecture rating
Strong substrate adoption: manifest 100/100, drift 100/100, uniform Traefik subdomain routing (api/auth/alice/persona) and compose profiles matching org conventions; deviates only in lacking deeper feature coverage (44/100).
Valid manifest (100/100) with clear summary, integrator-focused README, and an AGENTS.md, but @feature annotations are weak (features 44/100, only 3 features) — solid orientation docs, thin in-code/feature-level annotation.
docker-compose profiles (core/ai/full) plus a smoke-test.sh give basic deploy structure, but no verified healthchecks, restart policies, timeouts, graceful-shutdown, or idempotency signals; reliability is implicit in compose defaults rather than declared.
TLS terminated by Traefik with Let's Encrypt across all subdomain routes, but no visible rate-limiting, security headers, or verified secret handling at the compose layer; authn/SSRF/injection defense is delegated entirely to the bundled services (auth, social-api), unverified here.
A single smoke-test.sh is the only test artifact; inspector found no analyzable source (expected for an infra repo) and there are no unit/integration tests covering critical deploy paths — coverage of the bring-up flow is minimal.
Only a single init-db.sql bootstrap; manifest owns_tables is empty, with no migration framework, FK/constraint definitions, or RLS/tenant isolation at this layer — schema concerns are pushed down to individual services and absent from this repo.
Atlas health probe is down (builder error on unresolved ${DOMAIN}, uptime_24h 0%); no metrics, tracing, structured-log, or health-probe wiring at the compose layer beyond smoke-test.sh — observability essentially absent at this level.
source · auto-grader-2026-06-16
Ecosystem manifest
.atlas-deps.ymlOne-box self-hosted deployment — docker-compose stack with profiles core/ai/full bundling every OpenAlice service.
- openalice-authhttpvia SHARED_JWT_SECRETBundled auth service; issues and verifies JWTs for all co-located services
- via OPENALICE_ML_URLBundled ML gateway; alice routes embedding + NER requests through it
- openalice-nerhttpvia NER_SERVICE_URLBundled NER service; ml-gateway fans out entity-recognition requests
- via DATABASE_URLBundled platform API serving /api routes behind Traefik
- openalice-voicehttpvia VOICE_SFU_URLBundled SFU; social-api delegates audio/video sessions to it
- via PERSONA_JWT_SECRETBundled persona server (profile=persona/full); serves avatar state to rt
- DOMAIN
- ACME_EMAIL
- SHARED_JWT_SECRET
- DB_PASSWORD
- MINIO_USER
- MINIO_PASSWORD
- ML_KEY
- ML_ADMIN_KEY
- A2A_KEY
- docker_compose_stack: openalice-selfhosted (profiles: core / ai / full)
- http_endpoint: https://${DOMAIN}/api (social-api via Traefik)
- http_endpoint: https://${DOMAIN}/auth (auth via Traefik)
- http_endpoint: https://alice.${DOMAIN} (alice agent via Traefik)
- http_endpoint: https://persona.${DOMAIN} (persona-web via Traefik, profile=full)
Roadmap · what's planned next
- selfhosted.compose.healthcheck-matrixP2planned2%Add docker healthchecks to every service (currently only postgres has one) so `docker compose ps` reflects real readiness during smoke-test.sh.
- selfhosted.profiles.minimal-cpuP3planned1%Add a `lite` profile that drops the NER + ml + persona images so the stack boots on a 4GB VPS for evaluators.
- selfhosted.backup.pg-restic-volumeP3planned0%Bundle a restic sidecar that snapshots pgdata + minio-data to S3-compatible storage nightly with a documented restore playbook.
- selfhosted.setup.interactive-promptsP4planned1%Promote setup.sh from sed-on-template to a guided prompt flow that asks for DOMAIN/ACME_EMAIL inline and validates DNS before writing .env.
Code composition
tokei · loc- YAML75.1%
- Shell24.1%
- SQL0.8%
- YAML75.1%
- Shell24.1%
- SQL0.8%
- YAML75.1%· 299
- Shell24.1%· 96
- SQL0.8%· 3
| Language | % code | code | comments | blanks | files |
|---|---|---|---|---|---|
| YAML | 75.1% | 299 | 26 | 20 | 1 |
| Shell | 24.1% | 96 | 20 | 24 | 2 |
| SQL | 0.8% | 3 | 1 | 0 | 1 |
| Markdown | 0.0% | 0 | 69 | 28 | 2 |
Telemetry ribbon · last 90 days
1 eventselfhosted/deploy
1 feature- selfhosted.compose.full-stackdocker-compose.yml:8docker-compose.yml — one-box deployment with profiles core/ai/full. Traefik (LE) + Postgres + social-api + voice + (opt) NER + ml-gateway + Persona.file:docker-compose.ymlsince 0.1.0
selfhosted/scripts
2 features- selfhosted.scripts.setupsetup.sh:2setup.sh — idempotent bootstrap. Generates .env with random JWT + DB secrets, prompts for DOMAIN + ACME_EMAIL. Never clobbers an existing .env.script:setup.shsince 0.1.0
- selfhosted.scripts.smoke-testsmoke-test.sh:2smoke-test.sh — post-deploy gate, walks platform-api + SFU health routes. Non-zero exit on any failure → wire into CI for a deploy gate.script:smoke-test.shsince 0.1.0