Five internal gRPC services expose domain operations over mTLS-protected connections.
Users service
Registration, login, user lookup, and preference updates.
Workflows service
Workflow CRUD, build status, list filters, failure counters, termination, deletion, and internal lookup by ID.
Jobs service
Scheduling, reads, status updates, lease claim and renewal, container attachment, completion, failure, cancellation, retry release, expired-lease recovery, logs, search, live streaming, and job listing.
FailJob requires a failure-family terminal reason code, while CancelJob and CancelClaimedJob require a cancellation-family code. Workers must use the dedicated terminal commands so failure kind, diagnostics, status, reason, and replay identity are recorded together. Job list and public detail responses expose only the normalized safe code and message, never the stored raw error.
Notifications service
Notification creation, listing, and marking records read.
Analytics service
User and workflow aggregate reads.
Transport security
Compose configures service certificates, client certificates, CA trust, and signed authorization metadata. Direct host exposure of development ports is for debugging, not a substitute for authenticated service calls.
In Kubernetes, these five services use headless Service discovery. DNS returns
ready Pod IPs to the gRPC clients, whose round_robin policy distributes calls
across the resolved replicas instead of multiplexing every call through one
ClusterIP connection.
