swarm-controller-api
Wire types for swarm-controller's HTTP API, the request and response
bodies both swarm-controller (server) and swarmctl (client) import.
Serde only: no server or client logic, no tokio, no axum.
Why it's its own crate
swarmctl doesn't link swarm-controller, for the same reason hivectl
doesn't link hive-c0re. The two still share one contract, the same way
hivectl and hive-c0re share hive-host-sock: a field renamed on one side
is a compile error on the other, not a 400 the operator finds at runtime.
The schema feature derives utoipa's ToSchema on every type, for the
controller's OpenAPI spec. swarmctl leaves it off.
What's here
One module per endpoint family: agents (POST /api/agents, request and
response, and POST /api/agents/{name}/forge-token), agents_md
(/api/agents/{name}/agents-md), forge
(POST /api/forge/users/{name}/admin), schedules (/api/schedules), and
inference, limits and permissions, the settings bodies that
POST /api/agents also carries.
The types inside those bodies live in other serde-only crates: Effort,
Source and ArchetypeRef in swarm-wire, Permission in hive-types. This
crate still links no tokio and no axum.