mirror of
https://github.com/hanzoai/kms.git
synced 2026-10-17 11:18:16 +00:00
Signed out, the console no longer draws "Sign in with hanzo.id". It has the SDK mint hanzo-kms's PKCE request (its callback, an S256 challenge, no nonce) and replaces the page with hanzo.ai/login plus that query. hanzo.ai finishes it and the callback lands on the page that was asked for. Discovery is read from api.hanzo.ai and the token, revoke and logout calls stay on this origin's /v1/iam, so nothing calls hanzo.id. Sign-out ends the session here with the SDK's end(), which @hanzo/iam 0.21.31 has. The Status page stops printing the issuer.
Hanzo KMS console
The app at kms.hanzo.ai. It signs in with Hanzo IAM and manages the signed-in organization's secrets over the KMS API that cloud serves on the same host.
- Vite, React 19, TypeScript, Tailwind v4
@hanzo/iam/browserfor sign-in: authorization code with PKCE against the issuerGET /v1/kms/confignames, as the<brand>-kmsclient@tanstack/react-queryfor fetch state,wouterfor routes
API it calls
| Method | Path | Page |
|---|---|---|
| GET | /v1/kms/config |
before sign-in |
| GET | /v1/kms/health |
Status |
| GET | /v1/kms/secrets?path=&env= |
Secrets |
| GET, DELETE | /v1/kms/secrets/{path}/{name}?env= |
Secrets |
| POST | /v1/kms/secrets |
Secrets |
The org is never in a URL: cloud reads it from the token.
Commands
pnpm install
pnpm dev # http://localhost:5173, proxies /v1 to a local cloud on :8000
pnpm test # node:test over src/lib/kms.ts
pnpm build # typecheck, then dist/
Shipping
hanzo.yml declares the site: the forge runs .hanzo/workflows/cicd.yml,
which builds dist/ and publishes it to the Sites plane as kms. The ingress
serves it on kms.hanzo.ai and sends /v1 to cloud.