Within Podium (Primary Use)

Chronicle is compiled into the Podium Docker image and managed by the coordinator:
cd podium
./build_image.sh production
The build script:
  1. Copies Chronicle source into the Docker build context
  2. Compiles Chronicle as part of the multi-stage Rust build
  3. Places the binary in the final image

Docker Requirements

Chronicle FUSE requires elevated privileges:
docker run --privileged podium:latest
# or more granular:
docker run --cap-add SYS_ADMIN --device /dev/fuse podium:latest

Enable in Docker

docker run \
  -e CHRONICLE_ENABLE=true \
  -e CHRONICLE_S3_BUCKET=my-cas-bucket \
  --privileged \
  podium:latest

Standalone

Build

cd chronicle
cargo build --release

macOS without macFUSE

Use the native FSKit backend (macOS 15.4+):
cargo build --release --no-default-features --features native-fskit

Linux

Requires libfuse3-dev (or fuse3 on Alpine):
apt-get install libfuse3-dev
cargo build --release

S3 Backend

For production deployments with S3 CAS:
export AWS_REGION=us-east-1
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...

chronicle /workspace \
  --agent-id my-agent \
  --s3-bucket chronicle-production-cas \
  --pooled-cas \
  --replication

MinIO (Development)

export AWS_ENDPOINT_URL=http://localhost:9000
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin

chronicle /workspace \
  --agent-id dev-agent \
  --s3-bucket chronicle-dev

Litestream Integration

Chronicle’s SQLite databases can be replicated to S3 via Litestream for disaster recovery:
# litestream.yml
dbs:
  - path: /instances/agent123/chronicle/metadata/chronicle.db
    replicas:
      - url: s3://backups/chronicle/agent123/
This is configured at the Podium level — each agent’s Chronicle DB is independently replicated.