ifuri App
A desktop workspace: visual flow editor, voice UI, chat with endpoints, device and LAN views, and a local HTTP API.
Connect apps through URI.
Any process as an MCP / A2A service, by URI. A local-first runtime for flows, devices, agents and LAN services.
ifuri.com · if URI, then flow.
deck://ifuri/problem
Stop scripting integrations. Start routing URIs.
deck://ifuri/idea
Functions, scripts, containers, HTTP services, MQTT topics, firmware commands — each becomes a stable, validated URI.
device://device-01/led/set/on media://local/video/transcode dns://host/records/command/plan
deck://urirun/anatomy
deck://urirun/core-model
deck://ifuri/two-ways
A desktop workspace: visual flow editor, voice UI, chat with endpoints, device and LAN views, and a local HTTP API.
A lightweight runtime: scan a project, generate a validated registry, and run URIs from the CLI, a backend, or the app.
deck://urirun/run
# turn project artifacts into a validated registry urirun scan ./project --registry-out generated/registry.json urirun validate generated/bindings.v2.json # dry-run by default — the exact command is printed first urirun run 'cli://local/git/status' generated/registry.json urirun run 'media://local/video/transcode' registry.json \ --payload '{"input":"a.mp4","width":1280}' --execute
Nothing runs until you pass --execute, and every call passes the policy gate.
deck://urirun/mcp-a2a
Any process as an MCP/A2A service — one schema, many surfaces.
deck://ifuri/connectors
deck://ifuri/mesh
deck://ifuri/flows
flow: id: local-review-and-share 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://node.lan/services/browser/open: url: https://ifuri.com
deck://ifuri/is-isnt
deck://ifuri/not-this
… just an API?
REST, gRPC and MCP define the transport — how to call a service. ifuri defines the address: the same URI runs in-process, over HTTP, gRPC, MCP, shell or MQTT. And not everything is an HTTP API — scripts, containers, devices, MQTT topics, firmware. ifuri addresses them all the same way.
… just DNS / kube-dns?
DNS resolves where a service is — name → host:port. ifuri resolves what you can call, with which contract, and how it runs — with policy and audit. A layer above, and it works outside k8s too: laptops, devices, firmware, LAN peers.
deck://ifuri/install
# local urirun node (Linux / macOS) curl -fsSL https://get.ifuri.com/node.sh | bash # the runtime, straight from GitHub pip install "git+https://github.com/if-uri/urirun.git@main#subdirectory=adapters/python" # the desktop app ifuri-app voice --auto-port
deck://ifuri/outro
Give every process an address. Validate it once. Run it from the CLI, a backend, the app, or an agent — local-first, across your LAN.