The Containment Era is here. →Explore

Live · Jun 10, 2026
Self-Hosted Enterprise Chat EditionLibreChat · EKS · AKS · GKE

Enterprise AI chat has no enforcement layer beneath it. Until now.

LibreChat delivers on the self-hosted data-residency promise at the application layer. It does not ship with network enforcement below it. Any LLM provider, any MCP server, any compromised dependency can reach the open internet by default. This VCA puts the enforcement layer in place — and derives it directly from your existing librechat.yaml.

Aviatrix DCF · Spoke Gateway in-pathEKS · AKS · GKENo image rebuild · No sidecar · No code changes
The threat this solves

Self-hosted without containment. The gap is below the application.

LibreChat keeps data in your environment at the application layer. Without network enforcement below it, the blast radius of a compromise is the entire internet — any component of the open-source stack can reach any destination. The kill chain every self-hosted deployment needs to plan before it calls its containment posture complete.

01

Supply-chain compromise

Other controls — SCA, image scanning

A compromised npm package, tampered container image, or poisoned Helm chart enters the LibreChat dependency tree. No known CVE at install time — passes SCA scanning. Code execution inside the chat stack.

02

Unauthorized LLM provider call

Other controls — RBAC, IAM

Compromised component or misconfigured administrator adds an unapproved LLM provider to librechat.yaml. Without the CI shim, no network rule is generated. The call completes — invisible until something goes wrong.

03

MCP server lateral reach

Other controls — app-layer policy

A MCP-based tool server reaches destinations beyond its authorized downstream APIs. Conversation data and retrieved documents are accessible in the tool server's process — any MCP server with unrestricted egress is a potential exfiltration channel.

04

Exfiltration attempt — blocked

✓ Aviatrix DCF default-deny blocks

Malicious code initiates outbound HTTPS to attacker-controlled host. TCP SYN traverses the Aviatrix Spoke Gateway. Destination is not in any permit rule. Connection never completes. Data has nowhere to go.

05

Audit trail

✓ CoPilot FlowIQ · human-readable rule name

Blocked connection logged at the Spoke Gateway with pod identity, destination FQDN, policy rule name, and timestamp. CoPilot FlowIQ provides per-pod traffic analysis — full attribution for SOC 2, ISO 27001, and EU AI Act audit requirements.

How it works

Three enforcement layers. Zero code changes.

Enforcement runs at the network infrastructure layer, outside the application's trust boundary entirely. No agent to install. No process to kill. No bypass risk. The result is a governed boundary around the entire chat stack — LLM provider egress, per-MCP allow-lists, and supply-chain containment in a single overlay.

1

CI shim — policy derived from config, not authored by hand

The CI pipeline shim reads your existing librechat.yaml and generates the exact Aviatrix Kubernetes CRD manifests encoding those declarations as enforceable network policy. A new provider in the config produces a new WebGroup entry in the PR diff. A new MCP server produces a new per-server allow-list scoped to its authorized downstream APIs. A removed entry removes the corresponding rule. The diff appears alongside the config change in the same pull request and gets reviewed at the same time. An administrator who adds an unauthorized provider cannot merge without surfacing an unreviewed egress path.

2

Spoke Gateway — network-level containment at the pod boundary

The Aviatrix Spoke Gateway deploys into the Kubernetes cluster. Pod identity — namespace and label selectors — is the SmartGroup model. Every outbound connection from every LibreChat pod traverses DCF inline before the first packet leaves the cluster. Zero bypass risk: no software process can circumvent enforcement. The registry WebGroup allows only the exact OCI registries the LibreChat Helm chart is known to use — a compromised dependency that tries to beacon outbound hits the deny rule before the socket opens.

3

Transparent TLS decryption — URL-path visibility and AgentGuard insertion point

The shim loads the Aviatrix CA certificate into the LibreChat container via a Kubernetes ConfigMap mounted as NODE_EXTRA_CA_CERTS — no image rebuild required. The Spoke Gateway decrypts LLM provider traffic inline. CoPilot shows URL paths, not just destination FQDNs. The decrypted traffic path is the insertion point for Aviatrix AgentGuard — prompt inspection, output classification, and tool-argument validation plug in as those capabilities ship, with no architectural change to the deployment. Requires Controller 9.0+.

Why Kubernetes NetworkPolicy doesn't solve this

Kubernetes NetworkPolicy is IP-based, doesn't survive pod restarts reliably, and has no FQDN-aware filtering. It cannot distinguish pypi.org from evil.attacker.io — both are TCP/443. Aviatrix DCF filters by FQDN using SNI inspection and optional transparent TLS decryption, with policy tied to pod identity that survives scaling events and restarts automatically.

Enforcement architecture

Secure Enterprise Chat VCA — Config-to-Policy Shim PipelineLibreChat's own config is the source of truth — the CI shim derives Aviatrix DCF policy from it, so the allow-list can't drift from the app1 · App config (in Git)librechat.yamlendpoints: custom: - name: OpenAI baseURL: https://api.openai.com/v1mcpServers: obot: url: https://obot. internal.example.comopenidIssuer: https://login.example.comregistry: ghcr.io/.../librechat2 · CI shim (runs on PR)shim generategenerate.py : container CLI• endpoints[] → provider FQDNs• mcpServers[].url → MCP groups• internal Obot → wg-mcp-obot• OIDC issuer → wg-sso-provider• --fetch-mitm-ca from Controller3 · Generated Aviatrix CRDsgenerated/webgroups.yamlapiVersion: aviatrix.com/v1alpha1kind: AviatrixWebGroupmetadata: name: wg-approved-llm-providersspec: selector: [api.openai.com, api.anthropic.com]kind: AviatrixWebGroup name: wg-mcp-obotspec: selector: [obot.internal.example.com]+ AviatrixSmartGroup · DistributedFirewallingPolicy+ ConfigMap aviatrix-mitm-ca (MITM CA → mounted into pods)4 · PR review gatePR diffreviewed +merged?mergeShim run = the governance step:no diff → no new egress.5 · GitOps applyArgoCD / Fluxreconcile CRDsonto the cluster6 · EnforcementDCF live on Spoke GWdefault-deny + TLS decryptpod-identity SmartGroupsflows → CoPilot FlowIQ= the traffic-inspection diagram✗ unreviewed egress in the diff → block the merge, fix the configOptional: combine with the Obot VCAWhen MCP servers sit behind an internal Obot gateway, every mcpServers[].url resolves to one internalendpoint — the shim emits a single wg-mcp-obot, and Obot's own DCF rules contain tool-server egress.Flow: librechat.yaml → shim generate → Aviatrix CRDs → PR review → ArgoCD / Flux → DCF enforced on Spoke GWThe network allow-list is a derived artifact of the application config — it can't silently drift from what LibreChat is configured to do.
Policy pack

DCF policy pack — rules in priority order.

First match wins. Deploy all rules in monitor mode first; promote to enforcement rule by rule after validating against production traffic. The dataplane never reloads on rule changes.

Rules (in priority order)

PriRule nameSourceDestinationActionNotes
10allow-llm-providerslibrechat-pods SmartGroupavx-ai-llm-providersPERMITTCP 443 · Aviatrix-managed WebGroup. Shim populates only providers declared in librechat.yaml.
15allow-mcp-per-serverlibrechat-pods SmartGroupPer-server FQDN WebGroupPERMITTCP 443 · One WebGroup per MCP server. Generated by shim. Reviewed in PR alongside config change.
20allow-oci-registryAll chart podslibrechat-oci-registriesPERMITTCP 443 · DECRYPT_NOT_ALLOWED · Exact OCI registries the LibreChat Helm chart uses.
25deny-supply-chain-iocAll podssupply-chain-fqdn-groupDENY + LOGURL filter · DECRYPT_ALLOWED · Blocks IoC URL paths on hosts also in permit list. Requires Controller 8.2+.
30allow-k8s-control-planeAll podsKubernetes API FQDNsPERMITDECRYPT_NOT_ALLOWED · EKS/AKS/GKE API server, ECR, ACR, Artifact Registry.
40deny-data-store-internetMongoDB / PostgreSQL podsANY externalDENY + LOGAll protocols · Conversation data store hard-isolated from internet.
1000default-denyAll podsANYDENY + LOGAll protocols · Final catch-all. Every match logged to CoPilot FlowIQ with pod identity, destination, rule name, timestamp.

SmartGroup and WebGroup objects

ObjectTypePurpose
librechat-podsNamespace + label SmartGroupMatches LibreChat API server, MCP server, and UI pods. Source identity for all egress rules.
avx-ai-llm-providersAviatrix-managed AI WebGroupCurated, auto-updated destination list for major LLM API providers. Shim populates only providers in librechat.yaml.
mcp-<server-name>Per-server FQDN WebGroupOne object per MCP server, scoped to authorized downstream API FQDNs. Generated by shim from librechat.yaml MCP stanza.
librechat-oci-registriesFQDN WebGroupExact OCI registries the LibreChat Helm chart pulls from. Set via Terraform variable.
supply-chain-fqdn-groupFQDN WebGroupHosts requiring URL-path enforcement (e.g. raw.githubusercontent.com). Used with DECRYPT_ALLOWED. Requires Controller 8.2+.

What this architecture governs — and what it does not

Out of scope

Prompt content · tool arguments · model responsesAI guardrail layer. Aviatrix governs network reachability; guardrails govern content. Both required.

Shadow AI discoveryAgentGuard Shadow AI Discovery finds every AI workload via cloud telemetry. Deploy discovery before containment.

Out of scope — v1

Init-container CA deliveryShim runs at CI time for v1. Init-container delivery deferred to v1.1.

URL-path enforcement rulesURL-path visibility ships in v1; URL-path enforcement rules require URL WebGroup GA. Deferred to v1.1. Do not promise for v1.

Assets & documentation

Everything your team needs.

Requires Aviatrix Enterprise · Controller 8.2+ · 1 Spoke Gateway per Kubernetes clusterNew to Aviatrix? Start the Enterprise free trial — VCAs included at no extra cost. Already deployed? Pull the Terraform from GitHub.
Technical Brief

Reference Architecture

Prerequisites, SmartGroup and WebGroup design, full DCF policy pack, CI shim integration guide, TLS decryption configuration, and Kubernetes version compatibility. For platform engineers deploying the blueprint.

Download PDF →
Security Architecture Brief

Threat Model & Enforcement

LibreChat supply-chain threat model, full kill chain with point of intervention, three enforcement layers, why Kubernetes NetworkPolicy is insufficient, and compliance evidence for SOC 2, ISO 27001, and EU AI Act. For security architects.

Download PDF →
Solution Brief

Field & Buyer Overview

Threat narrative, three things your current stack can't do, compliance proof points, and discovery questions for security conversations. For security and platform teams evaluating the architecture.

Download PDF →
GitHub

Full Terraform Overlay + CI Shim

Spoke Gateway, Kubernetes CRD manifests, CI pipeline shim, WebGroup and DCF rule pack, ConfigMap CA injection. One terraform apply on any existing EKS, AKS, or GKE cluster. Deploys in under 20 minutes.

Available soon
Video

Attack simulation

Lab recording. A supply-chain-compromised package inside the LibreChat dependency tree attempts to beacon to an attacker-controlled domain. The DCF default-deny rule fires before the TCP handshake completes. CoPilot FlowIQ logs the attempt with full pod identity and rule attribution.

Available soon

Trusted by enterprise security teams

SOC 2 Type II

Independently audited

ISO 27001

Certified

500+ enterprises

Including 10% of the Fortune 500

Zero data-plane access

Aviatrix never touches your traffic

Known constraints

Documented before you find them in production.

Lab-validated limitations and workarounds for the LibreChat on Kubernetes architecture. Published upfront so your POC matches the docs.

Shim requires CI access to librechat.yaml

The pipeline shim must have read access to the application config at CI time. For teams using secrets-injected config, the shim can read from a mounted secret or secrets manager call. The Terraform overlay does not depend on a specific shim invocation method.

TLS decryption requires Controller 9.0+ and ConfigMap CA

URL-path visibility in CoPilot requires Controller 9.0 and the Aviatrix MITM CA loaded via ConfigMap as NODE_EXTRA_CA_CERTS. No image rebuild required. On Controller 8.2, SNI-based domain filtering is fully enforced and activates automatically on upgrade to 9.0.

URL-path enforcement deferred to v1.1

Transparent decryption in v1 gives URL-path visibility in CoPilot. URL-path enforcement rules (deny specific API routes on a permitted FQDN) require URL WebGroup GA. This does not weaken the v1 containment story — all egress is governed at the FQDN level. Do not promise for v1.

Obot VCA dependency for combined architecture demo

The Obot VCA contains the MCP hosting platform; this VCA contains the chat front-end and LLM provider egress. Both need to ship before the combined architecture can be demonstrated end-to-end. Do not promise the combined story before both blueprints are deployed.

Stacks with the Obot VCA

Complete enterprise AI chat — two VCAs, one enforcement plane

The Obot VCA contains the MCP hosting platform; this VCA contains the chat front-end and LLM provider egress. When Obot is your MCP platform, LibreChat's MCP client points at the Obot gateway — the shim detects this pattern and emits a single internal WebGroup entry for the Obot endpoint. Together the two VCAs cover the complete enterprise AI chat architecture: chat UI, LLM provider governance, and MCP tool server hosting, each with its own containment layer on the same enforcement plane.

Deploy today

The containment layer is built.
The policy pack is on GitHub.

Run the CI shim against your actual librechat.yaml. The output is your policy — not a sample, not a template.

NEW TO AVIATRIX

Start with Enterprise — VCAs included free

Subscribe on AWS or Azure Marketplace, deploy Enterprise in under 15 minutes, then deploy this VCA on top. 30-day free trial — VCAs included.

Subscribe through AWS or Azure Marketplace · 30-day free trial · No contract

ALREADY ON ENTERPRISE

Pull the Terraform from GitHub

Full Terraform overlay, CI shim, WebGroup and DCF policy pack. Deploys on any existing EKS, AKS, or GKE cluster in under 20 minutes. Destroy cleanly with one command.

Get the Terraform →

Controller 8.2+ · 1 Spoke Gateway per cluster · No image rebuild · No sidecar