DocsInternal ContractsData stores

Data stores

Persistence ownership across five infrastructure systems.

PostgreSQL

Stores users, workflows, jobs, runtime nodes, notification state, analytics aggregates, idempotency records, outbox rows, job leases, retry metadata, and processed-event identity.

ClickHouse

Stores retained job logs optimized for high-volume ordered reads. It is not the authoritative workflow or job state store.

Redis

Stores HTTP sessions, cached service reads, live log pub/sub state, and runtime-node-scoped image-pull locks.

Meilisearch

Indexes retained log messages for text search and highlights. ClickHouse remains the retained log body store.

Kafka

Carries durable asynchronous events. It is a transport log, not the only record of command completion or job ownership.

Runtime registry and Docker proxy

runtime-agent registers Docker-capable nodes in PostgreSQL and heartbeats Docker endpoint health, capacity, and status. The Docker proxy exposes a token-authenticated, method-and-path-allowlisted subset of Docker APIs to workers instead of mounting the daemon socket directly into every process.

runtime-agent owns rows in runtime_nodes. Jobs store runtime_node_id and an endpoint snapshot while they are running so execution, logs, termination, deletion, and expired-lease recovery use the Docker daemon that owns the container.

Ownership rule

Do not add a second writable source for a domain entity without defining reconciliation. Each store has a distinct operational role.