Skip to main content
The PEP is deliberately minimal, a single HTTP call per gated step and a fail-closed default. Here’s everything it needs.

Supported runtimes

Android dependencies

The reference Kotlin client depends on:
On Android, calls are made off the main thread (the client uses Dispatchers.IO). Production builds must point at the managed PDP over HTTPS (https://api.akhara.dev); never ship a cleartext endpoint.

Configuration

Network posture

Egress

Outbound HTTPS from the agent runtime to the PDP only. The PDP does not call back into your runtime or tools.

Latency budget

Each gated step blocks on one round-trip. Budget for it; a slow PDP degrades to blocked, never to unguarded.

Host allowlist

Sandbox boundaries restrict egress to the workspace domain (e.g. *.internal.akhara.dev) plus the PDP.

Secrets

Agent baseUrl/API keys are held server-side by the PDP and never returned in reads (only a masked key).

What the PEP guarantees

  • Synchronous: resolves to a verdict before your side effect runs.
  • Fail-closed: any error, timeout, or unrecognized verdict → BLOCK (reliability-4 · Fail-Closed Defaults). See Fail-closed.
  • Stateless: no local policy cache to go stale; the PDP is the single source of truth.
  • Evidence-emitting: every call is logged by the PDP without extra work in your code.

Pick your language

TypeScript

@akhara/pep for Node runtimes.

Kotlin / Android

The shipped AkharaPolicyClient + PolicyEnforcementPoint.