Skip to main content

Overview

Shannon is configured through environment variables and YAML configuration files. This guide documents all available configuration options.

Configuration Files

Shannon uses multiple configuration approaches:
  1. .env file: Environment variables (this document)
  2. config/features.yaml: Feature flags and toggles
  3. config/models.yaml: LLM model definitions and pricing
  4. Docker Compose: Service orchestration and networking

Setup


Core Runtime

Essential variables for all deployments. Example:

LLM Provider API Keys

At least one provider must be configured. AWS Bedrock Configuration: Example:
Testing API Keys:

Web Search Providers

Optional but highly recommended for research and data gathering tasks. Provider-Specific Keys: Example:

Data Stores

Configuration for PostgreSQL, Redis, and Qdrant.

PostgreSQL

Redis

Qdrant (Vector Database)

Example:

Service Endpoints

Internal service URLs for communication. Config File Paths:

Model Routing & Budgets

Control LLM selection, token limits, and cost management. Example - Cost-Optimized:
Example - High-Quality:

Cache & Rate Limiting

Performance and cost optimization through caching and rate limits. Cache Behavior:
  • Responses are cached by semantic similarity
  • Cache key: SHA256 hash of (prompt + model + temperature)
  • TTL: Controlled by REDIS_TTL_SECONDS
Example:

Tool Execution & Workflow Controls

Fine-tune parallelism, timeouts, and execution behavior. Circuit Breaker Settings: Performance Tuning:

Approvals & Security

Human-in-the-loop and authentication settings. Security Best Practices:
Development setup:

Python WASI Sandbox

Secure Python code execution environment. Setup:
Tuning:

OpenAPI & MCP Integrations

External tool and API integration settings.

OpenAPI Tools

MCP (Model Context Protocol)

Example - Restricted:

Observability & Telemetry

Metrics, tracing, and logging configuration. Prometheus Endpoints:
  • Orchestrator: http://localhost:2112/metrics
  • Agent Core: http://localhost:2113/metrics
  • LLM Service: http://localhost:8000/metrics
Example - Production Observability:

Advanced Orchestrator Controls

Low-level tuning for Temporal workers and orchestrator behavior.

Worker Concurrency

Event & Circuit Settings

Performance Tuning:

Miscellaneous

Additional configuration options.

Configuration Profiles

Development Profile

Staging Profile

Production Profile


Hot-Reload Support

Most configuration changes require a service restart:
Services that auto-reload:
  • ✅ Feature flags (config/features.yaml)
  • ✅ Model configuration (config/models.yaml)
Services requiring restart:
  • ❌ Environment variables (.env)
  • ❌ Database credentials
  • ❌ Service endpoints

Validation & Testing

Verify Configuration

Configuration Debugging


Security Checklist

  • Change JWT_SECRET to strong random value
  • Enable authentication (GATEWAY_SKIP_AUTH=0)
  • Set strong database passwords
  • Enable Redis authentication
  • Use SSL for PostgreSQL (POSTGRES_SSLMODE=require)
  • Enable approvals (APPROVAL_ENABLED=true)
  • Restrict OPENAPI_ALLOWED_DOMAINS
  • Restrict MCP_ALLOWED_DOMAINS
  • Enable structured logging (LOG_FORMAT=json)
  • Set up monitoring (OTEL_ENABLED=true)
  • Configure budget limits appropriately
  • Review worker concurrency for your load
  • Backup .env file securely

Installation

Initial setup guide

Troubleshooting

Common configuration issues

Cost Control

Budget management

Monitoring

Observability setup