Skip to main content

Service Dependency Map

Visual representation of service dependencies in RavenmaskOS.


Core Dependencies

                                    ┌─────────────────┐
│ Traefik │
│ (Edge Router) │
└────────┬────────┘

┌────────────────────────┼────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│PostgreSQL │ │ Redis │ │ Zitadel │
│(Database) │ │ (Cache) │ │ (SSO) │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
┌─────────────┼─────────────┬──────────┴──────────┐ │
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌───────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐
│GitLab │ │ Norns │ │ Bifrost │ │ n8n │ │ OAuth2-Proxy │
└───────┘ │ Agent │ │ API │ │ │ │ │
└────┬─────┘ └────┬─────┘ └──────────┘ └──────────────┘
│ │
└──────┬──────┘


┌────────────────┐
│ Bifrost │
│ Executors │
└────────┬───────┘

┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│ Norns │ │ n8n │ │ Future │
│ Tools │ │Workflows │ │ MCP/API │
└─────────┘ └──────────┘ └──────────┘

Dependency Matrix

Data Layer Dependencies

ServicePostgreSQLRedisNotes
ZitadelIdentity data, sessions
Norns AgentTasks, memories, context cache
BifrostTools, channels, session cache
GitLabRepos, CI/CD, Sidekiq
n8nWorkflows, queue
LangfuseLLM traces, sessions
GrafanaDashboards, alerts
GrocyInventory data

Identity Dependencies

ServiceZitadelOAuth2-ProxyNotes
GitLabOIDC SSO
n8nForwardAuth
Norns AdminNextAuth.js OIDC
Bifrost AdminNextAuth.js OIDC
HomepageForwardAuth
HomebridgeForwardAuth
GrafanaOIDC SSO (planned)

AI Platform Dependencies

┌─────────────────────────────────────────────────────────────────┐
│ AI PLATFORM │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ │
│ │ Ollama │◀─────────────┐ │
│ │ (LLM) │ │ │
│ └──────────────┘ │ │
│ ▲ │ │
│ │ │ │
│ ┌──────┴───────┐ ┌──────┴──────┐ │
│ │ Norns │◀──────│ Bifrost │ │
│ │ Agent │ │ API │ │
│ └──────┬───────┘ └──────┬──────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌─────────────┐ │
│ │ LangGraph │ │ Bifrost │ │
│ │ (Workflow) │ │ Admin │ │
│ └──────────────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Langfuse │ │
│ │ (Tracing) │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

Voice Platform Dependencies

┌─────────────────────────────────────────────────────────────────┐
│ VOICE PLATFORM │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Web Voice: │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ LiveKit │──▶│ Voice │──▶│ Whisper │──▶│ Norns │ │
│ │ │ │ Agent │ │ (STT) │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Coturn │ │ Piper │ │ Bifrost │ │
│ │ (TURN) │ │ (TTS) │ │ Tools │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ Phone Voice: │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Twilio │──▶│Telephony │──▶│ Deepgram │──▶│ Norns │ │
│ │ (PSTN) │ │(Pipecat) │ │ (STT) │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ElevenLabs│ │ Bifrost │ │
│ │ (TTS) │ │ Tools │ │
│ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

Observability Dependencies

┌─────────────────────────────────────────────────────────────────┐
│ OBSERVABILITY │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ │
│ │ Grafana │ │
│ │ (Dashboards) │ │
│ └──────┬───────┘ │
│ │ │
│ ┌─────────────────┼─────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Loki │ │ Tempo │ │ Prometheus │ │
│ │ (Logs) │ │ (Traces) │ │ (Metrics) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ▲ ▲ ▲ │
│ │ │ │ │
│ └─────────────────┴─────────────────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ │ Alloy │ │
│ │ (Collector) │ │
│ └──────────────┘ │
│ ▲ │
│ │ │
│ All Containers │
│ │
└─────────────────────────────────────────────────────────────────┘

Startup Order

Critical services must start in dependency order:

1. PostgreSQL, Redis      (data stores)


2. Traefik (edge router)


3. Zitadel (identity - needs postgres)


4. OAuth2-Proxy (auth middleware - needs zitadel)


5. All other services (can start in parallel)

Docker Compose Dependencies

services:
norns-agent:
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy

External Dependencies

ServiceExternal DependencyPurpose
TraefikAWS Route 53DNS-01 TLS challenge
TelephonyTwilioPSTN gateway
TelephonyDeepgramCloud STT
TelephonyElevenLabsCloud TTS
TelephonyOpenAIGPT-4o-mini routing
Voice GatewayOpenAI (optional)Realtime API
NornsOpenAI/AnthropicLLM providers
GitLabExternal SMTP (optional)Email notifications

Failure Impact Analysis

PostgreSQL Down

Affected ServiceImpact
ZitadelCritical - No authentication
NornsCritical - No task/memory access
BifrostCritical - No tool execution
GitLabCritical - No source control
n8nCritical - No workflows
LangfuseHigh - No tracing
GrafanaMedium - Dashboards unavailable

Redis Down

Affected ServiceImpact
NornsHigh - Context cache lost
n8nHigh - Queue processing stops
BifrostMedium - Session cache lost
GitLabMedium - Sidekiq jobs delayed

Zitadel Down

Affected ServiceImpact
GitLabHigh - No SSO login
n8nHigh - No new logins
Norns AdminHigh - No admin access
All OAuth2-Proxy protectedHigh - 401 errors

Traefik Down

Affected ServiceImpact
All servicesCritical - No external access

Health Check Cascade

# Check critical path
curl -f http://postgres:5432 || echo "PostgreSQL down"
curl -f http://docs/infrastructure/redis:6379 || echo "Redis down"
curl -f https://auth.ravenhelm.dev/health || echo "Zitadel down"
curl -f https://norns.ravenhelm.dev/health || echo "Norns down"
curl -f https://bifrost-api.ravenhelm.dev/health || echo "Bifrost down"

See Also

  • [[Network-Architecture]] - Network topology
  • [[Infrastructure]] - Core services
  • [[Operations/Disaster-Recovery]] - Recovery procedures