Architecture¶
KubeManta runs entirely inside your own Kubernetes cluster: the agent (with its browser-terminal sidecar) and the dashboard, plus a separate, isolated cluster-admin pod only when Expert Mode is enabled. It is read-only by default, uses your own LLM key, and your cluster data never leaves your infrastructure.
How it works¶
flowchart TB
team["Your team<br/>(browser)"]
subgraph cluster["Your Kubernetes cluster"]
direction TB
ui["KubeManta Dashboard<br/>(UI pod)"]
subgraph agentpod["Agent pod"]
agent["KubeManta Agent<br/>observability · AI diagnosis · SRE automation"]
term["Terminal sidecar<br/>PTY · kubectl/k9s/helm<br/>(admins only, own ServiceAccount)"]
end
expert["Expert-exec pod<br/>cluster-admin token<br/>(only with Expert Mode)"]
workloads["Your workloads<br/>& cluster API"]
ui --> agent
agent -.->|"bearer-auth HTTP<br/>(NetworkPolicy-restricted)"| expert
agent -->|read-only by default<br/>writes are opt-in| workloads
expert -->|privileged ops<br/>ephemeral kubeconfig| workloads
end
team --> ui
agent -->|"Bring your own LLM<br/>(your API key, or local Ollama<br/>for full data residency)"| llm["Claude / your LLM"]
agent -.->|verifies your license| lic["KubeManta<br/>License Service"]
subgraph onboard["Getting started"]
direction TB
site["kubemanta.com<br/>sign up — Free or Pro"]
key["Your license key"]
images["KubeManta<br/>Container Registry"]
site --> key
key -->|"helm install --set license.key=…"| cluster
key -.->|authenticates image pulls| images
images --> cluster
end
Key design points¶
In-cluster only. KubeManta deploys as three pods: the agent (with its browser-terminal sidecar container), the dashboard, and — only when Expert Mode is enabled — a separate, isolated pod that alone holds the cluster-admin token. Nothing about your workloads is sent to KubeManta — K8s API calls are made in-cluster via a ServiceAccount.
Read-only by default. KubeManta observes and diagnoses; any write or remediation action is opt-in and requires either a Helm flag (rbac.allowWrites=true) or explicit user approval in the UI.
Bring your own LLM. Use your own Claude, OpenAI, Gemini, or Groq key. For full data residency (no cluster data leaving your network), point it at a local Ollama instance.
License-as-pull. Your license key is the registry password for registry.kubemanta.com. One --set license.key=YOUR_KEY flag is all that's needed — the chart builds the pull secret automatically.
Your data stays yours. AI analysis runs in your cluster using your key. No prompts, logs, or cluster data are retained by KubeManta. The licence service receives licence validation and a heartbeat (your licence key and a cluster fingerprint) and, by default, the cluster's node count — a number only. Everything else that leaves the cluster is something you configure; see Network Egress.
Request routing¶
Browser
└─► https://your-hostname (Ingress / GCE · ALB · Traefik)
│
├── /api/agent/terminal/ws/* ──────► kubemanta-agent:8080 (WebSocket, direct)
│
└── /* ────────────────────────────► kubemanta-ui:3000 (the dashboard)
│
│ /api/agent/* → proxied over in-cluster DNS
│
└─► kubemanta-agent:8080 (the agent, HTTP)
WebSocket connections (PTY terminal) are routed directly from the Ingress to the agent — they are not proxied through the dashboard, which does not handle the HTTP→WebSocket upgrade.
Components¶
| Component | Role | Default resources |
|---|---|---|
| kubemanta-agent | The agent — observability, AI diagnosis, SRE automation | 250m CPU / 1 Gi request; 2 CPU / 2 Gi limit |
| kubemanta-ui | The dashboard | 1 CPU / 256 Mi limit |
| Terminal sidecar | Browser PTY for admins, inside the agent pod as a separate unprivileged OS user; kubectl there uses its own ServiceAccount, <release>-terminal |
2 CPU / 8 Gi limit |
| kubemanta-expert-exec | Separate, isolated pod holding the cluster-admin token (only when expertMode.enabled=true) |
1 CPU / 256 Mi limit |
| Embedded database | PVC-backed, in-cluster only | 1 Gi PVC (configurable) |
Three security contexts¶
Privilege is split so no single process holds everything:
- Agent — the database, encryption key, session secrets, SSO config; a read-only reader ServiceAccount by default.
- Expert-exec pod — the only place the
cluster-admintoken lives (when Expert Mode is on). The agent delegates privileged ops to it over a bearer-authenticated, NetworkPolicy-restricted hop; it builds an ephemeral kubeconfig that is discarded after every operation. - Terminal sidecar — its own storage and a distinct unprivileged OS user in its own container; the database and encryption key file are not mounted into it. Its
kubectlruns as a separate Kubernetes identity, the<release>-terminalServiceAccount, whose short-lived token the agent mints: the agent's read permissions (and its writes, withrbac.allowWrites, though never in KubeManta's own namespace), but never the Secrets in KubeManta's own namespace, and elsewhere only Secrets in namespaces listed interminal.secretsNamespaces.terminal.clusterCredentials.enabled=falsewithholds the credential altogether.
See Security Model.
Mobula¶
Mobula is KubeManta's live model of the cluster — what exists, how it is connected, and what is currently wrong. It is assembled on demand from the agent's existing collectors and operational memory, so there is no graph store to run or back up. It grounds the AI Copilot (answers cite the resources they came from) and is exposed structurally at GET /graph/subgraph / GET /graph/entity/{id} (Free, deterministic topology). The Mobula view in the dashboard is the visual UI over that same surface.
K8s API access¶
The agent talks to the Kubernetes API with a single pooled, reused connection for efficiency.
| API group | Resources |
|---|---|
| core/v1 | pods, pods/log, services, endpoints, configmaps, secrets*, events, PVCs, nodes, namespaces |
| apps/v1 | deployments, statefulsets, daemonsets, replicasets |
| networking/v1 | ingresses, networkpolicies |
| batch/v1 | jobs, cronjobs |
* Secrets read is on by default (rbac.readSecrets=true); Secret delete is never granted.
LLM providers¶
Supported providers (configured by an admin in AI Settings; the key is stored encrypted in-cluster):
| Provider | Notes |
|---|---|
| Anthropic | Claude models |
| OpenAI | GPT-4, o-series |
| Google Gemini | Gemini Pro / Flash |
| Azure OpenAI | Enterprise Azure endpoint |
| Groq | Fast inference |
| Ollama | Local / self-hosted — full data residency |
| Custom | Any OpenAI-compatible endpoint |
MCP server¶
GET /mcp/tools and POST /mcp/tools/call expose KubeManta's read-only K8s tools in Model Context Protocol format for external AI agents (Claude Desktop, Cursor, custom agents). Authenticated with a per-user API key (X-API-Key); available on every tier, and read-only on all of them. See the MCP server guide, and the API reference for the same key used against the ordinary REST surface.
Related pages¶
- Install — step-by-step install guide
- Helm Values — full configuration reference
- Security Model — 3-pod isolation, RBAC, auth, hardening
- AI Copilot — Mobula
- MCP Server — read-only tools for external agents
- Cloud Permissions — least-privilege IAM for cloud topology