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.