Jarvis Daemon core library for managing ARP runtime instances.
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
arp-jarvis-daemon
Daemon core + HTTP server for managing local ARP runtime instances (spawn/stop/list) and routing run requests to them.
Implements the ARP Daemon API v1 and can run fully standalone.
This single CLI has two modes:
- Server mode (default):
arp-jarvis-daemon(orarp-jarvis-daemon serve) starts the HTTP server. - Client mode:
arp-jarvis-daemon <subcommand>talks to a running daemon server over HTTP.
Install
From PyPI:
pipx install arp-jarvis-daemon
python3 -m pip install arp-jarvis-daemon
From local repo source (with dev dependencies):
python3 -m pip install -e ".[dev]"
The local editable installation is for when you are making changes to this daemon repo, and has dependencies like
pyrightinstalled.
Run the daemon server
arp-jarvis-daemon --host 127.0.0.1 --port 8082
Or alternatively:
arp-jarvis-daemon serve --host 127.0.0.1 --port 8082
OpenAPI docs (FastAPI) are available at http://127.0.0.1:8082/docs.
Data directory layout
By default, the daemon stores state/artifacts under ~/.arp/daemon (override with --data-dir):
- Runtime profiles (safe list):
<data-dir>/runtime_profiles.json - Instance registry (persisted):
<data-dir>/instances.json - Cached venvs (managed runtimes):
<data-dir>/venvs/<runtime_profile>/... - Run artifacts:
<data-dir>/runs/<run_id>/...(includestrace.jsonl)
Pip/index policy for managed runtimes (optional)
arp-jarvis-daemon --pip-index-url https://pypi.org/simple
arp-jarvis-daemon --pip-no-index
arp-jarvis-daemon --pip-extra-index-url https://<private-index>/simple --pip-trusted-host <private-index-host>
arp-jarvis-daemon --pip-upgrade-pip
These flags only apply in server mode (they affect how the daemon runs pip install for managed runtimes).
Client mode quickstart (profiles → instances → runs)
Terminal A: start the daemon server.
Terminal B: point the CLI client at the server:
export ARP_DAEMON_URL=http://127.0.0.1:8082
arp-jarvis-daemon runtime-profiles list
Runtime profiles (safe list)
The daemon only creates managed runtime instances from runtime profiles (safe list). This is specifically designed with security in mind: we do not want jarvis daemon to become a remote code execution engine.
Profiles are stored in <data-dir>/runtime_profiles.json (by default ~/.arp/daemon/runtime_profiles.json).
A sample runtime profile JSON file is provided in jarvis-runtime-profile.json.
Profiles must include an exec config under extensions["arp.jarvis.exec"] (namespaced extension key).
pip_spec must be pinned (one of):
pkg==version- local path (
/abs/path,./rel/path,../rel/path,file:///...) name @ file:///...(recommended for local dev)
Example request payload (pip driver, recommended): jarvis-runtime-profile.json
{
"runtime_name": "arp-jarvis-runtime",
"extensions": {
"arp.jarvis.exec": {
"driver": "pip",
"pip_spec": "arp-jarvis-runtime==v0.1.0", // if you want to use package from local repo of a runtime, do something like "your-runtime-package @ file:///path/to/your/runtime"
"entrypoint": "arp-jarvis-runtime", // Or your runtime's CLI starting point.
"entrypoint_args": ["serve"]
}
}
}
Tip: for repo-local dev, run python3 scripts/bootstrap_jarvis_local.py to upsert a working profile that points at your local arp/JARVIS_Runtime checkout.
CLI:
arp-jarvis-daemon runtime-profiles upsert jarvis-local --request-json ./jarvis-runtime-profile.json
arp-jarvis-daemon runtime-profiles list
arp-jarvis-daemon runtime-profiles delete jarvis-local
Managed instances (create/list/delete)
These commands talk to a running daemon server. Set --daemon-url (or ARP_DAEMON_URL) if not using the default http://127.0.0.1:8082.
Create instances from a runtime profile:
arp-jarvis-daemon start --runtime-profile jarvis-local --count 1 --tool-registry-url http://127.0.0.1:8000
List instances:
arp-jarvis-daemon list
Delete an instance (managed: stop process + remove record; external: deregister only):
arp-jarvis-daemon delete <instance_id>
Overrides for managed instances:
--tool-registry-urlis passed to the runtime asARP_TOOL_REGISTRY_URL--env KEY=VALUEand--arg ...are passed through to the runtime process
Managed runtimes are installed into cached venvs under <data-dir>/venvs/<runtime_profile>/.
Unmanaged instances (register/unregister)
Register an already-running runtime endpoint (daemon will route runs to it, but will not start/stop it):
arp-jarvis-daemon register --runtime-api-endpoint http://127.0.0.1:43120
Runs (submit/status/result/trace)
Submit a run request (JSON file containing a RunRequest), routed by runtime profile:
A sample run-request.json is provided in this repo as a reference:
{
"input": { "goal": "Say hello" },
"runtime_selector": { "runtime_profile": "jarvis-local" }
}
arp-jarvis-daemon run --request-json ./run-request.json
arp-jarvis-daemon status <run_id>
arp-jarvis-daemon result <run_id>
arp-jarvis-daemon trace <run_id>
To target a specific instance, use runtime_selector.instance_id instead of runtime_profile.
Traces and run artifacts
The daemon stores run artifacts under <data-dir>/runs/<run_id>/ (by default <data-dir> is ~/.arp/daemon).
- Trace JSONL:
<data-dir>/runs/<run_id>/trace.jsonl - API:
GET /v1/runs/{run_id}/tracereturnstrace_uriand (when available) parsedevents.
Dev scripts
- Start server with repo-local data dir:
scripts/dev_server.sh - Bootstrap local runtime profile + create instance:
scripts/bootstrap_jarvis_local.py - Submit a run and poll for result:
scripts/submit_run.py
End-to-end (3 terminals):
- Terminal A:
arp-jarvis-tool-registry - Terminal B:
bash scripts/dev_server.sh - Terminal C:
python3 scripts/bootstrap_jarvis_local.py --tool-registry-url http://127.0.0.1:8000 && python3 scripts/submit_run.py --goal "Say hello" --runtime-profile jarvis-local
Daemon API endpoints (selected):
GET /v1/healthGET /v1/versionGET /v1/admin/runtime-profilesPUT /v1/admin/runtime-profiles/{runtime_profile}DELETE /v1/admin/runtime-profiles/{runtime_profile}GET /v1/instancesPOST /v1/instancesPOST /v1/instances:registerDELETE /v1/instances/{instance_id}GET /v1/runsPOST /v1/runsGET /v1/runs/{run_id}GET /v1/runs/{run_id}/resultGET /v1/runs/{run_id}/trace
Project details
Release history Release notifications | RSS feed
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_daemon-0.1.0.tar.gz.
File metadata
- Download URL: arp_jarvis_daemon-0.1.0.tar.gz
- Upload date:
- Size: 27.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3e953b5a4427c9f7d15fd8376d1116ecac1c854ad979ccab8a4d4d8e82b6363
|
|
| MD5 |
87ac8104b75fd2836d56ba3fe15d6bcd
|
|
| BLAKE2b-256 |
1303736506056518ead3392781e6b42aed563653eabff613ec61c9aeedf2413f
|
Provenance
The following attestation bundles were made for arp_jarvis_daemon-0.1.0.tar.gz:
Publisher:
publish.yml on AgentRuntimeProtocol/JARVIS_Daemon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_jarvis_daemon-0.1.0.tar.gz -
Subject digest:
d3e953b5a4427c9f7d15fd8376d1116ecac1c854ad979ccab8a4d4d8e82b6363 - Sigstore transparency entry: 770336877
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/JARVIS_Daemon@337b3375ae06c1f53b6b108d8d91659f7d4f9e26 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@337b3375ae06c1f53b6b108d8d91659f7d4f9e26 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arp_jarvis_daemon-0.1.0-py3-none-any.whl.
File metadata
- Download URL: arp_jarvis_daemon-0.1.0-py3-none-any.whl
- Upload date:
- Size: 26.8 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 |
c29771e155f41f0a09701bfcd211ac0cca3aea77e42ab131b7cb7180a8ed4872
|
|
| MD5 |
4ac89d1982fe48f6cdef926335749056
|
|
| BLAKE2b-256 |
a78b85ccef8366c2d02b274c816b88fb4c0d84a20081adca46e8cf3a9da48339
|
Provenance
The following attestation bundles were made for arp_jarvis_daemon-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on AgentRuntimeProtocol/JARVIS_Daemon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arp_jarvis_daemon-0.1.0-py3-none-any.whl -
Subject digest:
c29771e155f41f0a09701bfcd211ac0cca3aea77e42ab131b7cb7180a8ed4872 - Sigstore transparency entry: 770336897
- Sigstore integration time:
-
Permalink:
AgentRuntimeProtocol/JARVIS_Daemon@337b3375ae06c1f53b6b108d8d91659f7d4f9e26 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AgentRuntimeProtocol
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@337b3375ae06c1f53b6b108d8d91659f7d4f9e26 -
Trigger Event:
push
-
Statement type: