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:8084by default.
python3 -m pip install -e .
python3 -m jarvis_node_registry
[!TIP] Use
bash src/scripts/dev_server.sh --host ... --port ... --reloadfor 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_typestores and returns the NodeType (conflict returns 409).get_node_typereturns exact version if provided; otherwise returns the latest semver when parseable.list_node_typessupports a minimalqandkindfilter.- On startup, the registry auto-loads installed node packs via the
jarvis.nodepacksentry point group (fromarp-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=falseto 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) populateNodeType.extensions.jarvis.*metadata such as:jarvis.pack_id,jarvis.pack_version,jarvis.node_namejarvis.side_effect,jarvis.egress_policy,jarvis.tags,jarvis.trust_tier
- Node Registry built-ins (seeded on startup) add planner metadata such as:
jarvis.role=plannerjarvis.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(default127.0.0.1)--port(default8084)--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-keycloakARP_AUTH_AUDIENCE=arp-node-registryARP_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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arp_jarvis_node_registry-0.3.3.tar.gz.
File metadata
- Download URL: arp_jarvis_node_registry-0.3.3.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a7fa533ebc7441cb23b5add9309afc535afa00173424ec0650c617bd68821d7
|
|
| MD5 |
5a5baf976372858b5297d5c7ecedf34c
|
|
| BLAKE2b-256 |
bbde23c47833a020c9b663adb7a67a5001359023220253ece5d673acfe313ab6
|
Provenance
The following attestation bundles were made for arp_jarvis_node_registry-0.3.3.tar.gz:
Publisher:
release.yml on AgentRuntimeProtocol/JARVIS_NodeRegistry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_jarvis_node_registry-0.3.3.tar.gz -
Subject digest:
8a7fa533ebc7441cb23b5add9309afc535afa00173424ec0650c617bd68821d7 - Sigstore transparency entry: 786330399
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/JARVIS_NodeRegistry@c648f254999c6efad0950c55d224564946e3d11b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c648f254999c6efad0950c55d224564946e3d11b -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file arp_jarvis_node_registry-0.3.3-py3-none-any.whl.
File metadata
- Download URL: arp_jarvis_node_registry-0.3.3-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
257be8d834a79528a370b9c6aafd353f1550713e24738bb7ca4398d1a7125329
|
|
| MD5 |
2470e3f7a360eb809e4f543f8bf292dd
|
|
| BLAKE2b-256 |
2181fd644aac4cdbfca6a028b68d75fe664249ee6c55f57ee464d9fc98bd2c23
|
Provenance
The following attestation bundles were made for arp_jarvis_node_registry-0.3.3-py3-none-any.whl:
Publisher:
release.yml on AgentRuntimeProtocol/JARVIS_NodeRegistry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_jarvis_node_registry-0.3.3-py3-none-any.whl -
Subject digest:
257be8d834a79528a370b9c6aafd353f1550713e24738bb7ca4398d1a7125329 - Sigstore transparency entry: 786330405
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/JARVIS_NodeRegistry@c648f254999c6efad0950c55d224564946e3d11b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c648f254999c6efad0950c55d224564946e3d11b -
Trigger Event:
workflow_run
-
Statement type: