New Edge PDP
A Policy Decision Point with an embedded on-disk database, kept in sync over a durable event stream.
The New Edge PDP is a ground-up rewrite of the PDP runtime, shipped as permitio/pdp-v3. It runs one container per Permit environment, holds a local, on-disk copy of that environment's policy and authorization data, and answers authorization queries with no network call in the decision path.
The New Edge PDP is a new deployment option, not a replacement. The container PDP (permitio/pdp-v2) remains fully supported and continues to be the right choice for the capabilities listed under Feature Parity.
It is currently in early access and enabled per account. Contact us to have it turned on.
Why a new runtime
The container PDP holds your authorization data inside OPA, and OPA's data store is a single in-memory JSON document. That one design choice sets two ceilings.
It is not a graph store
A JSON document has no indexes and no concept of edges. It cannot be optimized for graph traversal, or for the granular, relationship-heavy queries that ReBAC and derived roles depend on — questions like "does this user reach this resource through some chain of roles and relationships?"
The New Edge PDP moves those questions out of the JSON document entirely. Relationship data lives in an embedded database built for graph traversal, and OPA queries it over a local loopback while it evaluates policy. Policy evaluation and graph traversal each run on something designed for the job.
It is expensive in memory
Because the fact graph lives in memory, a large environment needs a large PDP. OPA's own documentation is direct about the cost:
Memory usage scales with the size of the policy (i.e., Rego) and data (e.g., JSON) that you load into OPA. Raw JSON data loaded into OPA uses approximately 20x more memory compared to the same data stored in a compact, serialized format (e.g., on disk).
The New Edge PDP stores exactly that compact, serialized form on disk, and keeps a bounded cache in memory. Memory becomes a number you set rather than a function of how much data your environment holds.
Updates cost a round trip
There is a third ceiling, in how data arrives rather than where it lives. The container PDP refreshes by reacting to a notification and then fetching the changed data back from Permit's API. A notification says that something changed; a second call is needed to find out what. And catching up after a disconnect means re-fetching, because there is no server-side record of what a given PDP has and hasn't seen.
On the New Edge PDP, updates arrive already containing the change, and the control plane durably retains each PDP's unacknowledged changes until that specific PDP confirms it applied them.
What it gives you
- Decisions that never leave the container. Every hop in the request path is loopback or local disk, so no authorization query depends on reaching Permit.
- Memory you control. The data set lives on disk; a configurable cache bounds what is resident.
- Sync that survives disconnection. Changes are retained per-PDP, server-side, until that PDP acknowledges them — no re-fetch on reconnect.
- Availability over freshness. A control-plane outage costs you freshness, never the ability to answer. The PDP serves from its local copy indefinitely, and reports how stale it is.
See Architecture for what runs inside the container, and How It Works for how the local copy is kept current.
Choosing between the two
| Choose the container PDP when you need | Choose the New Edge PDP when you need |
|---|---|
| ABAC, condition sets, user or resource sets | Large data sets without a large memory footprint |
| Policy-as-Code / custom Rego bundles | Relationship queries served from a graph-capable store |
| Read-your-own-writes / local facts | Decisions that never depend on reaching Permit's API |
| URL-based enforcement or Kong integration | Sync that survives long disconnections without a re-fetch |
| Custom data sources | To drop the Python and OPAL layer entirely |
A Prometheus /metrics pipeline, or deployment without persistent storage | Observability through structured logs and detailed health endpoints |
Both connect to the same Permit environment and enforce the same policies you author in Permit. You can run them side by side while you evaluate.
See Feature Parity for the full comparison.
Related documentation
- Architecture — what runs inside the container and the request path
- How It Works — sync, consistency, cold start, and resource profile
- Feature Parity — capability comparison against the container PDP
- Deployment — requirements, observability, and the security model
- Configuration — environment variable reference (beta)
- PDP Overview — deployment models for the container PDP
- Cloud PDP Capabilities — the managed PDP's capability envelope, which the New Edge PDP mirrors
- Monitoring PDPs — fleet visibility in the Permit dashboard