ifURI docs

Commands

Common CLI entry points for scanning, compiling, running, installing connectors, inspecting diagnostics, driving host/node workflows and using versioned commands.

v2 CLI

urirun defaults to the v2 schema-first runtime.

urirun scan PATH --out generated/bindings.v2.json --registry-out generated/registry.json
urirun validate generated/bindings.v2.json
urirun compile generated/bindings.v2.json --out generated/registry.json
urirun list generated/registry.json
urirun run URI --registry generated/registry.json --payload '{"name":"Ada"}'

Generate bindings in one line

Expose a package command:

urirun add-pypi sampleproject --out urirun.bindings.v2.json

Expose a command template:

urirun add-command 'util://local/echo/message' \
  --argv 'python3 -c "import sys; print(sys.argv[1])" {text}' \
  --param text:string:required \
  --out urirun.bindings.v2.json

Install connectors from the hub

Install a verified connector package:

curl -fsSL 'https://connect.ifuri.com/install?connectors=http-check' | bash

Dry-run the same install through the runtime catalog:

urirun connectors list --available
urirun connectors show http-check
urirun connectors install http-check

Inspect the connector directly:

urirun-http-check manifest
urirun-http-check bindings
urirun-http-check status https://ifuri.com --expect-status 200

Compile and run its URI:

python - <<'PY' > bindings.json
import json
from urirun_connector_http_check import urirun_bindings
print(json.dumps(urirun_bindings(), indent=2))
PY

urirun compile bindings.json --out registry.json
urirun run 'httpcheck://host/http/query/status' registry.json \
  --payload '{"url":"https://ifuri.com","expectStatus":200}' \
  --execute \
  --allow 'httpcheck://host/*'

Inspect runtime errors

Failed runs are stamped with stable error:// addresses and persisted to ~/.urirun/errors.jsonl by default:

urirun errors recent
urirun errors search policy
urirun errors info E-ce9b1dd4
urirun errors bindings > error-bindings.json
urirun compile error-bindings.json --out error-registry.json
urirun run 'error://local/errors/query/recent' error-registry.json

Use urirun errors ticket <code> <project> to turn a recurring error into a planfile ticket.

Check compatibility migration

Legacy host/domain modules are moving out of urirun core into connector packages and the ifURI app. Use the compatibility report before removing old imports from a downstream project:

urirun compat list
urirun compat list --json
urirun compat check --json

compat check returns non-zero until every replacement package or app-layer replacement is installed.

Drive a node from natural language, deploy and probe

These commands close the host/node loop: plan from natural language, deploy connector changes, probe registry stability and verify connector packages.

: "NL -> URI flow constrained to the node's live routes -> dispatch (closed loop)"
urirun host ask laptop "audit this box and log a summary" --execute

: "push a connector onto a running node (signed, no SSH); --merge ADDS routes"
urirun host deploy laptop --bindings b.json --code handler.py --merge --identity ~/.ssh/id_ed25519

: "snapshot the surface registry etag and test every route pinned to it"
: "detects a hot-swapped registry and degraded or mock results with --execute"
urirun host probe laptop --execute

: "pre-deploy gate: import a connector, validate bindings, resolve every handler"
urirun connectors verify ./urirun-connector-thing

host ask plans against the node's /routes; a failed step's node error feeds back so the planner repairs the flow. host probe reports STABLE vs CHURNED so testing a node whose registry keeps changing yields an honest verdict. See Host and node on a LAN.

Versioned commands

urirun-v1 compile v1/examples/json/bindings.v1.example.json --out /tmp/registry.json
urirun-v1 run 'media://local/video/transcode' /tmp/registry.json --payload '{"input":"a.mp4","output":"b.mp4"}'
urirun-v2 --help

Use these versioned commands when a script must stay pinned to a major registry contract.

Module commands

The module namespace is urirun, so these are also valid:

python -m urirun.v2 --help
python -m urirun.v2_mcp tools generated/registry.json
python -m urirun.v2_mcp card generated/registry.json