77 lines
2.2 KiB
YAML
77 lines
2.2 KiB
YAML
name: "@companion"
|
|
description: "AI Companion Platform — orchestration API, PWA frontend, voice pipeline"
|
|
type: service-cluster
|
|
category: product
|
|
|
|
depends_on:
|
|
- "@ai"
|
|
|
|
services:
|
|
companion-api:
|
|
description: "NestJS orchestration API — session, chat SSE, voice WS"
|
|
type: nestjs
|
|
ports:
|
|
http: 3850
|
|
dependencies:
|
|
- companion-postgres
|
|
- companion-redis
|
|
|
|
companion-web:
|
|
description: "React PWA — mobile-first AI companion frontend"
|
|
type: frontend
|
|
ports:
|
|
http: 5850
|
|
dependencies:
|
|
- companion-api
|
|
|
|
companion-postgres:
|
|
description: "PostgreSQL — conversation session and message storage"
|
|
type: postgres
|
|
ports:
|
|
db: 26407
|
|
|
|
companion-redis:
|
|
description: "Redis — session cache and pub/sub"
|
|
type: redis
|
|
ports:
|
|
db: 26406
|
|
|
|
platforms:
|
|
apricot:
|
|
os: linux
|
|
host: 10.0.0.13
|
|
environment: development
|
|
# Services declared in start order: infrastructure first, application last.
|
|
# stop reverses this order automatically.
|
|
services:
|
|
companion-postgres:
|
|
type: docker-compose
|
|
compose: "@deployments/docker-compose.yml"
|
|
compose-service: companion-postgres
|
|
port: "26407"
|
|
description: "PostgreSQL — conversation session and message storage"
|
|
companion-redis:
|
|
type: docker-compose
|
|
compose: "@deployments/docker-compose.yml"
|
|
compose-service: companion-redis
|
|
port: "26406"
|
|
description: "Redis — session cache and pub/sub"
|
|
companion-api:
|
|
type: nestjs
|
|
port: "3850"
|
|
description: "NestJS orchestration API — session, chat SSE, voice WS"
|
|
start:
|
|
path: "@applications/api"
|
|
script: pnpm dev
|
|
companion-web:
|
|
type: frontend
|
|
port: "5850"
|
|
description: "React PWA — mobile-first AI companion frontend"
|
|
start:
|
|
path: "@applications/web"
|
|
script: pnpm dev
|
|
status:
|
|
command: "curl -sf http://localhost:3850/health | python3 -c \"import sys,json; d=json.load(sys.stdin); print('active' if d.get('status')=='ok' else 'inactive')\" 2>/dev/null || echo 'inactive'"
|
|
type: custom
|
|
logs:
|
|
file: "/tmp/manage-apps-@companion-companion-api.log"
|