Unikraft Cloud SDKs
Everything the CLI and the console do goes through two APIs: the per-metro platform API for instances, volumes, services and certificates, and the global control-plane API for accounts, metro discovery, images and self-hosted nodes. The SDKs on this page put those same APIs in your own programs, so instances, volumes, services and certificates are things your code creates and drives directly.
Client libraries
@unikraft/cloud for Node.js and TypeScript.
Fully typed, with chainable handles, multi-metro fan-out, and a Sandbox class for running commands and moving files inside an instance.
unikraft-cloud for Python 3.10 and newer.
Async-only, with the same chainable references and multi-metro fan-out.
unikraft.com/cloud/sdk, generated from the OpenAPI specification.
The same client the unikraft CLI is built on.
Extending the platform
Build a plugin in Go: the in-instance agent that adds services such as command execution and filesystem access to an instance, without hand-rolling the platform contract.
Which layer to write against
The JavaScript and Python client libraries are two layers each, and you pick per call:
| Layer | What you get | When to reach for it |
|---|---|---|
| Idiomatic | Envelope-free results, automatic pagination, chainable references, metro fan-out | Almost always |
| Plumbing | The OpenAPI specification as written: one method per operationId, raw response envelope, one metro per call | Anything the idiomatic layer does not cover yet |
The idiomatic layer holds a plumbing client rather than replacing it, so the raw API stays one property away. The Go SDK is the plumbing layer alone: the generated OpenAPI client, with no idiomatic layer on top.
Authentication
Every client library reads a bearer token from the UKC_TOKEN environment variable, and takes one explicitly as well.
The plugin SDK runs inside an instance and needs no platform token.
Create a token in the Unikraft Cloud console.
Code
Left unset, UKC_METRO leaves the JavaScript and Python clients account-wide: reads ask every metro the account can reach and merge the answers, each result tagged with the metro it came from.
The Go client targets one metro per client, and defaults to fra.
Beyond the SDKs
Nothing here is a prerequisite for the others.
The unikraft CLI covers the same ground from a shell, and the REST API is available directly for any language without an SDK.