A Layer 7 security and governance control plane for enterprise AI.
Part of AISecShield. It sits between everything in your organisation that consumes AI and everything that serves it — inspecting, governing and recording every request and every response.
Your applications used to call AI providers directly. Now they call the AI Mesh Firewall, and it calls the providers. Because everything passes through one place, that place can check who is asking, check what they are asking, decide which model should answer, check what came back, and write down what it decided.
Keep the OpenAI SDK you already use. Change the base URL and the key.
import openai
client = openai.OpenAI(
base_url="<https://aimeshgateway.zeroshield.ai/v1>", # <- only change #1
api_key="zs_your_gateway_key", # <- only change #2
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Summarise our refund policy."}],
)
No ZeroShield SDK, no wrapper, no middleware. Async, streaming, with_raw_response and every OpenAI-compatible framework work unchanged.
Get your key from the console: AI Gateway & Traffic Ingress → Gateway Keys → + New Key. It begins zs_ and is shown once.
| Submodule | Control point | The question it answers |
|---|---|---|
| 1.1 AI Gateway & Traffic Ingress | Entry to the estate | Who is calling, on whose behalf, within what limits? |
| 1.2 Policy Management | Authority over every other module | What are the rules, and which version is in force? |
| 1.3 RAG & Vector DB Firewall | Retrieval and ingestion | What may enter the index, and what may be retrieved? |
| 1.4 Context Assembly & MCP | Prompt assembly and tool use | What may be assembled, and what may an agent invoke? |
| 1.5 Multi-Model Governance | Model selection | Which model may serve this, under which constraints? |
| 1.6 Model Isolation & Kill-Switch | Service state | Is this model permitted to serve traffic right now? |
| 1.7 Output Guardrails | Response release | May this response be released, and in what form? |
Every request ends in one of six outcomes:
| Outcome | Your application sees | You see |
|---|---|---|
allow |
A normal response | A record confirming nothing matched |
monitor |
A normal response | A record showing what matched, with no action taken |
flag |
A normal response | A record, plus an item for review |
redact |
A response with sensitive values masked | A record naming the classes that were masked |
rewrite |
A safe replacement answer | A record identifying the rule applied |
block |
A structured refusal with a reference | A record, plus an incident to work |
monitoris deliberately distinct fromallow, so you can tell "a threat was seen but not enforced" from "nothing was found".