UniProvider and Open Provider Registry
The annoying future (unless we stop it)
Someone ships a unilayer that auto-detects Ollama.
Someone else ships a unilayer that prefers LM Studio.
A third app invents a private JSON registration scheme for “any runner.”
Offline model developers then spend their lives complying with three formats that all mean “here is my base_url.”
That is the failure mode. Open Provider Registry (OPR) exists so registration and exposure are a shared protocol, not a product brand war.
Division of labor
| Layer | Job |
|---|---|
OPR |
Discover and describe endpoints (online + offline). On-disk manifests + optional |
UniProvider |
Dev-Centr reference implementation: library, CLI, transitional well-known probes, localhost aggregator. |
Mixr / app routers |
Pick which model for which job (cost, latency, policy). Consumes discovered endpoints; does not own registration. |
Editors (e.g. SoloMD) |
UX for writing; may keep BYOK cloud lists; should consume OPR instead of hard-coding every local runner. |
Vocabulary for where weights run: Agent control planes. Mixr detail: Mixr routing and cost.
Protocol stance
-
Open source, versioned — draft in
spec/opr.md. -
Neutral paths —
%LOCALAPPDATA%\opr\providers\/~/.config/opr/providers/(not a single vendor folder as the only root). -
Competing aggregators OK — another “unilayer” that reads OPR is conformant.
-
Competing registration formats not OK — extend
opr_version; do not invent a sibling schema for the same job.
PoC behavior in UniProvider: recognize a few well-known runners by port until they emit OPR manifests on install. Long-term, runners maintain their own registration (file drop and/or library helper on first-run).
Prior art (honest)
OpenAI-compat is the common wire format — not a registration service. OpenRouter is a curated online marketplace. LiteLLM and Olla are strong self-hosted proxies with operator config / profiles. UPP is a client call abstraction. None of those replace a neutral on-disk registration protocol runners write once for every consumer. Detail table: OPR prior art. Verdict: not invalidated — prefer OPR feeding existing proxies rather than replacing them.
Online directory (implemented)
Trivial global self-registration needs a hosted directory.
That is OPR Directory — SolidStart on Netlify/Vercel (not Cloudflare Workers): dev-centr/opr-directory.
Planned hostname providers.devcentr.org once DNS is pointed.
Local runners still use UniProvider on disk; the online directory rejects localhost base_url values.
Consuming from Tauri / JavaScript
Prefer localhost HTTP or reading manifests from disk. FFI/WASM bridges to the D library are optional and only justified by measured cost — see the UniProvider bridge note.
Markdown editor context: Markdown editors on local disk.
Links
-
Product docs: UniProvider
-
Repo: dev-centr/uniprovider
-
Online directory: dev-centr/opr-directory
-
Recommended tools: Recommended tools