Installation
Krypton ships as a single Helm chart with four components: manager (controller + scaler), control plane (REST API + UI), gateway (public ingress + activator), and a per-pod proxy sidecar the manager injects into agent pods.
1. Install the chart
Section titled “1. Install the chart”helm install krypton oci://ghcr.io/kryptonhq/charts/krypton \ --namespace krypton-system \ --create-namespace \ --set controlPlane.databaseUrl="postgres://user:pass@host:5432/db"This installs the most recent chart; its appVersion pins the matching
image tags. To pin a specific release, pass --version 0.0.4 (latest
stable is v0.0.4).
controlPlane.databaseUrl points at a managed Postgres for the
agent-registry mirror. Leave it empty to use an in-memory store —
acceptable for dev or single-replica installs.
For production you will front the krypton-gateway Service with an L7
ingress (Gateway API, Nginx, and so on), covered in
Bring your own ingress once you have an agent running.
2. Open the UI and confirm health
Section titled “2. Open the UI and confirm health”The control plane serves a small operator UI:
kubectl -n krypton-system port-forward svc/krypton-control-plane 8090:8090open http://localhost:8090/ui/You should land on an Agents list (empty) and an MCP servers list (empty). If the page renders and both lists load without errors, the manager, control plane and Postgres mirror are all healthy.
3. Deploy the helloworld agent
Section titled “3. Deploy the helloworld agent”examples/agent/python/helloworld is an A2A agent that echoes its
input. It requires no LLM and no secrets, so it exercises the full
request path without additional configuration.
-
Apply the agent and forward the gateway:
Terminal window kubectl apply -f https://raw.githubusercontent.com/kryptonhq/runtime/main/examples/agent/python/helloworld/agent.yamlkubectl -n krypton-system port-forward svc/krypton-gateway 8080:8080 & -
Invoke it:
Terminal window curl -X POST http://localhost:8080/v1/agents/agents/helloworld/ \-H 'Content-Type: application/json' \-d '{"jsonrpc":"2.0","id":"1","method":"message/send","params":{"message":{"messageId":"m1","role":"user","parts":[{"kind":"text","text":"ping"}]}}}' -
You should get back:
{ "result": { "artifacts": [{ "parts": [{ "kind": "text","text": "Hello, World! I have received your request (ping)" }]}],"status": { "state": "completed" } } }
The agent is also visible in the UI now, with Phase: Ready and the
Invoke widget pre-populated against the same gateway endpoint.