Storage

Status: Stable Default: S3 (bucket‑only)
  • Uses AWS default credential chain.
  • Configure via env vars or flags:
    • OPENTACO_S3_BUCKET, OPENTACO_S3_REGION, OPENTACO_S3_PREFIX
Fallback: In‑memory
  • If S3 is not configured or init fails, the service warns and falls back to memory.
  • Suitable for local demos; tfstate is not persisted across restarts.
Object layout per unit:
  • <prefix>/<unit-id>/terraform.tfstate — Current tfstate
  • <prefix>/<unit-id>/terraform.tfstate.lock — Lock file
  • <prefix>/<unit-id>/versions/v-{timestamp}-{hash}.tfstate — Version history
Version History:
  • Automatic versioning on every tfstate upload
  • Previous tfstate versions are archived with timestamp and content hash
  • Hash-enhanced filenames prevent collisions: v-20240115T143022.123456Z-a1b2c3d4.tfstate
  • Configurable retention via OPENTACO_MAX_VERSIONS (default: 10)
  • Works with both S3 and in-memory storage backends
  • Cleanup happens automatically during uploads
System unit convention:
  • Default system unit: __opentaco_system (created by CLI).
  • Reserved IDs start with __opentaco_.
Dependency graph storage:
  • The dependency graph is stored entirely inside the system workspace as a normal Terraform state (__opentaco_system).
  • Each edge is a Terraform resource instance of type opentaco_dependency holding only digests and timestamps (no plaintext outputs).
  • The service edits this tfstate on every unit write to update edge metadata; no separate database is used.