Tillered Arctic

Bootstrap API

Agent initialization endpoints

Bootstrap API

Initialize Arctic agents with a license.

POST /v1/bootstrap

Initialize an agent with a license file.

Authentication

None required (public endpoint).

Request Body

{
  "license": {
    "customer_id": "cust_...",
    "license_id": "lic_...",
    "issued_at": "2024-01-01T00:00:00Z",
    "expires_at": "2025-12-31T23:59:59Z",
    "max_nodes": 10,
    "max_services": 100,
    "signature": "base64..."
  },
  "name": "Agent A",
  "description": "Production server"
}
FieldTypeRequiredDescription
licenseobjectYesLicense object
namestringNoHuman-readable name
descriptionstringNoDescription

Response

{
  "peer_id": "01HXYZ...",
  "peer_public_key": "base64...",
  "client_id": "cl_01HXYZ...",
  "client_secret": "sec_...",
  "license_id": "lic_...",
  "cluster_id": "01HABC...",
  "expires_at": "2025-12-31T23:59:59Z",
  "max_nodes": 10,
  "max_services": 100
}
FieldTypeDescription
peer_idstringUnique peer identifier
peer_public_keystringEd25519 public key (base64)
client_idstringOAuth client ID
client_secretstringOAuth client secret (shown once)
license_idstringLicense identifier
cluster_idstringCluster identifier
expires_atstringLicense expiration (ISO 8601)
max_nodesintegerMaximum allowed nodes
max_servicesintegerMaximum allowed services

Errors

StatusCodeDescription
400INVALID_REQUESTMalformed request
409ALREADY_BOOTSTRAPPEDAgent already initialized
422LICENSE_EXPIREDLicense has expired
422LICENSE_INVALIDInvalid signature

Example

curl -X POST http://192.168.1.10:8080/v1/bootstrap \
  -H "Content-Type: application/json" \
  -d @license.json

Notes

  • An agent can only be bootstrapped once
  • The client_secret is only returned during bootstrap
  • Store credentials securely