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.
