JARVIS PDP implementation for the ARP Standard (spec/v1).
Project description
JARVIS PDP
First-party OSS reference implementation of the ARP Policy Decision Point (PDP) service.
This reference implementation uses only the SDK packages:
arp-standard-server, arp-standard-model, and arp-standard-client, plus arp-policy and arp-auth.
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).
Requirements
- Python >= 3.11
Install
python3 -m pip install -e .
Local configuration (optional)
For local dev convenience, copy the example env file:
cp .env.example .env.local
src/scripts/dev_server.sh auto-loads .env.local (or .env).
Run
- PDP listens on
http://127.0.0.1:8086by default.
python3 -m pip install -e .
python3 -m jarvis_pdp
[!TIP] Use
bash src/scripts/dev_server.sh --host ... --port ... --reloadfor dev convenience.
Using this repo
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/jarvis_pdp/service.py
Default behavior
- Deny-by-default when no profile or policy file is configured.
JARVIS_POLICY_PROFILE=dev-allowenables allow-all behavior for local dev.JARVIS_POLICY_PATHloads anarp-policyJSON policy file.- When a policy file is configured and a request includes
node_type_ref, PDP fetches theNodeTypefrom Node Registry and enriches the policy context (so callers do not need to embed NodeType metadata in the request).
Example policy: first-party atomic only
This repo includes an example arp-policy file that allows:
- composite nodes (e.g.
jarvis.composite.planner.general) - atomic nodes only when
jarvis.trust_tier == "first_party"
See: src/scripts/policy.first_party_atomic_only.json
To use it:
export JARVIS_POLICY_PATH=src/scripts/policy.first_party_atomic_only.json
Quick health check
curl http://127.0.0.1:8086/v1/health
Configuration
CLI flags:
--host(default127.0.0.1)--port(default8086)--reload(dev only)
Environment variables (Node Registry hydration):
JARVIS_NODE_REGISTRY_URL(enables NodeType metadata hydration for node-type policy decisions)JARVIS_NODE_REGISTRY_AUDIENCE(defaultarp-jarvis-noderegistry)- Outbound STS credentials (required when
JARVIS_NODE_REGISTRY_URLis set):ARP_AUTH_CLIENT_IDARP_AUTH_CLIENT_SECRETARP_AUTH_TOKEN_ENDPOINT(orARP_AUTH_ISSUER+ discovery)
Validate conformance (arp-conformance)
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
Helper scripts
-
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
Authentication
Auth is enabled by default (JWT). To disable for local dev, set ARP_AUTH_PROFILE=dev-insecure.
To enable local Keycloak defaults, set:
ARP_AUTH_PROFILE=dev-secure-keycloakARP_AUTH_AUDIENCE=arp-pdpARP_AUTH_ISSUER=http://localhost:8080/realms/arp-dev
Upgrading
When upgrading to a new ARP Standard SDK release, bump pinned versions in pyproject.toml (arp-standard-*==...) and re-run conformance.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arp_jarvis_pdp-0.3.3.tar.gz.
File metadata
- Download URL: arp_jarvis_pdp-0.3.3.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d63206e1e08b093739017327babe301514c1deb0af6ca11ad226cc1cecca471
|
|
| MD5 |
907a198bca37a3516b420a9e476e6d3e
|
|
| BLAKE2b-256 |
4ae5b688b1e174ca84fbd6531d1f16151e642d29a287cd640b1ce4e934e3cd8d
|
Provenance
The following attestation bundles were made for arp_jarvis_pdp-0.3.3.tar.gz:
Publisher:
release.yml on AgentRuntimeProtocol/JARVIS_PDP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_jarvis_pdp-0.3.3.tar.gz -
Subject digest:
5d63206e1e08b093739017327babe301514c1deb0af6ca11ad226cc1cecca471 - Sigstore transparency entry: 786334669
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/JARVIS_PDP@a56fbcfc2afc75f71398a6898808876fb866cbde -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a56fbcfc2afc75f71398a6898808876fb866cbde -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file arp_jarvis_pdp-0.3.3-py3-none-any.whl.
File metadata
- Download URL: arp_jarvis_pdp-0.3.3-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8639dc6dd647290b5fbaad8897f85047984a6a37b231a80c6bcadc77b570cfa3
|
|
| MD5 |
fbc3041bbceb6146ff37581b2e8956de
|
|
| BLAKE2b-256 |
da825e67486ec7d6c0848f449f135fcecf411923a6ec58b07589efca2849dff9
|
Provenance
The following attestation bundles were made for arp_jarvis_pdp-0.3.3-py3-none-any.whl:
Publisher:
release.yml on AgentRuntimeProtocol/JARVIS_PDP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_jarvis_pdp-0.3.3-py3-none-any.whl -
Subject digest:
8639dc6dd647290b5fbaad8897f85047984a6a37b231a80c6bcadc77b570cfa3 - Sigstore transparency entry: 786334687
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/JARVIS_PDP@a56fbcfc2afc75f71398a6898808876fb866cbde -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a56fbcfc2afc75f71398a6898808876fb866cbde -
Trigger Event:
workflow_run
-
Statement type: