This project has been archived by its maintainers, and is no longer receiving any updates.
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
Release files for arp-jarvis-daemon 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| arp_jarvis_daemon-0.1.0.tar.gz | 27.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arp_jarvis_daemon-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:54.1 kB
Release files / arp_jarvis_daemon-0.1.0.tar.gz
| Download URL | arp_jarvis_daemon-0.1.0.tar.gz |
|---|---|
| Size | 27.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3e953b5a4427c9f7d15fd8376d1116ecac1c854ad979ccab8a4d4d8e82b6363
|
|
BLAKE2b-256 checksum How to use checksums |
1303736506056518ead3392781e6b42aed563653eabff613ec61c9aeedf2413f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 18, 2025.
Transparency logRelease files / arp_jarvis_daemon-0.1.0-py3-none-any.whl
| Download URL | arp_jarvis_daemon-0.1.0-py3-none-any.whl |
|---|---|
| Size | 26.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c29771e155f41f0a09701bfcd211ac0cca3aea77e42ab131b7cb7180a8ed4872
|
|
BLAKE2b-256 checksum How to use checksums |
a78b85ccef8366c2d02b274c816b88fb4c0d84a20081adca46e8cf3a9da48339
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 18, 2025.
Transparency log