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

[!TIP] Use bash src/scripts/dev_server.sh --host ... --port ... --reload for dev convenience.

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.

[!NOTE] The “latest version” selection prefers semver ordering and falls back to string sort when needed.

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.

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
arp_jarvis_node_registry-0.3.8.tar.gz 13.0 kB Details

Built distribution (wheel)

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

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

Release history Release notifications | RSS feed

This release

0.3.8 This release

2 release files

0.3.7

2 release files

0.3.5

2 release files

0.3.3

2 release files

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