Prerequisites
A Kubernetes cluster with an ingress controller
A Kubernetes cluster with an ingress controller
Kubernetes 1.27 or later with a working
kubectl context. The examples use
the Traefik ingress class; substitute your own with ingress.className.A storage class that supports ReadWriteOnce
A storage class that supports ReadWriteOnce
Each user workspace and the bundled database request a
ReadWriteOnce
volume. The examples use rook-ceph-block. Set your own with
workspace.storageClass and postgresql.storageClass.Helm 3.8 or later
Helm 3.8 or later
Helm 3.8 introduced stable OCI registry support, which the chart uses for
its alternative install path.
An OpenAI-compatible API key
An OpenAI-compatible API key
Any endpoint that implements
/chat/completions and /models works,
including OpenAI, OpenRouter, Together, Groq, vLLM, and Ollama behind HTTPS.Create the namespace and secrets
The chart reads its sensitive configuration from a Kubernetes Secret. Generate the values locally so they never enter your shell history or a values file.1
Create the namespace
2
Generate and store the application secrets
BETTER_AUTH_SECRET signs session cookies and SETTINGS_ENCRYPTION_KEY
encrypts stored provider credentials. Both must be at least 32 characters.
SETUP_CLAIM_TOKEN prevents a stranger from claiming the installation
before you do.SETTINGS_ENCRYPTION_KEY with your database. Losing it makes every
stored provider credential unreadable.3
Add an image pull secret for private images
Skip this step if the images are public.
Install the chart
1
Add the Helm repository
2
Write a values file
Create
values.yaml. publicUrl must be the exact external URL, because it
is used for cookies, redirects, and the workspace callback address.3
Validate before applying
Render the exact values and dry-run them against the live API server. This
catches admission errors before anything is created.
4
Install and wait for rollout
5
Confirm the health endpoint
{"ok":true}. This endpoint checks database
connectivity, so a 503 usually means DATABASE_URL is wrong.Claim the administrator account
1
Read the claim token
2
Complete setup in the browser
Open
https://chat.example.com. The setup form asks for a name, email,
password of at least 12 characters containing a letter and a number, and the
claim token.3
Verify that setup is closed
{"required":false,...}. If it still reports true, the account was
not created and the installation is still claimable.Connect a model and run a task
1
Add a provider
Go to Settings → Providers and add an OpenAI-compatible endpoint with
its base URL and API key. Use Test connection, which requests
<base URL>/models through the server’s outbound URL guard.HTTPS is required by default, and private, loopback, link-local, and
metadata addresses are rejected. See
Model providers for local-endpoint options.
2
Add a model
Add a model to the provider with its provider model ID, a display name, a
context-window limit, and a maximum output token count. The first model you
create becomes your default automatically.
3
Give the agent something to do
Start a chat and ask for real work, for example:The first message starts your workspace pod, which takes a few seconds. The
agent writes files, runs Python, and returns download links.
Next steps
Invite users
Create invitations, add local accounts, and connect an OIDC provider.
Brand the installation
Set the product name, logo, favicon, and colors at runtime.
Understand the lifecycle
How idle workspaces scale to zero and keep their data.
Review security
What the isolation model does and does not guarantee.