Who is calling
A short-lived bearer credential or preshared identity header — never an anonymous connection.
01 / ENFORCE THE CALL
Wardline is the open-source control-plane proxy that sits between your AI agents and everything they call — MCP servers, LLM providers, other agents.
It enforces who's allowed to do what, how much they can spend, and writes a structured record of every decision — before the call ever reaches your upstream server.
go install github.com/kabirnarang39/wardline/cmd/wardline@latest
$ ./wardline serve --config wardline.yaml.example wardline proxy listening on :8080, policy=deny-by-default $ curl -X POST localhost:8080 \ -H "X-Wardline-Identity: agent-abc123" \ -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"read_file"}}' identity agent-abc123 tool read_file decision allow rule matched: policy.yaml:4 audit written → audit.jsonl
02 / THE CONTRACT
No exceptions, no bypass path — identity, policy, and audit are evaluated on every single request Wardline proxies, regardless of feature flags.
A short-lived bearer credential or preshared identity header — never an anonymous connection.
Matched against an explicit allow/deny rule set — YAML, OPA/Rego, or Cedar — deny by default.
A structured, tamper-evident record of the decision — written before the call reaches upstream.
03 / WHAT'S INSIDE
The proxy + policy + audit baseline is always on. Everything else ships behind a feature flag, so new capability lands without destabilizing what's already running.
| FEATURE | WHAT IT DOES | DOCS | STATUS |
|---|---|---|---|
| Baseline | Proxy + policy + audit | baseline | always on |
| Credential issuance | Short-lived RS256 JWT bearer tokens | credentials | shipped |
| RBAC | Kubernetes-shaped Role/RoleBinding tenant isolation | rbac | shipped |
| Budget enforcement | Per-identity spend limits | budget | shipped |
| Anomaly detection | Rate-spike, novel-tool, deny-rate, ML z-score heuristics + auto-block | anomaly | shipped |
| SSO | OIDC-bootstrapped identity | credentials | shipped |
| mTLS/SPIFFE bootstrap | Identity from a verified SPIFFE ID | credentials | shipped |
| SCIM | IdP-provisioned RBAC bindings | scim | shipped |
| Web dashboard | Read-only ops view of policy, audit, anomalies | web_ui | shipped |
| Federation | Cross-instance anomaly correlation over signed peers | federation | shipped |
| gRPC transport | Same control plane on a gRPC listener | grpc_transport | shipped |
| Tracing | OpenTelemetry OTLP spans | otel_tracing | shipped |
| Compliance export | Checksum-verified, optionally signed evidence bundle | export-evidence | shipped |
| Policy-pack marketplace | Embedded starter policy templates | policy-pack | shipped |
| HA deployment | Shared signing key, Postgres revocation, PDB | ha | shipped |
04 / PRODUCTION-READY
Real /healthz and /readyz endpoints, a PodDisruptionBudget, pod anti-affinity, Postgres-backed shared revocation, and a persistent signing key so credential issuance is correct across replicas — not just possible.
05 / FAQ
Anything not answered here is answered in the full docs.
No. Wardline is a reverse proxy that sits in front of it — your MCP server, LLM provider, or agent endpoint is unchanged. Point clients at Wardline instead of the upstream directly.
Every policy backend fails closed. An evaluation error is treated as a deny, never a silent allow — this is enforced at the usecase layer regardless of which backend (YAML, OPA, Cedar) is configured.
No — it's an optional feature flag. Without it, identity is carried via a preshared X-Wardline-Identity header. With it, agents exchange a preshared secret for a short-lived signed bearer token.
Apache 2.0, fully open source. Read the license.
READY TO ENFORCE