Production checklist¶
Before TDB serves real data to anyone but you. Each item links to where it is explained.
Network¶
- TDB is reachable only through a TLS proxy, and its own port is not published — HTTPS with Caddy
-
TDB_SERVER_URLis the publichttps://address (enterprise OAuth needs it) -
TDB_CORS_ORIGINSlists specific origins, not*, if browsers call TDB — Environment variables
Keys and identities¶
-
TDB_API_KEYSholds a strong secret, notdev-insecure-key-change-me - Agents and integrations use DB-managed keys with the
readrole and an expiry (enterprise) — API keys - Each agent's key is limited to the tools it needs with
allowed_tools— RBAC -
TDB_JWT_SECRET(if JWTs are used) is at least 32 random bytes
Sources¶
- Every database source uses a least-privileged,
SELECT-only role, andTDB_ALLOW_PRIVILEGED_DB_ROLEis unset — PostgreSQL - Databases reached over an untrusted network use
"sslmode": "verify-full" - CSV, Parquet and DuckDB files sit under
TDB_ALLOWED_DATA_DIR
Data at rest¶
- The registry (
TDB_REGISTRY_DB) and audit log (TDB_LOG_FILE) are on a persistent, backed-up volume -
TDB_ENCRYPTION_KEYis set from a secret store, so the key that protects source passwords does not sit beside them (enterprise) — Credentials at rest
Audit¶
- The audit log is exported off the host to Splunk or S3 on a schedule (enterprise) — Audit log
- Someone checks
GET /v1/audit/verifyperiodically, and rotation is configured if the log will grow large - You know what each refusal means: Errors & audit reasons
Operations¶
-
/healthis wired to your orchestrator, and/metricsto Prometheus (enterprise) — Prometheus metrics -
TDB_QUERY_TIMEOUTandTDB_MAX_ROWSsuit your sources (enterprise) - Someone reads the release notes and security updates before each upgrade