ifURI docs

Registry and bindings

urirun separates the package contract from the runtime lookup tree.

Binding document

A binding document is portable JSON. It describes URI routes, input schemas, and adapter configuration.

{
  "version": "urirun.bindings.v2",
  "bindings": {
    "report://local/render/pdf": {
      "kind": "command",
      "adapter": "argv-template",
      "inputSchema": {
        "type": "object",
        "required": ["input", "output"],
        "properties": {
          "input": { "type": "string" },
          "output": { "type": "string" }
        },
        "additionalProperties": false
      },
      "argv": ["python3", "render.py", "{input}", "{output}"]
    }
  }
}

Registry

The registry is compiled from one or more binding documents:

urirun compile bindings.v2.json --out registry.json

The runtime dispatches from the registry only. This makes a generated registry reviewable, reproducible, and safe to pass between shell clients, HTTP services, browser consoles, Docker orchestrators, and agent projections.

Route identity

The full URI matters. A route such as:

device://device-01/led/command/set

can coexist with:

device://device-02/led/command/set

because the target is part of the route identity. This avoids conflicts when multiple services expose the same operation shape for different targets.

Conflict policy

Generated bindings should be deterministic:

Connector registry entries

Connector packages can ship their own bindings and publish catalog metadata through connect.ifuri.com.

For example, the HTTP Check connector exposes:

httpcheck://host/http/query/status

The package returns a normal v2 binding document:

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

From there the flow is the same as any local binding:

urirun validate bindings.json
urirun compile bindings.json --out registry.json
urirun list registry.json

The hub adds discoverability, install commands and machine-readable metadata, but the runtime still dispatches through the compiled registry.