
# Norviq
**Runtime policy enforcement for LLM agent tool calls on Kubernetes.**
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fnorviq-dev%2Fnorviq?ref=badge_shield&issueType=security)
[](LICENSE)
[](https://kubernetes.io)
[](https://www.openpolicyagent.org)
[](https://docs.norviq.dev)
**[Documentation](https://docs.norviq.dev)** · **[Website](https://norviq.dev)** · **[Getting started](https://docs.norviq.dev/getting-started/)**
Norviq is a policy enforcement point (PEP) that sits between an AI agent's reasoning loop and the
tools it can call. Every tool call is intercepted, evaluated against OPA/Rego policies scoped to the
workload's Kubernetes/SPIFFE identity, and then **allowed, blocked, escalated, or audited** — before
the tool runs. It turns "the model decided to call `execute_sql` / `send_email` / `shell`" from an
implicit trust into an enforced, per-identity, auditable decision.
---
## Why
LLM agents are given real tools — databases, shells, email, cloud APIs, internal services. The model
chooses which to call at runtime, and a single prompt injection or reasoning error can turn a benign
agent into an exfiltration or destruction path. Norviq puts a deterministic, policy-driven gate on
that surface, so a tool call only happens if an explicit policy for that agent's identity allows it.
## How it works
Every tool call takes a round trip through the engine before it executes:
```mermaid
sequenceDiagram
autonumber
participant Agent as Agent (LangGraph / SDK)
participant PEP as Norviq sidecar / SDK
participant Engine as Norviq API / engine
participant OPA as OPA / Rego
Agent->>PEP: tool call — {tool, params, identity}
PEP->>Engine: POST /evaluate
Note over Engine: resolve SPIFFE identity