Skip to main content

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 (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

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

arp_jarvis_daemon-0.1.0.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arp_jarvis_daemon-0.1.0-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

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

Hashes for arp_jarvis_daemon-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d3e953b5a4427c9f7d15fd8376d1116ecac1c854ad979ccab8a4d4d8e82b6363
MD5 87ac8104b75fd2836d56ba3fe15d6bcd
BLAKE2b-256 1303736506056518ead3392781e6b42aed563653eabff613ec61c9aeedf2413f

See more details on using hashes here.

Provenance

The following attestation bundles were made for arp_jarvis_daemon-0.1.0.tar.gz:

Publisher: publish.yml on AgentRuntimeProtocol/JARVIS_Daemon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arp_jarvis_daemon-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for arp_jarvis_daemon-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c29771e155f41f0a09701bfcd211ac0cca3aea77e42ab131b7cb7180a8ed4872
MD5 4ac89d1982fe48f6cdef926335749056
BLAKE2b-256 a78b85ccef8366c2d02b274c816b88fb4c0d84a20081adca46e8cf3a9da48339

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page