urirun

Getting started

Install with the one-line shell installer:

curl -fsSL https://ifuri.com/urirun/install.sh | sh

The installed CLI and Python import namespace are both urirun.

Manual GitHub install:

pip install "git+https://github.com/tellmesh/urirun.git@main#subdirectory=adapters/python"

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.

Connect to IFURI

The IFURI app can use the same registry as the capability source for flows and device views:

ifuri-app urirun-info
ifuri-app urirun-call 'cli://local/git/status' \
  --registry generated/registry.json

On a LAN, each node should publish its route list and execute only URIs allowed by its local policy.