Architecture
Chronoverse consists of the following components:Infrastructure Services
- PostgreSQL - Primary relational database for metadata and state
- ClickHouse - Analytics database for job logs and metrics
- Redis - Cache and session storage
- Kafka - Event streaming and message broker
- Meilisearch - Search engine for job logs
- LGTM Stack - Observability (Loki, Grafana, Tempo, Mimir)
Application Services
- users-service - User authentication and management (gRPC on port 50051)
- workflows-service - Workflow orchestration (gRPC on port 50052)
- jobs-service - Job execution management (gRPC on port 50053)
- notifications-service - Notification delivery (gRPC on port 50054)
- analytics-service - Analytics and metrics (gRPC on port 50055)
- server - REST API gateway (HTTP on port 8080)
- dashboard - Web UI (port 3000/3001)
Workers
- scheduling-worker - Schedules workflow executions
- workflow-worker - Processes workflow events
- execution-worker - Executes workflow jobs
- joblogs-processor - Processes and indexes job logs
- analytics-processor - Aggregates analytics data
Security Features
Chronoverse implements enterprise-grade security:- TLS Everywhere - All services use mTLS for secure communication
- Certificate Management - Automated certificate generation and rotation
- Authentication - ED25519 keypair-based authentication
- Network Isolation - Services communicate on isolated Docker network
Prerequisites
Install Docker Compose
Install Docker Compose V2 (included with Docker Desktop):
Chronoverse requires Docker Compose V2. The legacy
docker-compose (with hyphen) is not supported.System Requirements
Ensure your system meets the minimum requirements:Development:
- CPU: 4 cores
- RAM: 8 GB
- Disk: 20 GB free space
- CPU: 8+ cores
- RAM: 16+ GB
- Disk: 100+ GB free space (depending on workload)
Deployment Options
Development Environment
The development configuration (compose.dev.yaml) is optimized for local development:
- Builds images from local source code
- Exposes all service ports for debugging
- No resource limits
- Includes observability stack (Grafana on port 3000)
- Single replica for all workers
Production Environment
The production configuration (compose.prod.yaml) is optimized for production:
- Uses pre-built images from GitHub Container Registry
- Implements resource limits and reservations
- Scales workers with multiple replicas
- Includes nginx reverse proxy on port 80
- Optimized for stability and performance
Quick Start
Next Steps
Development Setup
Set up your local development environment
Production Deployment
Deploy Chronoverse to production
Configuration
Configure environment variables and settings
Monitoring
Set up monitoring and observability