Workflow registry
The workflow registry stores versioned workflow definitions on the server so clients resolve semver ranges instead of sending full JSON on every run. Platform teams publish definitions with PUT /v1/workflows/{name}/versions/{version}. Callers use workflow_ref in POST /v1/runs or the static SDK runPublished("chat", "^1.0.0", message).
Registry requires Postgres and a running arcflow-server. Embedded SDK runs without the server do not use the registry unless you call registry HTTP routes yourself.
Operations
| Operation | Route | Auth |
|---|---|---|
| Publish version | PUT /v1/workflows/{name}/versions/{version} | Runtime API key |
| Get version | GET /v1/workflows/{name}/versions/{version} | Runtime API key |
| Resolve semver | GET /v1/workflows/{name}/resolve?range=^1.0.0 | Runtime API key |
| Set alias | POST /v1/workflows/{name}/aliases/{alias} | Runtime API key |
Admin static product also publishes chat workflows via POST /v1/admin/sites/{id}/workflows/chat/publish (see Knowledge ingestion for the full static operator path).
Publish a workflow version
Body:
Exact publish body shape may include agents inline or reference stored agents depending on server version; align with arcflow_workflows migration schema (migration 20240531000006).
Resolve semver range
Response:
The resolver picks the highest matching version per semver rules. Pin exact versions in production when you need reproducibility; use ranges for consumer apps that should pick up patch releases.
Set alias
Point latest (or any alias name) at a concrete version:
Run via workflow_ref
Clients omit inline workflow and pass workflow_ref instead (not both):
POST /v1/runs. Response:
Missing registry entries return WorkflowNotFound (HTTP 404). Invalid definitions return InvalidWorkflowDefinition (HTTP 400).
Static product publish flow
Operators using the static chat product:
- Create site via admin API (
POST /v1/admin/sites). - Ingest knowledge to site
kb_namespace. - Publish chat workflow:
- Browser calls
runPublished("chat", "^1.0.0", userMessage)through Relay.
Scoped runtime keys (ARCFLOW_STATIC_RUNTIME_KEYS) can limit which workflow names a Relay site key may invoke.
Postgres tables
Registry data lives in arcflow_workflows and arcflow_workflow_aliases. Apply migrations with arcflow migrate up before first publish. Server /ready fails if migrations are pending.
Validation before publish
Validate workflow JSON against workflow schema in CI. Engine runs validate_workflow and validate_graph before execution. CLI arcflow validate is a stub (CLI validate command); see Validation and testing.
Idempotency on runs
Registry resolves workflow at run creation time. Re-posting the same run body with the same Idempotency-Key deduplicates within the server window without re-resolving if the original run is returned. New runs always resolve the current highest matching version for the range.
Related pages
- Linear workflows and Graph workflows for definition authoring
- Workflow specification
- Server API quickstart
- Surfaces and when to use them