Skip to main content
Arcentra exposes three complementary APIs:
  • 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 the api/ 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.
Event types follow the pattern 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:
Responses follow a uniform envelope with 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.
For the canonical list of endpoints, refer to the routes registered in internal/control.

WebSocket gateway

The WebSocket gateway is exposed at GET /api/v1/ws (the WebSocket handshake is an HTTP GET).

Request envelope

  • channel is required (channel_log or channel_status).
  • action defaults to subscribe.
  • params is required and must include pipelineId, jobId, and stepRunId.

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 (status 1/2/3).
  • unsubscribed — acknowledgement of unsubscribe.
  • error — error envelope.
Once a step run finishes, only the snapshot is sent and no Kafka events are forwarded.

Snapshot example

Live event example

Error example

Last modified on April 26, 2026