Getting started
Install directly from GitHub:
pip install "git+https://github.com/tellmesh/urirun.git@v0.3.12#subdirectory=adapters/python"
The installed CLI and Python import namespace are both urirun.
Install a ready connector
The connector hub can install urirun plus selected connector packages:
curl -fsSL 'https://connect.ifuri.com/install?connectors=http-check,time-tools' | bash
For a virtualenv:
python3 -m venv .venv
PYTHON_BIN="$PWD/.venv/bin/python" \
bash -c "curl -fsSL 'https://connect.ifuri.com/install?connectors=http-check' | bash"
PATH="$PWD/.venv/bin:$PATH" urirun-http-check status https://ifuri.com --expect-status 200
More connector details: Connectors.
Generate a registry
Scan a project and compile a runtime registry in one command:
urirun scan ./project \
--out generated/bindings.v2.json \
--registry-out generated/registry.json
The scanner can read explicit binding files, Dockerfile labels, package scripts, Python entry points, Makefile targets, and shell scripts.
Inspect routes
urirun validate generated/bindings.v2.json
urirun list generated/registry.json
Run a URI
Dry-run is the default for command-like routes:
urirun run 'cli://local/git/status' --registry generated/registry.json
For real execution, use a policy file and the --execute flag:
urirun run 'cli://local/git/status' \
--registry generated/registry.json \
--policy policy.json \
--allow 'cli://local/**' \
--execute
Keep shell templates behind an explicit policy with allowShellTemplates: true.
Run the HTTP Check connector
After installing http-check, build its bindings and execute the URI:
python - <<'PY' > bindings.json
import json
from urirun_connector_http_check import urirun_bindings
print(json.dumps(urirun_bindings(), indent=2))
PY
urirun validate bindings.json
urirun compile bindings.json --out registry.json
urirun run 'httpcheck://host/http/query/status' registry.json \
--payload '{"url":"https://ifuri.com","expectStatus":200,"timeout":10}' \
--execute \
--allow 'httpcheck://host/*'
Run the Time Tools connector
After installing time-tools, build its bindings and execute the URI:
python - <<'PY' > bindings.json
import json
from urirun_connector_time_tools import urirun_bindings
print(json.dumps(urirun_bindings(), indent=2))
PY
urirun validate bindings.json
urirun compile bindings.json --out registry.json
urirun run 'time://host/clock/query/now' registry.json \
--payload '{"timezone":"UTC","output":"iso"}' \
--execute \
--allow 'time://host/*'