Hanzo PaaS
Deploy and operate applications, containers, and custom domains across your clusters — Studio at platform.hanzo.ai, API at api.hanzo.ai/v1/platform, with IAM-native multi-org access.
Hanzo PaaS
API reference · Hanzo Platform API → — every endpoint, generated from the OpenAPI spec.
Hanzo PaaS is the control plane for shipping software on Hanzo infrastructure — Studio at platform.hanzo.ai, API at api.hanzo.ai/v1/platform. You register an application, point it at a Docker image or Git repo, attach a domain, and the platform builds, deploys, and operates it on your clusters — with deployment history, rolling updates, and drift detection. Authentication is delegated to Hanzo IAM with per-organization isolation.
| Studio (browser UI) | https://platform.hanzo.ai |
| API | https://api.hanzo.ai/v1/platform — the one Hanzo API host |
| Build | POST https://api.hanzo.ai/v1/runner — the one build door |
| Auth | Hanzo IAM bearer (interactive and machine); build token for fabric automation |
| Source | github.com/hanzoai/platform |
platform.hanzo.ai is the Studio — a browser UI, not an API host. Every programmatic call goes to api.hanzo.ai/v1/platform/..., the same host and the same key as AI, KMS, and analytics.
The model
Hanzo PaaS organizes work into a simple hierarchy:
organization
└── project
└── environment (e.g. production, staging)
├── application (a Docker image or Git source → one workload)
└── compose (a multi-service docker-compose / stack unit)| Object | What it is |
|---|---|
| project | A grouping of related services, owned by an organization |
| environment | An isolated slice of a project (production, staging, preview) |
| application | A single deployable unit. Its appName is the name of the live workload it drives. sourceType is one of docker, git, github, gitlab, bitbucket, gitea, or drop; deployTarget is local, cloud, or k8s |
| deployment | One build/deploy run, with status and start/finish timestamps |
| domain | A hostname mapped to an application or compose service, with automatic TLS |
State is stored in Hanzo Base (embedded SQLite, replicated to object storage) — there is no external database to run.
Authentication
Two credential types, both retrieved from Hanzo KMS — never hard-coded:
| Credential | Header | Use |
|---|---|---|
| IAM token | Authorization: Bearer <iam-jwt> | Everything. One login authorizes reads, deploys, and builds. Mint it with the machine-identity exchange below, or via Hanzo IAM SSO. |
| Build token | Authorization: Bearer <build-token> | Fabric automation only (git-push-to-deploy, self-release). Never held by a user. |
There is no x-api-key header and no second credential type — one bearer, one host.
Deploy
From the Studio
- Sign in at platform.hanzo.ai with your Hanzo IAM account.
- Create a project and an environment.
- Add an application — choose a Docker image or connect a Git repository.
- Attach a domain and deploy.
Get a bearer
The machine identity comes from Hanzo KMS; the exchange is the same one every Hanzo service uses.
TOKEN=$(curl -sS -X POST https://api.hanzo.ai/v1/kms/auth/login \
-H 'Content-Type: application/json' \
-d "{\"clientId\":\"$KMS_CLIENT_ID\",\"clientSecret\":\"$KMS_CLIENT_SECRET\"}" | jq -r .accessToken)Projects and apps
# List projects in the caller's org
curl -fsS https://api.hanzo.ai/v1/platform/projects \
-H "Authorization: Bearer $TOKEN"
# Apps in a project
curl -fsS https://api.hanzo.ai/v1/platform/projects/$PROJECT/apps \
-H "Authorization: Bearer $TOKEN"| Method | Path | Purpose |
|---|---|---|
GET · POST | /v1/platform/projects | List / create projects |
GET · DELETE | /v1/platform/projects/{project} | Inspect / delete a project |
GET · POST | /v1/platform/projects/{project}/apps | List / create apps |
GET · DELETE | /v1/platform/projects/{project}/apps/{app} | Inspect / delete an app |
POST | /v1/platform/projects/{project}/apps/{app}/deploy | Roll the app forward |
POST | /v1/platform/projects/{project}/apps/{app}/start · /stop | Manage the running workload |
GET | /v1/platform/projects/{project}/apps/{app}/deployments[/{id}[/logs]] | Deployment history and logs |
GET · POST | /v1/platform/sites | Static sites |
GET | /v1/platform/health | Liveness — {"k8s":true,"service":"platform","status":"ok"} |
Redeploy
curl -fsS -X POST \
"https://api.hanzo.ai/v1/platform/projects/$PROJECT/apps/$APP/deploy" \
-H "Authorization: Bearer $TOKEN"Build an image
Builds run in-cluster on Hanzo's own BuildKit — never on a laptop, never on a third-party runner. One door:
curl -fsS -X POST https://api.hanzo.ai/v1/runner \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"repo": "https://github.com/hanzoai/docs",
"sha": "'$SHA'",
"image": "ghcr.io/hanzoai/docs:v1.4.0"
}'
# → 202 {"buildJobId":"…","status":"queued","runnerPool":"…","image":"…","target":"…"}repo must be a full https:// URL; image must push to a registry we own (ghcr.io/{hanzoai,luxfi,zooai}/*) whose namespace matches the caller's org. sha pins the commit — ref or branch are accepted, defaulting to main.
Do not post to platform.hanzo.ai/v1/* or platform.hanzo.ai/api/*. The first returns 500 Service token is not configured on the server; the second returns the Studio's HTML shell with a 404. Neither is an API.
Custom domains & TLS
Attach a hostname to an application; TLS is provisioned automatically (Let's Encrypt) and a DNS record is created:
Attach it in the Studio under the project's Domains tab, then point your DNS at the ingress IP shown there. Records themselves are managed through Hanzo DNS at api.hanzo.ai/v1/dns.
Self-hosting
git clone https://github.com/hanzoai/platform
cd platform
cp .env.example .env # set IAM endpoint, service token, etc.
docker compose up -dThe platform runs as a Next.js application with an embedded SQLite database; for production it deploys to a cluster via the operator. It authenticates against Hanzo IAM using the hanzo-platform application.
API Reference
The /v1/platform control surface and /v1/runner builds
IAM bearers and the fabric build token
Create, deploy, redeploy, and operate applications
Register and manage clusters and node pools
Related Services
Identity and access management with multi-org SSO
Secrets and service tokens for deployments
The embedded data store behind the control plane
Object storage for build artifacts and backups
How is this guide?
Last updated on