Skip to main content

JARVIS Node Registry

First-party OSS reference implementation of the ARP Node Registry service.

This reference implementation uses only the SDK packages: arp-standard-server, arp-standard-model, and arp-standard-client.

It is intentionally small and readable so you can swap in your preferred storage/index while keeping the same API surface.

Implements: ARP Standard spec/v1 Node Registry API (contract: ARP_Standard/spec/v1/openapi/node-registry.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

  • Node Registry listens on http://127.0.0.1:8084 by default.
python3 -m pip install -e .
python3 -m jarvis_node_registry

Using this repo

To build your own registry, fork this repository and replace the SQLite store with your storage/index while preserving request/response semantics.

If all you need is to change storage behavior, edit:

  • src/jarvis_node_registry/registry.py

Default behavior

  • NodeTypes are stored in SQLite keyed by (node_type_id, version).
  • publish_node_type stores and returns the NodeType (conflict returns 409).
  • get_node_type returns exact version if provided; otherwise returns the latest semver when parseable.
  • list_node_types supports a minimal q and kind filter.
  • On startup, the registry auto-loads installed node packs via the jarvis.nodepacks entry point group (from arp-jarvis-atomic-nodes[metadata]) and seeds their NodeTypes; duplicates are ignored.
  • On startup, the registry also seeds a small set of built-in system NodeTypes (metadata-only), including composite planner variants such as jarvis.composite.planner.general.
  • Set JARVIS_NODE_REGISTRY_SEED=false to disable startup seeding (recommended for multi-replica deployments).
  • SQLite is read-mostly in steady state; production should prefer a single replica when using file-backed SQLite.

Extensions

NodeTypes include an extensions field for non-normative metadata. In the JARVIS stack:

  • First-party atomic node packs (e.g. arp-jarvis-atomic-nodes) populate NodeType.extensions.jarvis.* metadata such as:
    • jarvis.pack_id, jarvis.pack_version, jarvis.node_name
    • jarvis.side_effect, jarvis.egress_policy, jarvis.tags, jarvis.trust_tier
  • Node Registry built-ins (seeded on startup) add planner metadata such as:
    • jarvis.role=planner
    • jarvis.planner_variant=general

This registry stores and returns these extension fields verbatim; Selection Service may use a subset to improve candidate ranking.

Full cross-stack list: https://github.com/AgentRuntimeProtocol/BusinessDocs/blob/main/Business_Docs/JARVIS/Extensions.md.

Quick health check

curl http://127.0.0.1:8084/v1/health

Configuration

CLI flags:

  • --host (default 127.0.0.1)
  • --port (default 8084)
  • --reload (dev only)

Validate conformance (arp-conformance)

python3 -m pip install arp-conformance
arp-conformance check node-registry --url http://127.0.0.1:8084 --tier smoke
arp-conformance check node-registry --url http://127.0.0.1:8084 --tier surface

Helper scripts

  • src/scripts/dev_server.sh: run the server (flags: --host, --port, --reload).

  • src/scripts/send_request.py: publish a NodeType from a JSON file and fetch it back.

    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-node-registry
  • 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.

Metadata

Release files for arp-jarvis-node-registry 0.3.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arp-jarvis-node-registry 0.3.8
File Size Uploaded Provenance Actions
arp_jarvis_node_registry-0.3.8.tar.gz 13.0 kB With provenance Details for arp_jarvis_node_registry-0.3.8.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for arp-jarvis-node-registry 0.3.8
File Interpreter ABI Platform Actions
arp_jarvis_node_registry-0.3.8-py3-none-any.whl Python 3 none any Details for arp_jarvis_node_registry-0.3.8-py3-none-any.whl

Total release size: 26.4 kB

Release files / arp_jarvis_node_registry-0.3.8.tar.gz

Download URL arp_jarvis_node_registry-0.3.8.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6805f027c4e38c64188ac0391b85c32a48f9a3ac26cb8fb45b23d566e559effa
BLAKE2b-256 checksum
How to use checksums
1d5421d53015ead078e68caf7a46d9489cc67448604f54a7cd4fc037201c4c4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 4, 2026.

Transparency log

Release files / arp_jarvis_node_registry-0.3.8-py3-none-any.whl

Download URL arp_jarvis_node_registry-0.3.8-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb9eb7a9281abbf71fe0e28ff9dcc062a79f2a678d66fa80dc502a54480f259e
BLAKE2b-256 checksum
How to use checksums
a283e40aa5086e9d3ce9672b9f3aa09828422e51bed6db09d8c065099dd02771
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 4, 2026.

Transparency log

Security for arp-jarvis-node-registry 0.3.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for arp_jarvis_node_registry-0.3.8.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page