Skip to main content
CyborgDB Service can be configured entirely via environment variables, entirely via a YAML file, or any mix of the two. This page is the canonical, exhaustive YAML reference — every key the service understands, what it does, and what its default is. For prose explanations and end-to-end walkthroughs, see:

Resolution and precedence

The service resolves a YAML file in this order (first hit wins):
  1. The CYBORGDB_CONFIG_FILE environment variable. Missing path = hard error.
  2. ./cyborgdb.yaml
  3. ./cyborgdb.yml
  4. /etc/cyborgdb/cyborgdb.yaml
A missing file is fine — the service falls back to env-only. Settings precedence, highest to lowest:
  1. Init args (programmatic embedding)
  2. Environment variables
  3. .env file
  4. YAML file
  5. File secrets

Env-var substitution

Any string value in the YAML may reference an environment variable:
  • ${VAR} — required. Startup fails if VAR is unset.
  • ${VAR:-default} — uses default when VAR is unset.
A variable set to the empty string counts as unset. Use this pattern to keep BYOK role ARNs, account IDs, and credentials out of the checked-in YAML.

Full schema

cyborgdb.yaml

Storage backend cheat sheet

The CYBORGDB_S3_* namespace is deliberately separate from AWS_* so storage and KMS credentials cannot collide. KMS (under kms.registry) uses the standard AWS credential chain or sts:AssumeRole; S3 storage uses its own explicit keys (or the chain if no explicit keys are set).

KMS provider matrix

Both providers accept role_arn + external_id for cross-account (BYOK) access — the service calls sts:AssumeRole before reaching the key on every wrap or unwrap.

Minimal viable configs

Dev — disk, single key:
Production — S3 on AWS with instance role, TLS, RBAC:
Production — MinIO + per-tenant BYOK:

Validation behavior

  • Invalid cyborgdb_db_type (anything not in memory | disk | s3) — startup fails fast with a clear error.
  • CYBORGDB_CONFIG_FILE set to a missing path — hard error.
  • ${VAR} referencing an unset env var — hard error at parse time.
  • KMS slot with missing provider/key_id/region — load-time error when the first index references the slot.
  • cyborgdb_s3_endpoint set without explicit cyborgdb_s3_access_key + cyborgdb_s3_secret_key — startup fails (the AWS chain is bypassed for custom endpoints).

See also