The problem we wanted to solve
Distributed systems need configuration parameters that are auditable, versioned, and consistent across services. Tools such as etcd or Consul already exist for this, but none of them applies a truly immutable model: every change to a canonical parameter creates a new version instead of overwriting the previous one.
What TruthMetal is
TruthMetal is a service written in Go that implements an immutable parameter ledger. Every parameter moves through a defined lifecycle:
- SUBMITTED: parameter submitted for validation
- VALIDATING: schema and constraint checks in progress
- CONSENSUS_PENDING: waiting for quorum approval
- CANONICAL: approved and active in the cluster
- REJECTED / REVOKED: denied or revoked after consensus
Each state transition is recorded in the ledger with timestamp and context. No record is ever deleted.
Technical stack
- Go 1.22 with connect-go for gRPC and HTTP/JSON on the same port, without grpc-gateway
- PostgreSQL 16 for the ledger and the parameter store
- Redis for canonical parameter cache with a 5-minute TTL
- golang-migrate for automatic migrations at startup
Availability
TruthMetal is live in production and is already consumed internally by RBX products. The API is public and documented via Protobuf.
