Examples
A URI is a stable address for an action. One flow can touch a local urirun registry, MCP, an agent, an LLM and another IFURI app on the LAN — without changing addresses.
Flow: review and share
flow:
id: local-review-and-share
group: dev-ops
do:
- urirun://local/registry/query/health
- mcp://filesystem/list:
path: ./project
- llm://local/qwen/analyze:
input: file://project-summary
- tool://local/report/command/render:
format: html
- ifuri://lenovo-node.lan/services/browser/open:
url: https://ifuri.com
From shell urisys to a urirun binding
Instead of a hand-written shell command in a flow step (the old urisys):
ffmpeg -i a.mp4 -vf scale=1280:720 b.mp4
describe it once as a urirun binding with payload validation and call it as a stable URI:
{
"bindings": {
"media://local/video/transcode":
"ffmpeg -i {input} -vf scale={width}:{height} {output}"
}
}
urirun run 'media://local/video/transcode' \
--registry registry.json \
--payload '{"input":"a.mp4","width":1280,"height":720,"output":"b.mp4"}' --execute
Run it from IFURI
ifuri-app urirun-scan ./project --registry-out generated/registry.json
ifuri-app urirun-call 'media://local/video/transcode' \
--registry generated/registry.json \
--payload '{"input":"a.mp4","width":1280,"height":720,"output":"b.mp4"}'
More examples (Docker, transports, multi-transport, MCP/A2A) in the tellmesh/urirun repository.