- gRPC — primary control plane / agent contract and the recommended surface for service-to-service integrations.
- HTTP/JSON — user-facing API for pipelines, runs, identity, and settings; used by the UI and by external automation.
- WebSocket — push channels for live logs and status updates.
gRPC services
The proto definitions live in theapi/ directory and
are managed with Buf. They are split into five service
modules under */v1:
Agent service highlights
Heartbeat,Register,Unregister— agent lifecycle.FetchStepRun— agents pull step runs that match their label selector.ReportStepRunStatus,CancelStepRun— bidirectional status flow.UpdateLabels— dynamic label updates without restart.Connect— bidirectional control-plane channel between agent and gateway.
Gateway service highlights
PushLogs— high-throughput, batched, lossy log stream.PushEvents— reliable, idempotent event stream with retry and partial acceptance.
Pipeline service highlights
CRUD plus run control:CreatePipeline, UpdatePipeline, GetPipeline,
ListPipelines, DeletePipeline, TriggerPipeline, StopPipeline,
GetPipelineRun, ListPipelineRuns. Triggers cover manual, cron/schedule,
and event/webhook flows.
StepRun service highlights
CRUD plus execution control:CreateStepRun, GetStepRun, ListStepRuns,
UpdateStepRun, DeleteStepRun, CancelStepRun, RetryStepRun,
ListStepRunArtifacts. Steps support plugin actions, retry policies,
artifact collection, label-based routing, and when conditional
expressions.
Stream service highlights
StreamStepRunStatus,StreamJobStatus,StreamPipelineStatus— live status pushes.AgentChannel— bidirectional agent/server channel.StreamAgentStatus,StreamEvents— agent presence and system events.
arcentra.<object>.<lifecycle>, for example
arcentra.step.started or arcentra.pipeline.failed.
Generating gRPC clients
Clients are generated with Buf. From the project root:HTTP API
The HTTP API is hosted by the control plane and listens on:8080 by
default. All endpoints require a bearer token:
code, msg, optional detail,
and a timestamp field. Errors use errMsg and path instead of detail.
The pipeline endpoints under /api/v1/pipelines/... are the most commonly
used; see Pipelines for request/response shapes.
Additional HTTP surfaces include:
- Identity and settings — user, role, and tenant management.
- Projects and uploads — project CRUD and asset uploads.
- Agents — agent inventory and label inspection.
internal/control.
WebSocket gateway
The WebSocket gateway is exposed atGET /api/v1/ws (the WebSocket
handshake is an HTTP GET).
Request envelope
channelis required (channel_logorchannel_status).actiondefaults tosubscribe.paramsis required and must includepipelineId,jobId, andstepRunId.
Response envelope
Log channel (channel_log)
A
Log entry has the following fields:
Status channel (channel_status)
status_snapshot— initial snapshot from the database (t_step_run).status— live Kafka events while the step run is active (status1/2/3).unsubscribed— acknowledgement of unsubscribe.error— error envelope.