Self-Hosted Kubernetes
Run AIControls entirely inside your own cluster. Every audit event, policy decision, and token budget stays in your infrastructure — no data leaves your environment.
What self-hosted K8s mode is
The self-hosted deployment runs the AIControls binary as a Kubernetes Deployment, backed by a PVC-mounted SQLite database and configured via Helm. There is no dependency on the Nirmata SaaS platform — policy sources, audit storage, and identity validation are all cluster-local.
You get the same governance pipeline as the managed offering: MCP proxy, LLM proxy, CEL policies, HITL approval, token budgets, audit log, and the admin UI. The difference is operational: you own the infrastructure, control the upgrade cadence, and choose where data lives.
Architecture
┌──────────────────────────────────────────────────────────────────┐
│ Kubernetes Cluster │
│ │
│ ┌─────────────────────┐ admission webhook │
│ │ Kyverno │──────────────────-──── ┐ │
│ │ (optional) │ │ │
│ └─────────────────────┘ ▼ │
│ ┌────────────────────┐ │
│ ┌─────────────┐ MCP calls │ │ │
│ │ Agent Pod │─────────────────▶│ AIControls │ │
│ │ (Claude │ │ │ │
│ │ Code / │ LLM calls │ ┌──────────────┐ │ │
│ │ Cursor / │─────────────────▶│ │ CEL Policy │ │ │
│ │ custom) │ │ │ Engine │ │ │
│ └─────────────┘ │ └──────────────┘ │ │
│ │ ┌──────────────┐ │ │
│ │ │ Audit Log │ │ │
│ │ │ (SQLite) │ │ │
│ │ └──────────────┘ │ │
│ │ ┌──────────────┐ │ │
│ │ │ HITL Queue │ │ │
│ │ └──────────────┘ │ │
│ └────────┬───────────┘ │
│ │ │
│ ┌─────────────────────┼──────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌─────────────────┐ ┌──────┐ │
│ │ MCP Servers │ │ Upstream LLMs │ │ HITL │ │
│ │ (kubectl, │ │ (Anthropic, │ │ Chan.│ │
│ │ bash, │ │ OpenAI, │ │(Slack│ │
│ │ postgres…) │ │ Bedrock, │ │/mail)│ │
│ └──────────────┘ │ Ollama/vLLM) │ └──────┘ │
│ └─────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
Ports:
| Port | Protocol | Purpose |
|---|---|---|
:8080 | HTTP | MCP proxy (SSE + stdio) + OpenAI-compatible LLM proxy |
:8081 | HTTP | Admin UI + REST API |
PostgreSQL backend is required for production HA installations.
replicaCount > 1 is only safe with the PostgreSQL backend — with the default SQLite backend, two replicas will race on the same PVC. If you're staying on SQLite, keep replicaCount: 1 behind a load balancer that routes all traffic to a single pod.
Choose your path
ClusterOIDCIssuer, and what passthrough mode means for your threat model.