Skip to main content
Archived

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 (or arp-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 pyright installed.

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>/... (includes trace.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-url is passed to the runtime as ARP_TOOL_REGISTRY_URL
  • --env KEY=VALUE and --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}/trace returns trace_uri and (when available) parsed events.

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/health
  • GET /v1/version
  • GET /v1/admin/runtime-profiles
  • PUT /v1/admin/runtime-profiles/{runtime_profile}
  • DELETE /v1/admin/runtime-profiles/{runtime_profile}
  • GET /v1/instances
  • POST /v1/instances
  • POST /v1/instances:register
  • DELETE /v1/instances/{instance_id}
  • GET /v1/runs
  • POST /v1/runs
  • GET /v1/runs/{run_id}
  • GET /v1/runs/{run_id}/result
  • GET /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)

Source distribution for arp-jarvis-daemon 0.1.0
File Size Uploaded
arp_jarvis_daemon-0.1.0.tar.gz 27.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arp-jarvis-daemon 0.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page