First-party OSS reference implementation of the ARP spec/v1 Atomic Executor.
This JARVIS component implements the Atomic Executor API using the SDK packages:
arp-standard-server, arp-standard-model, and arp-standard-client.
Implements: ARP Standard spec/v1 Atomic Executor API (contract: ARP_Standard/spec/v1/openapi/atomic-executor.openapi.yaml).
- Python >= 3.11
python3 -m pip install -e .For local dev convenience, copy the example env file:
cp .env.example .env.localsrc/scripts/dev_server.sh auto-loads .env.local (or .env).
- Atomic Executor listens on
http://127.0.0.1:8082by default.
python3 -m pip install -e .
jarvis-atomic-executorTip
Use bash src/scripts/dev_server.sh --host ... --port ... --reload for dev convenience.
This repo is the maintained JARVIS reference for atomic execution. Add or replace handlers while preserving ARP request/response semantics.
This executor auto-loads installed node packs via the jarvis.nodepacks entry point group (see arp-jarvis-atomic-nodes).
If you want to override the default handler registry, pass handlers=... when constructing AtomicExecutor.
- Loads handlers from installed node packs (entry points).
- Includes
jarvis.core.echofrom the core pack. execute_atomic_node_runreturnssucceededwithoutputs={"echo": inputs}for the echo node.- Unknown
node_type_idreturnsfailedwith an error payload. cancel_atomic_node_runcancels in-flight handler execution (best-effort).
- Add more node packs or override the handler registry explicitly.
- Customize cancellation behavior (cooperative cancellation, idempotency, timeouts).
- Configure timeouts/concurrency controls around handler execution.
Request flow:
- Inbound request hits the Atomic Executor (
arp-standard-server). - Auth middleware validates the
Authorization: Bearer <JWT>header (when enabled). - The executor routes by
node_type_ref.node_type_idand calls the matching handler. - The executor returns
AtomicExecuteResultwith outputs and timing metadata.
System-of-record:
- The Atomic Executor does not store run state or emit durable run events.
- The Run Coordinator is responsible for orchestration, durability, and emitting
atomic_executed.
curl http://127.0.0.1:8082/v1/healthCLI flags:
--host(default127.0.0.1)--port(default8082)--reload(dev only)
Environment variables:
- Incoming JWT validation is configured via
ARP_AUTH_PROFILEandARP_AUTH_*overrides (see.env.example). - Optional execution controls:
JARVIS_DEFAULT_TIMEOUT_SECS(coarse per-request timeout)JARVIS_MAX_CONCURRENCY(cap concurrent executions)
python3 -m pip install arp-conformance
arp-conformance check atomic-executor --url http://127.0.0.1:8082 --tier smoke
arp-conformance check atomic-executor --url http://127.0.0.1:8082 --tier surface-
src/scripts/dev_server.sh: run the server (flags:--host,--port,--reload). -
src/scripts/send_request.py: execute an atomic NodeRun from a JSON file.python3 src/scripts/send_request.py --request src/scripts/request.json
Note: this helper does not include an
Authorizationheader. For a quick local run, setARP_AUTH_PROFILE=dev-insecure(dev only), or call the Atomic Executor via the Run Coordinator (recommended).
This service validates incoming JWTs (authn). It does not perform token exchange.
Auth is enabled by default (JWT). To disable for local dev, set ARP_AUTH_PROFILE=dev-insecure.
If no ARP_AUTH_* env vars are set, the service defaults to required JWT auth with the dev Keycloak issuer.
To enable local Keycloak defaults, set:
ARP_AUTH_PROFILE=dev-secure-keycloakARP_AUTH_AUDIENCE=arp-atomic-executorARP_AUTH_ISSUER=http://localhost:8080/realms/arp-dev
In the JARVIS stack, the Run Coordinator is expected to:
- mint/exchange a service-scoped JWT for the Atomic Executor audience via STS (OIDC/RFC 8693)
- call
POST /v1/atomic-node-runs:executewithAuthorization: Bearer <token>
The Atomic Executor validates the JWT (signature + optional iss/aud) and executes the handler.
When upgrading to a new ARP Standard SDK release, bump pinned versions in pyproject.toml (arp-standard-*==...) and re-run conformance.