noVNC LAN demo
A Docker demo where URI commands control real Chromium browsers running inside virtual noVNC desktops. The browser opens inside the container, not on the host — and one flow drives several computers on the LAN through one shared URI contract.
Source: if-uri/examples/11-novnc_lan_flow
What runs
pc1-browser…pc4-browser— Selenium Chromium desktops with noVNC.pc1-api…pc4-api— small URI node APIs exposingbrowser://,app://andlog://.dashboard— browser view with noVNC iframes, logs and the last flow result.orchestrator/run_flow.py— sends a multi-step URI flow to the computers.
Optional pc3 and pc4 services start behind the Compose profile full.
Run
make up
Open the dashboard and the noVNC desktops:
Dashboard: http://127.0.0.1:8192/?pc1NovncPort=7901&pc2NovncPort=7902&pc1ApiPort=9001&pc2ApiPort=9002
pc1 noVNC: http://127.0.0.1:7901/?autoconnect=1&resize=scale
pc2 noVNC: http://127.0.0.1:7902/?autoconnect=1&resize=scale
If these ports are busy, run the same demo on another set — the dashboard accepts port overrides in the query string:
DASHBOARD_PORT=18192 \
PC1_NOVNC_PORT=17901 PC2_NOVNC_PORT=17902 \
PC1_API_PORT=19001 PC2_API_PORT=19002 \
make up
The URI flow
make flow
The basic flow opens pages and captures screenshots through these URI commands:
browser://pc1/page/command/open
browser://pc1/page/command/screenshot
browser://pc2/page/command/open
browser://pc2/page/command/screenshot
log://pc1/session/command/write
log://pc2/session/query/recent
Every computer is just another node on the ifuri:// network — the same action
address works locally and remotely, and the audit log records the envelope, payload,
status, time and source of every call.
More examples (Docker, transports, MCP/A2A) live in the if-uri/examples repo and the if-uri/urirun runtime.