Configuration Reference

Complete reference for Engine, Control, and Ledger configuration.

Engine Configuration

Precedence (highest first): environment variables (INFERADB__ENGINE__*) > YAML config (--config) > CLI flags.

Engine Settings

Key Env Var Default Description
threads INFERADB__ENGINE__THREADS CPU count Worker thread count
logging INFERADB__ENGINE__LOGGING info Log level (trace, debug, info, warn, error)
listen.http INFERADB__ENGINE__LISTEN__HTTP 0.0.0.0:8080 HTTP listen address
listen.grpc INFERADB__ENGINE__LISTEN__GRPC 0.0.0.0:8081 gRPC listen address
listen.mesh INFERADB__ENGINE__LISTEN__MESH 0.0.0.0:8082 Mesh/internal listen address
storage INFERADB__ENGINE__STORAGE memory Storage backend (memory or ledger)
ledger.endpoint INFERADB__ENGINE__LEDGER__ENDPOINT Ledger gRPC endpoint
ledger.client_id INFERADB__ENGINE__LEDGER__CLIENT_ID Client ID for Ledger authentication
ledger.namespace_id INFERADB__ENGINE__LEDGER__NAMESPACE_ID Namespace ID for multi-tenant Ledger
cache.enabled INFERADB__ENGINE__CACHE__ENABLED true Enable evaluation and relationship cache
cache.capacity INFERADB__ENGINE__CACHE__CAPACITY 100000 Maximum cache entries
cache.ttl INFERADB__ENGINE__CACHE__TTL 300 Cache TTL in seconds
token.cache_ttl INFERADB__ENGINE__TOKEN__CACHE_TTL 300 Token validation cache TTL in seconds
token.clock_skew INFERADB__ENGINE__TOKEN__CLOCK_SKEW 30 Allowed clock skew for token validation (seconds)
token.max_age INFERADB__ENGINE__TOKEN__MAX_AGE 3600 Maximum token age in seconds
pem INFERADB__ENGINE__PEM Path to PEM file for token signing/verification
discovery.mode INFERADB__ENGINE__DISCOVERY__MODE none Peer discovery mode (none, kubernetes, tailscale)
mesh.url INFERADB__ENGINE__MESH__URL Mesh endpoint URL for peer communication
mesh.timeout INFERADB__ENGINE__MESH__TIMEOUT 5000 Mesh request timeout in milliseconds
mesh.cache_ttl INFERADB__ENGINE__MESH__CACHE_TTL 60 Mesh peer list cache TTL in seconds
auth.enabled INFERADB__ENGINE__AUTH__ENABLED true Enable request authentication
auth.replay_protection INFERADB__ENGINE__AUTH__REPLAY_PROTECTION true Enable JTI-based replay protection

Example YAML Configuration

threads: 4
logging: info

listen:
  http: "0.0.0.0:8080"
  grpc: "0.0.0.0:8081"
  mesh: "0.0.0.0:8082"

storage: ledger
ledger:
  endpoint: "http://ledger:50051"
  client_id: "engine-01"

cache:
  enabled: true
  capacity: 100000
  ttl: 300

token:
  cache_ttl: 300
  clock_skew: 30
  max_age: 3600

pem: "/etc/inferadb/signing.pem"

discovery:
  mode: kubernetes

auth:
  enabled: true
  replay_protection: true

Validate Configuration

inferadb-engine --config config.yaml --validate

Control Configuration

The Control service is configured via CLI flags:

Flag Default Description
--listen 0.0.0.0:9090 HTTP listen address
--storage memory Storage backend (memory or ledger)
--dev-mode false Enable development mode (relaxed security)
--key-file Path to Ed25519 signing key
--ledger-endpoint Ledger gRPC endpoint
--frontend-url http://localhost:3000 Dashboard URL (for CORS and redirects)
--log-level info Log level

Example

inferadb-control \
  --listen 0.0.0.0:9090 \
  --storage ledger \
  --ledger-endpoint http://ledger:50051 \
  --key-file /etc/inferadb/control.key \
  --frontend-url https://dashboard.example.com \
  --log-level info

Ledger Configuration

The Ledger is configured via CLI flags:

Flag Default Description
--listen 0.0.0.0:50051 gRPC listen address
--data ./data Data directory for B+ tree storage
--single Run as a single-node cluster (no quorum)
--join Join an existing cluster at the given address
--cluster N Bootstrap a new cluster with N initial nodes
--peers Comma-separated list of peer addresses
--region Region identifier for data residency
--metrics Metrics listen address (Prometheus)

Single-Node (Development)

inferadb-ledger --single --data /var/lib/inferadb

Three-Node Cluster

# Node 1 (bootstrap)
inferadb-ledger --cluster 3 --data /data --listen 0.0.0.0:50051 \
  --peers node2:50051,node3:50051

# Node 2
inferadb-ledger --join node1:50051 --data /data --listen 0.0.0.0:50051

# Node 3
inferadb-ledger --join node1:50051 --data /data --listen 0.0.0.0:50051

Multi-Region

# US East node
inferadb-ledger --region us-east-1 --cluster 3 --data /data \
  --peers node2:50051,node3:50051

# EU West node
inferadb-ledger --region eu-west-1 --cluster 3 --data /data \
  --peers eu-node2:50051,eu-node3:50051