Skip to main content

JARVIS Node Registry implementation for the ARP Standard (spec/v1).

Project description

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.

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_node_registry-0.3.8.tar.gz (13.0 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_node_registry-0.3.8-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file arp_jarvis_node_registry-0.3.8.tar.gz.

File metadata

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

File hashes

Hashes for arp_jarvis_node_registry-0.3.8.tar.gz
Algorithm Hash digest
SHA256 6805f027c4e38c64188ac0391b85c32a48f9a3ac26cb8fb45b23d566e559effa
MD5 72d10b0b6e9694da1511e8d3bc3e5a3c
BLAKE2b-256 1d5421d53015ead078e68caf7a46d9489cc67448604f54a7cd4fc037201c4c4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for arp_jarvis_node_registry-0.3.8.tar.gz:

Publisher: release.yml on AgentRuntimeProtocol/JARVIS_NodeRegistry

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_node_registry-0.3.8-py3-none-any.whl.

File metadata

File hashes

Hashes for arp_jarvis_node_registry-0.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 fb9eb7a9281abbf71fe0e28ff9dcc062a79f2a678d66fa80dc502a54480f259e
MD5 5d66a75ac6095d4ccbddbca36d9a6ad1
BLAKE2b-256 a283e40aa5086e9d3ce9672b9f3aa09828422e51bed6db09d8c065099dd02771

See more details on using hashes here.

Provenance

The following attestation bundles were made for arp_jarvis_node_registry-0.3.8-py3-none-any.whl:

Publisher: release.yml on AgentRuntimeProtocol/JARVIS_NodeRegistry

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