Agentic Reasoning Core - A production-ready platform demonstrating enterprise-grade infrastructure for AI agent systems.
Get the entire platform running in 3 commands:
# 1. Generate secure secrets
make generate-secrets
# 2. Start all services (Core + Observability + Security + Apps)
make up
# 3. View service URLs and credentials
make info
# 4. See your superhero lineup! π¦Έ
make rosterThat's it! The platform is now running with:
- β PostgreSQL + pgvector
- β Redis cache
- β NATS & Pulsar messaging
- β Prometheus, Loki, Jaeger, Grafana
- β Traefik gateway
- β Kratos identity
- β Unleash feature flags
- β Infisical secrets
Access the dashboards:
- π Grafana: http://localhost:3000 (credentials in
make info) - π Jaeger: http://localhost:16686
- π Prometheus: http://localhost:9090
- π Unleash: http://localhost:4242
- Docker 24.0+ & Docker Compose v2.20+
- Make (built-in on macOS/Linux)
- 4GB+ RAM for full stack (2GB for minimal)
- OpenSSL (for secret generation)
macOS:
brew install --cask dockerLinux:
# Install Docker Engine
curl -fsSL https://get.docker.com | sh
# Install Docker Compose
sudo apt-get install docker-compose-pluginRequired infrastructure that every service depends on:
| Service | Purpose | Port | Status |
|---|---|---|---|
| PostgreSQL | Primary data store + pgvector | 5432 | β Required |
| Redis | Cache & sessions | 6379 | β Required |
| NATS | Ephemeral messaging | 4222 | β Required |
| Pulsar | Durable event streaming | 6650 | β Required |
| Traefik | API gateway | 80/443 | β Required |
| OpenTelemetry | Telemetry collection | 4317/4318 | β Required |
| Infisical | Secrets management | 3001 | β Required |
| Unleash | Feature flags | 4242 | β Required |
Optional but recommended for production:
| Service | Purpose | Port | Status |
|---|---|---|---|
| Loki | Log aggregation | 3100 | π Plugin |
| Prometheus | Metrics collection | 9090 | π Plugin |
| Jaeger | Distributed tracing | 16686 | π Plugin |
| Grafana | Unified visualization | 3000 | π Plugin |
Production-ready identity and authentication:
| Service | Purpose | Port | Status |
|---|---|---|---|
| Kratos | Identity & authentication | 4433/4434 | π Plugin |
Your custom services built on the framework:
| Service | Purpose | Port | Status |
|---|---|---|---|
| Raymond | Platform utilities | 8081 | π Active |
# Start everything (recommended for development)
make up
# Stop all services (preserves data)
make down
# Check health of all services
make health-all
# View service URLs and credentials
make info
# Stream logs from all services
make logs# Initialize environment (interactive)
make init
# Generate secure random secrets
make generate-secrets
# Validate secrets configuration
make validate-secrets
# Create Docker volumes
make init-volumes
# Create Docker network
make init-network# Minimal - Core services only (~2GB RAM)
make up-minimal
# Dev - Core + application services (~3GB RAM)
make up-dev
# Observability - Core + monitoring (~4GB RAM)
make up-observability
# Security - Core + monitoring + auth (~5GB RAM)
make up-security
# Full - Everything including app services (~6GB RAM)
make up-full
# Alias: make up# Restart all services
make restart
# Rebuild custom images
make build
# Stop and remove containers (keeps volumes)
make clean
# Complete reset (removes everything)
make reset
# List running containers
make ps
# Show comprehensive status
make status# Check all services
make health-all
# Check core services only
make health-core
# Check observability stack
make health-observability
# Check security services
make health-security# Stream all logs
make logs
# Core services logs
make logs-core
# Observability logs
make logs-observability
# Security services logs
make logs-security
# Application services logs
make logs-services# Run database migrations
make migrate-db
# Backup database
make backup-db
# Restore from backup
make restore-db
# Open PostgreSQL shell
make shell-postgres
# Open Redis CLI
make shell-redis# Run all validations
make validate
# Validate architecture alignment
make validate-architecture
# Validate docker-compose files
make validate-compose
# Test service connectivity
make test-connectivity
# Validate secrets before deployment
make validate-secrets# Display all service URLs and credentials
make info
# Show component versions
make version
# Show help menu
make helpThe platform requires secure configuration before first use:
# Option 1: Automated (Recommended)
make generate-secrets # Generates cryptographically secure secrets
# Option 2: Manual
cp .env.example .env
# Edit .env and replace all CHANGE_ME values
make validate-secrets # Validate configuration- β No weak defaults - All passwords must be explicitly set
- β Automated validation - Pre-flight checks before deployment
- β Resource limits - CPU/memory limits on all services
- β Log rotation - Prevents disk exhaustion (10MB Γ 3 files)
- β Secured admin interfaces - No public exposure in production
- β Environment-based secrets - No hardcoded credentials
.env # Main configuration (auto-generated)
.env.example # Template with documentation
deployments/docker/ # Docker Compose files
βββ docker-compose.base.yml
βββ docker-compose.core.yml
βββ docker-compose.observability.yml
βββ docker-compose.security.yml
βββ docker-compose.services.yml
βββ docker-compose.production.yml # Production overrides---## ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Application Layer β
β (Your Services: Agents, APIs, Workers) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Plugin Layer β
β Observability: Loki, Prometheus, Jaeger, Grafana β
β Security: Kratos (Identity & Auth) β
β Search: (Future: Typesense, Meilisearch) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Core Layer β
β Gateway: Traefik β
β Telemetry: OpenTelemetry Collector β
β Persistence: PostgreSQL + pgvector β
β Caching: Redis β
β Messaging: NATS (ephemeral) + Pulsar (durable) β
β Secrets: Infisical β
β Features: Unleash β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Every component follows a swappable design pattern:
- Observability: Loki β Elasticsearch | Prometheus β InfluxDB | Jaeger β Zipkin
- Database: PostgreSQL β MySQL, MongoDB
- Cache: Redis β Memcached, Valkey
- Messaging: NATS β RabbitMQ | Pulsar β Kafka
- Gateway: Traefik β Kong, Nginx
- Identity: Kratos β Keycloak, Auth0
- Secrets: Infisical β HashiCorp Vault
Application Service
β
βββ OpenTelemetry SDK
β βββ Logs β OTEL Collector β Loki β Grafana
β βββ Metrics β OTEL Collector β Prometheus β Grafana
β βββ Traces β OTEL Collector β Jaeger β Grafana
β
βββ PostgreSQL (persistent data)
βββ Redis (cache, sessions)
βββ NATS (ephemeral messages)
βββ Pulsar (durable events)
βββ Traefik (HTTP routing)
βββ Kratos (authentication)
βββ Unleash (feature flags)
Choose the right profile for your needs:
make up-minimal # Core services onlyIncludes: PostgreSQL, Redis, NATS, Pulsar, OTEL, Traefik, Infisical, Unleash
make up-observability # Core + monitoringIncludes: Minimal + Loki, Prometheus, Jaeger, Grafana
make up-security # Core + monitoring + securityIncludes: Observability + Kratos
make up # Everything including demo appsIncludes: Security + Raymond utility service
- Quickstart Guide - 5-minute onboarding
- Operations Guide - Deployment and management
- Validation Failures - Troubleshooting
- Directory Design - Three-tier structure
- Service Categorization - Where services belong
- Service Roadmap - Development plan
- Docker Image Hierarchy - Image relationships
- Docker Standards - Container best practices
- Docker Build Optimization - Performance tuning
- Security Scanning - Security processes
- Migration Guide - Service migration
- Progress Tracker - Development status
- Changelog - Version history
- Security Baseline - Security status
Solution:
make generate-secretsSolution:
# Wait for services to start (10-30 seconds)
make health-all
# Check logs
make logs-coreSolution:
# Find what's using the port
lsof -i :5432 # or whatever port
# Stop conflicting service or change port in .envSolution:
# Clean restart
make down
make clean
make upSolution:
# Clean up Docker
docker system prune -a --volumes
# Or keep data but remove old images
docker system prune -a# Check individual service health
make health-core
make health-observability
# View detailed logs for failing service
docker logs arc_postgres
docker logs arc_redis
# Restart specific service
docker restart arc_postgres# Check resource usage
docker stats
# Review resource limits
cat deployments/docker/docker-compose.core.yml | grep -A 5 resources
# Adjust limits in .env or use smaller profile
make up-minimal # Instead of make up# Test all services
make test-connectivity
# Manual tests
curl http://localhost:3000/api/health # Grafana
curl http://localhost:9090/-/healthy # Prometheus
curl http://localhost:16686 # Jaeger
curl http://localhost:4242/health # Unleash# PostgreSQL
make shell-postgres
# Inside psql: \l (list databases), \dt (list tables)
# Redis
make shell-redis
# Inside redis-cli: PING, INFO, KEYS *# Subscribe to test subject
docker exec arc_nats nats sub test
# Publish message (in another terminal)
docker exec arc_nats nats pub test "Hello World"# Get all URLs and credentials
make info- Open http://localhost:3000
- Login with credentials from
make info - Pre-configured data sources:
- Loki (logs)
- Prometheus (metrics)
- Jaeger (traces)
Access http://localhost:9090 and try:
# CPU usage by service
rate(container_cpu_usage_seconds_total[5m])
# Memory usage by service
container_memory_usage_bytes / 1024 / 1024
# HTTP request rate
rate(http_requests_total[5m])
- Open http://localhost:16686
- Select service:
raymond - Click "Find Traces"
- Explore distributed trace waterfall
- Run
make generate-secrets - Run
make validate-secrets - Review
.envconfiguration - Set up TLS certificates for Traefik
- Configure backup strategy
- Set up monitoring alerts
- Review resource limits
- Test disaster recovery
# Use production compose override
docker compose \
-f deployments/docker/docker-compose.base.yml \
-f deployments/docker/docker-compose.core.yml \
-f deployments/docker/docker-compose.observability.yml \
-f deployments/docker/docker-compose.security.yml \
-f deployments/docker/docker-compose.production.yml \
up -dThe platform includes:
- β No weak default credentials checked into git
- π TLS entrypoint configured for service exposure
- π Traefik dashboard disabled by default; enable via secure override only
- π‘οΈ Hardened compose profiles (no insecure legacy services)
- π§ͺ Health checks wired into
make health-*
See SECURITY-FIXES.md for details.
# 1. Create feature branch
git checkout -b feature/my-feature
# 2. Make changes and test
make up
make test-connectivity
make validate
# 3. Commit changes
git add .
git commit -m "feat: add new feature"
# 4. Push and create PR
git push origin feature/my-feature- Follow Naming Conventions
- Document all changes in appropriate README files
- Add health checks to new services
- Include resource limits
- Update Makefile with new targets
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Check docs/ directory
- Issues: Create an issue with detailed description
- Questions: Start a discussion
Current Version: 2.1.0 (Spec 002 - Framework Stabilization) Status: Active Development Last Updated: January 11, 2026
- β Three-tier directory structure (core/plugins/services)
- β Docker base images and templates
- β Validation tooling (10+ scripts)
- β CI/CD pipelines (GitHub Actions)
- β Comprehensive documentation (25+ guides)
- β Service roadmap (34 services mapped)
| Category | Count | Status |
|---|---|---|
| External (Docker config) | 18 | β Ready |
| Built (raymond) | 1 | π’ Working |
| Stubs (sherlock, scarlett, piper) | 3 | π‘ Skeleton |
| Planned (not built) | 12 | βͺ Roadmapped |
- Phase 1: Sherlock LLM Integration
- Phase 2: Voice Pipeline (Piper, Scarlett)
- Phase 3: Safety Layer (Guard, Ramsay)
- Phase 4: Specialized Workers
See PROGRESS.md and SERVICE-ROADMAP.md for details.
Built with β€οΈ for the A.R.C. Framework