Services¶
Jarvis is composed of small, focused microservices. Each runs as a Docker container (or locally for GPU-dependent workloads on macOS) and communicates over HTTP with app-to-app authentication.
Service Inventory¶
| Service | Port | Description | Tier |
|---|---|---|---|
| Config Service | 7700 | Service discovery hub | 0 - Foundation |
| Auth | 7701 | JWT authentication, app-to-app auth | 1 - Core Infra |
| Logs | 7702 | Centralized logging via Loki/Grafana | 1 - Core Infra |
| Command Center | 7703 | Voice command orchestrator | 2 - Command Processing |
| LLM Proxy | 7704/7705 | LLM inference (MLX/GGUF/vLLM) | 2 - Command Processing |
| Whisper API | 7706 | Speech-to-text via whisper.cpp | 3 - Specialized |
| TTS | 7707 | Text-to-speech via Piper | 3 - Specialized |
| OCR Service | 7031 | OCR with multiple backends | 3 - Specialized |
| Recipes Server | 7030 | Recipe CRUD and meal planning | 3 - Specialized |
| Notifications | 7712 | Push notifications and inbox | 3 - Specialized |
| Settings Server | 7708 | Settings aggregator | 4 - Management |
| MCP | 7709 | Claude Code integration | 4 - Management |
| Admin | 7710 | Web admin UI | 5 - Clients |
Dependency Tiers¶
Services are organized into tiers based on how foundational they are:
- Tier 0 (Foundation) -- Must be running for anything to work. Config Service and PostgreSQL.
- Tier 1 (Core Infrastructure) -- Auth and Logs. Most services depend on auth; logs degrade gracefully.
- Tier 2 (Command Processing) -- Command Center and LLM Proxy. The voice command pipeline.
- Tier 3 (Specialized) -- Domain services (whisper, TTS, OCR, recipes, notifications). Each is independently optional.
- Tier 4 (Management) -- Settings, MCP, admin tools. Used for configuration and development.
- Tier 5 (Clients) -- End-user interfaces (admin web UI, mobile app, Pi nodes).
Dependency Graph¶
graph TD
subgraph "Tier 0 - Foundation"
CONFIG[Config Service<br/>7700]
PG[(PostgreSQL)]
REDIS[(Redis)]
MINIO[(MinIO)]
end
subgraph "Tier 1 - Core Infrastructure"
AUTH[Auth<br/>7701]
LOGS[Logs<br/>7702]
end
subgraph "Tier 2 - Command Processing"
CC[Command Center<br/>7703]
LLM[LLM Proxy<br/>7704/7705]
end
subgraph "Tier 3 - Specialized"
WHISPER[Whisper API<br/>7706]
TTS[TTS<br/>7707]
OCR[OCR Service<br/>7031]
RECIPES[Recipes Server<br/>7030]
NOTIF[Notifications<br/>7712]
end
subgraph "Tier 4 - Management"
SETTINGS[Settings Server<br/>7708]
MCP[MCP<br/>7709]
ADMIN[Admin<br/>7710]
end
%% Tier 0 dependencies
AUTH --> PG
AUTH --> LOGS
CONFIG --> PG
CONFIG --> LOGS
%% Tier 2
CC --> AUTH
CC --> CONFIG
CC --> LOGS
CC --> LLM
CC --> PG
%% Tier 3
WHISPER --> AUTH
WHISPER --> LOGS
TTS --> AUTH
TTS --> LOGS
TTS --> LLM
OCR --> AUTH
OCR --> LOGS
OCR --> REDIS
RECIPES --> AUTH
RECIPES --> LOGS
RECIPES --> PG
RECIPES --> OCR
NOTIF --> AUTH
NOTIF --> CONFIG
NOTIF --> LOGS
NOTIF --> PG
%% Tier 4
SETTINGS --> CONFIG
SETTINGS --> AUTH
MCP --> CONFIG
MCP --> LOGS
MCP --> AUTH
ADMIN --> CONFIG
ADMIN --> AUTH
ADMIN --> SETTINGS
%% Optional edges (dashed)
CC -.-> WHISPER
CC -.-> NOTIF
CC -.-> TTS
Critical Path: Voice Commands¶
For end-to-end voice commands to work, these services must be running:
- Config Service (service discovery)
- Auth (node and app-to-app authentication)
- Command Center (voice orchestration)
- LLM Proxy (intent parsing and response generation)
- Whisper API (speech-to-text, if using server-side transcription)
- TTS (voice responses, optional)
- Logs (optional, services degrade gracefully to console logging)
Communication Patterns¶
All inter-service communication uses HTTP. See Authentication for details on the three auth modes:
- App-to-app auth:
X-Jarvis-App-Id+X-Jarvis-App-Keyheaders - Node auth:
X-API-Keyheader (node_id:node_key) - User auth:
Authorization: Bearer <jwt>header