Developers
Build with Kaiten.
REST API. GraphQL. OpenFeature (OFREP). Type-safe SDKs. Everything you need to integrate Kaiten in minutes.
From zero to first flag evaluation in 5 minutes.
1Deploy Kaiten
git clone https://github.com/kaiten-hq/kaiten.git
cd kaiten
docker compose --profile full up -d
# Console: http://localhost:5173
# API: http://localhost/api
# API docs: http://localhost/api/docsgit clone https://github.com/kaiten-hq/kaiten.git
cd kaiten
docker compose --profile full up -d
# Console: http://localhost:5173
# API: http://localhost/api
# API docs: http://localhost/api/docs2Create your first resources
# Create a customer
curl -X POST http://localhost/api/customers \
-H "Authorization: Bearer $TOKEN" \
-d '{ "name": "Acme Corp", "slug": "acme-corp" }'
# Create an entitlement
curl -X POST http://localhost/api/entitlements \
-d '{ "name": "Advanced Analytics", "type": "BOOLEAN" }'
# Create a license & bind entitlement
curl -X POST http://localhost/api/licenses \
-d '{ "name": "Enterprise", "type": "PAID" }'# Create a customer
curl -X POST http://localhost/api/customers \
-H "Authorization: Bearer $TOKEN" \
-d '{ "name": "Acme Corp", "slug": "acme-corp" }'
# Create an entitlement
curl -X POST http://localhost/api/entitlements \
-d '{ "name": "Advanced Analytics", "type": "BOOLEAN" }'
# Create a license & bind entitlement
curl -X POST http://localhost/api/licenses \
-d '{ "name": "Enterprise", "type": "PAID" }'3Evaluate a feature flag (OpenFeature)
provider := ofrep.NewProvider("http://localhost/api",
ofrep.WithHeaders(map[string]string{
"Authorization": "Bearer ksh_your_api_token",
}))
openfeature.SetProvider(provider)
client := openfeature.NewClient("my-service")
enabled, _ := client.BooleanValue(ctx,
"advanced-analytics", false, openfeature.EvaluationContext{})provider := ofrep.NewProvider("http://localhost/api",
ofrep.WithHeaders(map[string]string{
"Authorization": "Bearer ksh_your_api_token",
}))
openfeature.SetProvider(provider)
client := openfeature.NewClient("my-service")
enabled, _ := client.BooleanValue(ctx,
"advanced-analytics", false, openfeature.EvaluationContext{})Three APIs. One control plane.
REST API
Bearer token auth · ksh_* tokens
Full CRUD on all resources. Auto-generated OpenAPI spec served via Scalar at /api/docs.
GraphQL API
Endpoint: /api/graphql
Complex queries joining multiple entities. Batch queries for Console data fetching.
OFREP
Endpoint: /api/ofrep/v1/evaluate
OpenFeature Remote Evaluation Protocol. Standard feature flag evaluation from any OpenFeature SDK.
Type-safe clients. Generated from the spec.
Always in sync with the API. Full type safety. Every endpoint covered.
| Language | Package | OFREP | REST | Status |
|---|---|---|---|---|
| Go | github.com/kaiten-hq/kaiten-go | ✅ OpenFeature Go SDK | ✅ | Available |
| TypeScript | @kaiten/sdk | ✅ OpenFeature JS SDK | ✅ | Coming soon |
| Python | kaiten-sdk | ✅ OpenFeature Python SDK | ✅ | Coming soon |
| .NET | Kaiten.SDK | ✅ OpenFeature .NET SDK | ✅ | Available |
| Java | com.kaiten:sdk | ✅ OpenFeature Java SDK | ✅ | Coming soon |
27 events. Real-time delivery.
Every state change emits a typed webhook event. Guaranteed at-least-once delivery.
| Domain | Events |
|---|---|
| Customer | created, updated, deleted |
| License | created, updated, deleted, entitlement.assigned, unassigned, updated |
| Entitlement | created, updated, deleted |
| Instance | created, updated, deleted, deployed, migrated, usage_reached |
| Deployment Zone | created, updated, deleted, releaseDeployed |
| Release | created, deleted |
| Feature Flag | created, updated, deleted |
Kaiten CLI — Close the GitOps loop.
The bridge between your CI/CD pipelines and the Kaiten Control Plane.
# Push deployment state from your CI/CD
kaiten instances push-state \
--tenant-id="acme-corp" \
--instance-slug="acme-production" \
--release-version="v2.4.1" \
--status="deployed"
# Get instance details
kaiten instances get --slug="acme-production"
# Check entitlement usage
kaiten usage get \
--instance="acme-production" \
--entitlement="api-calls"# Push deployment state from your CI/CD
kaiten instances push-state \
--tenant-id="acme-corp" \
--instance-slug="acme-production" \
--release-version="v2.4.1" \
--status="deployed"
# Get instance details
kaiten instances get --slug="acme-production"
# Check entitlement usage
kaiten usage get \
--instance="acme-production" \
--entitlement="api-calls"