Prerequisites

ToolVersionUsed By
Go1.21+Ensemble
Rust1.75+Podium, Chronicle
Bun1.0+Diminuendo
Python3.11+Podium CLI, Python agents
macFUSE or FSKitmacOS 15.4+Chronicle (optional on macOS)
Docker24+Containerized deployment

Running Each Service

Ensemble (Inference Gateway)

cd ensemble
make build
./ensemble serve --config config/ensemble.yaml
# Runs on :8080 by default

Podium (Agent Conductor)

cd podium

# Build coordinator + gateway
cargo build --release -p podium-coordinator -p podium-gateway

# Start coordinator
./target/release/podium-coordinator --port 9090

# Start gateway
./target/release/podium-gateway --port 8090

Chronicle (Workspace Filesystem)

Chronicle is typically started by Podium for each agent, but can be run standalone:
cd chronicle
cargo build --release

# Mount a versioned workspace
./target/release/chronicle /path/to/mount \
  --agent-id my-agent \
  --s3-bucket my-chronicle-cas \
  --replication

Diminuendo (Client Gateway)

cd diminuendo

# First time setup (creates .env from AWS SSM)
scripts/setup.sh

# Start gateway + web client
bun run dev
# Gateway: http://localhost:8080
# Web client: http://localhost:5173

Environment Variables

Diminuendo connects to Podium (for agent lifecycle and streaming) and Ensemble (for model config queries). It also passes the Ensemble URL to Podium so agents can call Ensemble directly for inference. Key environment variables in its .env:
# Ensemble connection
ENSEMBLE_URL=https://ensemble.example.com
ENSEMBLE_API_KEY=ens_your_key

# Podium connection
PODIUM_URL=https://podium.example.com
PODIUM_API_KEY=pod_admin_your_key
PODIUM_API_PREFIX=/api/v1

# Agent execution
PODIUM_EXECUTION_TARGET=local  # or "docker" or "cloud"
PODIUM_ENSEMBLE_URL=http://localhost:8080  # Ensemble URL passed to agents (agents call Ensemble directly)