OpenNodes Protocol ยท ONP Draft 0.1
MCP standardized how AI reaches tools. The OpenAI API shape standardized invocation. x402 standardized machine payments. Nothing standardizes how a client finds an inference endpoint it doesn't already know โ what model it serves, on what hardware, at what price, and whether it's honest. OpenNodes fills exactly that gap, and composes the rest from existing standards.
The loop
/.well-known/open-node.json: models, hardware, benchmarks, per-token price โ signed, revisioned.Why it's different
A university cluster, a sovereign EU cloud, your own Ollama box โ same automated admission gate for everyone. Claiming a model you don't serve gets you marked disputed and delisted.
Every search result carries its rank explanation โ component weights and values. Undisclosed ranking inputs are non-conformant. Claimed, measured, and attested values are never blended.
Discovery is metadata; invocation goes direct from client to node. Your prompts don't transit anyone's middlebox โ which is why data-residency deployments can actually use it.
The registry is a protocol, not a place: an OpenAPI anyone can implement, plus a signed, mirrorable export feed. Node Cards live at the node's origin โ no registry owns the data.
Quickstart
Per-app setup for Cursor, Claude Desktop, Claude Code, VS Code, Windsurf, Open WebUI, Continue, Zed, the OpenAI SDK, LangChain, LiteLLM and agents: see Integrations.
Every registry serves an OpenRouter-style web app at its root: searchable catalog with transparent per-result rank explanations, node pages with probe and listing history, and the full registration + qualification flow (submit card โ namespace challenge โ Stage A โ Stage B). The hosted instance is live at registry.opennodes.io โ 9,000+ offerings across registered nodes and the OpenRouter, Hugging Face, models.dev, and Ollama catalogs, re-imported every six hours. Or run your own (Node โฅ 22.5):
npx @opennodes/registry # app + API + MCP on http://127.0.0.1:4300
One Ollama-compatible endpoint: your local models, your other machines (plain Ollama or Node Kit nodes, found via mDNS), and verified public nodes with pinned prices and signed receipts. auto-private never leaves your network. Works unchanged with Open WebUI, Continue, Zed, Msty, and the ollama CLI.
npx @opennodes/ollama-router # then OLLAMA_HOST=127.0.0.1:11435
ollama run auto-private "summarize this confidential note" # routes only to local / LAN models
npx @opennodes/cli mcp --print-config # paste into Cursor / VS Code / Claude Desktop
npx @opennodes/cli gateway --port 4141 # models onp/auto, onp/auto-cheap, onp/auto-private, โฆ
# point the app's OpenAI base URL at http://127.0.0.1:4141/v1
pipx install onp-node
onp-node init --engine http://127.0.0.1:11434/v1 --id org.example.ai --public-url https://ai.example.org
onp-node serve && onp-node check && onp-node register https://registry.example.org
Surge (pre-release: Windows installer, source on GitHub) is a desktop "browser for MCP" and the reference OpenNodes client. The model picker is fed live from an ONP registry โ trust tier, measured latency, per-MTok price โ and Auto runs the advisor on your machine to pick a node per prompt. Every call goes direct to the node, pinned to its card revision, and comes back with a signed receipt that Surge verifies (amount = usage ร pinned price) and shows under the reply. A spend policy is on from first launch (spending off until you set a budget), a dashboard keeps the ledger, and one click switches to private mode: your local Ollama and LAN machines only. Models via OpenNodes, tools via MCP, in one app.
Specification