Skip to main content

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:8086 by default.
python3 -m pip install -e .
python3 -m jarvis_pdp

[!TIP] Use bash src/scripts/dev_server.sh --host ... --port ... --reload for 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-allow enables allow-all behavior for local dev.
  • JARVIS_POLICY_PATH loads an arp-policy JSON policy file.
  • When a policy file is configured and a request includes node_type_ref, PDP fetches the NodeType from 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 (default 127.0.0.1)
  • --port (default 8086)
  • --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 (default arp-jarvis-noderegistry)
  • Outbound STS credentials (required when JARVIS_NODE_REGISTRY_URL is set):
    • ARP_AUTH_CLIENT_ID
    • ARP_AUTH_CLIENT_SECRET
    • ARP_AUTH_TOKEN_ENDPOINT (or ARP_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-keycloak
  • ARP_AUTH_AUDIENCE=arp-pdp
  • ARP_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

arp_jarvis_pdp-0.3.5.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arp_jarvis_pdp-0.3.5-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file arp_jarvis_pdp-0.3.5.tar.gz.

File metadata

  • Download URL: arp_jarvis_pdp-0.3.5.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arp_jarvis_pdp-0.3.5.tar.gz
Algorithm Hash digest
SHA256 10c8b2202bf01a53551fd0d3dc5fa7d08bc1f8fbf6f496ca0aa5919db646bb25
MD5 2a0bd27d1de2b6793a645bd06ac88bb5
BLAKE2b-256 4f0ed4936e6b73805fa6c64239ad264cba919f9ba2edecb4e728ea5cbfde0669

See more details on using hashes here.

Provenance

The following attestation bundles were made for arp_jarvis_pdp-0.3.5.tar.gz:

Publisher: release.yml on AgentRuntimeProtocol/JARVIS_PDP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arp_jarvis_pdp-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: arp_jarvis_pdp-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arp_jarvis_pdp-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e0a2d9f9a1ca46d9833ab2123c7a8e3b0d18952ff7d5d29db3697fa7064e6aa3
MD5 f2f13b5f7015417fd230f27bfba76257
BLAKE2b-256 726c984f4c8b939c1bf22149b0c1172ae0188ad360710004f7bbb4236072f1ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for arp_jarvis_pdp-0.3.5-py3-none-any.whl:

Publisher: release.yml on AgentRuntimeProtocol/JARVIS_PDP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page