Use this repo as a starting point for building an ARP compliant Policy Decision Point (PDP) service.
This minimal template implements the PDP API using only the SDK packages:
arp-standard-server, arp-standard-model, and arp-standard-client.
It is designed to be a thin adapter to your real governance system (rules, OPA, internal policy services), while keeping a stable, spec-aligned request/response schema.
Implements: ARP Standard spec/v1 PDP API (contract: ARP_Standard/spec/v1/openapi/pdp.openapi.yaml).
- Python >= 3.10
python3 -m pip install -e .For local dev convenience, copy the template env file:
cp .env.example .env.localsrc/scripts/dev_server.sh auto-loads .env.local (or .env).
- PDP listens on
http://127.0.0.1:8086by default.
python3 -m pip install -e '.[run]'
python3 -m arp_template_pdpTip
Use bash src/scripts/dev_server.sh --host ... --port ... --reload for dev convenience.
To build your own PDP, fork this repository and replace the decision logic while preserving request/response semantics.
If all you need is to change policy behavior, edit:
src/arp_template_pdp/service.py
- Policy mode defaults to
allow_all. - Optional
filemode supportsARP_POLICY_PATHwith a simple JSON format.
Set:
ARP_POLICY_MODE=fileARP_POLICY_PATH=/path/to/policy.json
Example policy.json:
{
"deny_actions": ["run.start"],
"require_approval_actions": ["run.cancel"]
}curl http://127.0.0.1:8086/v1/healthCLI flags:
--host(default127.0.0.1)--port(default8086)--reload(dev only)
python3 -m pip install arp-conformance
arp-conformance check pdp --url http://127.0.0.1:8086 --tier smoke
arp-conformance check pdp --url http://127.0.0.1:8086 --tier surface-
src/scripts/dev_server.sh: run the server (flags:--host,--port,--reload). -
src/scripts/send_request.py: send a policy decision request from a JSON file.python3 src/scripts/send_request.py --request src/scripts/request.json
For out-of-the-box usability, this template defaults to auth-disabled unless you set ARP_AUTH_MODE or ARP_AUTH_PROFILE.
To enable JWT auth, set either:
ARP_AUTH_PROFILE=dev-secure-keycloak+ARP_AUTH_SERVICE_ID=<audience>- or
ARP_AUTH_MODE=requiredwithARP_AUTH_ISSUERandARP_AUTH_AUDIENCE
When upgrading to a new ARP Standard SDK release, bump pinned versions in pyproject.toml (arp-standard-*==...) and re-run conformance.