Orchestration
Clusters and Kubernetes
Manage clusters, nodes, workloads, placements, join tokens, and Kubernetes-style manifest workflows.
This section covers Quilt’s control-plane surfaces: cluster lifecycle, node registration, workload scheduling, and Kubernetes-style manifest workflows.
Tenant-authenticated cluster routes:
POST /api/clusters
GET /api/clusters
GET /api/clusters/<cluster_id>
DELETE /api/clusters/<cluster_id>
POST /api/clusters/<cluster_id>/reconcile
GET /api/clusters/<cluster_id>/nodes
GET /api/clusters/<cluster_id>/nodes/<node_id>
DELETE /api/clusters/<cluster_id>/nodes/<node_id>
POST /api/clusters/<cluster_id>/nodes/<node_id>/drain
POST /api/clusters/<cluster_id>/workloads
GET /api/clusters/<cluster_id>/workloads
GET /api/clusters/<cluster_id>/workloads/<workload_id>
PUT /api/clusters/<cluster_id>/workloads/<workload_id>
DELETE /api/clusters/<cluster_id>/workloads/<workload_id>
GET /api/clusters/<cluster_id>/placements
GET /api/clusters/<cluster_id>/capabilities
POST /api/clusters/<cluster_id>/join-tokens
Agent-authenticated routes:
POST /api/agent/clusters/<cluster_id>/nodes/register
POST /api/agent/clusters/<cluster_id>/nodes/<node_id>/heartbeat
GET /api/agent/clusters/<cluster_id>/nodes/<node_id>/allocation
GET /api/agent/clusters/<cluster_id>/nodes/<node_id>/placements
POST /api/agent/clusters/<cluster_id>/nodes/<node_id>/placements/<placement_id>/report
POST /api/agent/clusters/<cluster_id>/nodes/<node_id>/deregister
Kubernetes compatibility routes:
GET /api/k8s/schema
POST /api/k8s/validate
POST /api/k8s/diff
POST /api/k8s/apply
GET /api/k8s/applies/<operation_id>
GET /api/k8s/resources
POST /api/k8s/export
GET /api/k8s/resources/<resource_id>
DELETE /api/k8s/resources/<resource_id>
Parameter Rules
POST /api/k8s/validateuses singularmanifestand does not requirecluster_idPOST /api/k8s/diff,POST /api/k8s/apply, andPOST /api/k8s/exportrequirecluster_idin the JSON bodyGET /api/k8s/applies/<operation_id>,GET /api/k8s/resources,GET /api/k8s/resources/<resource_id>, andDELETE /api/k8s/resources/<resource_id>requirecluster_idin the query stringPOST /api/k8s/applyreturns202and already includesoperation_id,status,summary,warnings,errors, anddiff
Important Auth Headers
- join token registration uses
X-Quilt-Join-Token - node-authenticated calls use
X-Quilt-Node-Token
Node Registration Request
{
"name": "node-a",
"public_ip": "203.0.113.10",
"private_ip": "10.0.0.10",
"agent_version": "agent-build",
"labels": {
"suite": "control-plane"
},
"bridge_name": "quilt0",
"dns_port": 1053,
"egress_limit_mbit": 1000,
"gpu_devices": []
}
Important Semantics
- the live registration route is
POST /api/agent/clusters/<cluster_id>/nodes/register name,bridge_name,dns_port, andegress_limit_mbitare required- the response shape is nested as
node,allocation, andnode_token - there is no flat top-level
node_id - node list and detail routes expose persisted
gpu_inventory - deregistered nodes are no longer part of the stable read surface
Rule of Thumb
Use the cluster routes for tenant-owned desired state, the agent routes for host participation, and the k8s routes when you want manifest-driven workflows over the same backend.
