# openalice-selfhosted

> One-box self-hosted deployment — docker-compose stack with profiles core/ai/full bundling every OpenAlice service.

## At a glance
| field | value |
|---|---|
| kind | `infrastructure` |
| priority | `P5` |
| default branch | `mvp` |
| last activity | 2026-05-21T03:03:01+00:00 |
| features catalogued | **3** |
| runtime deps declared | **6** |

## Manifest
`.atlas-deps.yml` — parsed cleanly: **yes**

### Runtime deps
- **`openalice-auth`** · `http` · via `SHARED_JWT_SECRET` — Bundled auth service; issues and verifies JWTs for all co-located services
- **`openalice-ml-gateway`** · `http` · via `OPENALICE_ML_URL` — Bundled ML gateway; alice routes embedding + NER requests through it
- **`openalice-ner`** · `http` · via `NER_SERVICE_URL` — Bundled NER service; ml-gateway fans out entity-recognition requests
- **`openalice-social-api`** · `http` · via `DATABASE_URL` — Bundled platform API serving /api routes behind Traefik
- **`openalice-voice`** · `http` · via `VOICE_SFU_URL` — Bundled SFU; social-api delegates audio/video sessions to it
- **`openalice-persona`** · `http` · via `PERSONA_JWT_SECRET` · _optional_ — Bundled persona server (profile=persona/full); serves avatar state to rt

### Consumed env
- `DOMAIN`
- `ACME_EMAIL`
- `SHARED_JWT_SECRET`
- `DB_PASSWORD`
- `MINIO_USER`
- `MINIO_PASSWORD`
- `ML_KEY`
- `ML_ADMIN_KEY`
- `A2A_KEY`

### Exposes
- `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)

## Features (3)

### selfhosted/deploy
- **`selfhosted.compose.full-stack`** · _beta_ · since 0.1.0 — docker-compose.yml — one-box deployment with profiles core/ai/full. Traefik (LE) + Postgres + social-api + voice + (opt) NER + ml-gateway + Persona.  
  *docker-compose.yml:8*

### selfhosted/scripts
- **`selfhosted.scripts.setup`** · _stable_ · since 0.1.0 — setup.sh — idempotent bootstrap. Generates .env with random JWT + DB secrets, prompts for DOMAIN + ACME_EMAIL. Never clobbers an existing .env.  
  *setup.sh:2*
- **`selfhosted.scripts.smoke-test`** · _stable_ · since 0.1.0 — smoke-test.sh — post-deploy gate, walks platform-api + SFU health routes. Non-zero exit on any failure → wire into CI for a deploy gate.  
  *smoke-test.sh:2*

---

*Generated by [openalice-atlas](https://atlas.blal.pro) — single source of truth for the openalicelabs ecosystem.*
