companion/app.manifest.yaml

78 lines
2.2 KiB
YAML
Raw Permalink Normal View History

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"