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.5.tar.gz (12.4 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.5-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: arp_jarvis_node_registry-0.3.5.tar.gz
  • Upload date:
  • Size: 12.4 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.5.tar.gz
Algorithm Hash digest
SHA256 94154c8ce715565c147d2f04a71f390b1261a65626a527e02a86850ff884596f
MD5 ce48cfbda200b5bb5875e6a45bc19c05
BLAKE2b-256 6f1c3ff543ede6befca2576a7dd5d8ff7e1c9edd3fe896711b812f5041d16ff9

See more details on using hashes here.

Provenance

The following attestation bundles were made for arp_jarvis_node_registry-0.3.5.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.5-py3-none-any.whl.

File metadata

File hashes

Hashes for arp_jarvis_node_registry-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f25be20812c6f6381297591ddd77211bf19a44bae99c7ba96631e442d0bd4acd
MD5 80c5572d432cd62da5c864ece5f06f51
BLAKE2b-256 d32f33f7a7898b68f105ff10846152e7ea15640554143b6d18946d43785c1c2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for arp_jarvis_node_registry-0.3.5-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