Skip to content

local runtime discovery

Thibaut Rey edited this page Sep 7, 2026 · 1 revision

Local runtime discovery

MultiVibe can discover a supported model runtime on the same machine and add it as an openai-compatible account without storing a fabricated API token. The authenticated dashboard triggers it in the background after the session is loaded. It can also trigger the operation directly through:

POST /admin/local-runtimes/discover

The endpoint uses the existing admin authentication boundary. Replaying it is idempotent: each runtime account keeps a deterministic ID such as local-runtime-lm-studio or local-runtime-omlx, and a successful probe updates that account instead of adding a duplicate.

Supported discovery

The automatic probes use only documented default loopback endpoints. The shared 8000 endpoint is classified from the response's official owned_by value, so a running OMLX instance is never labelled MTPLX (or the reverse).

Runtime Default probe Runtime signature Official icon
Ollama 127.0.0.1/::1:11434/v1/models Port 11434 Ollama repository logo
LM Studio 127.0.0.1/::1:1234/v1/models Port 1234 LM Studio brand asset
OMLX 127.0.0.1/::1:8000/v1/models Every returned model has owned_by: "omlx" OMLX icon
MTPLX 127.0.0.1/::1:8000/v1/models Every returned model has owned_by: "mtplx" MTPLX app icon
Exo 127.0.0.1/::1:52415/models Every returned model has owned_by: "exo" Exo menu-bar icon

Official API references:

The other adapter families remain available for explicit manual loopback configuration. They do not have automatic candidates until a stable, officially documented and non-ambiguous probe exists.

The bounded adapter registry also describes Ollama, llama.cpp/llama-server/llama-cpp-python, vLLM, SGLang, LocalAI, Hugging Face TGI and Transformers Serve, Xinference, MLX-LM, MLC LLM, Exo, Jan, GPT4All, KoboldCpp, text-generation-webui, Aphrodite, TabbyAPI, llama-box, mistral.rs, NVIDIA NIM, TensorRT-LLM, Triton, OpenLLM, BentoML, MTPLX, NVIDIA Personal AI Router (PAIR) and a manual OpenAI-compatible adapter. Each entry declares its protocol, health and catalog contract, capabilities, authentication, measurement units and bounded limits. Entries without a reliably identifiable official probe remain manual and have no automatic candidates. MultiVibe does not guess their ports or inspect processes, files, service registries, or the LAN.

Detection remains local until the user selects models. Cloud receives only the selected model identifiers and the metadata allowlist shown before consent.

NVIDIA PAIR

PAIR is registered as a dedicated, tokenless OpenAI-compatible adapter. It must be configured explicitly with the loopback endpoint displayed by PAIR. PAIR's documented default proxies deliberately impersonate the engine they front: port 11434 exposes an Ollama-compatible surface and port 1234 exposes an LM Studio/OpenAI-compatible surface. Its model-list response has no stable PAIR-specific signature. MultiVibe therefore does not guess whether either port belongs to PAIR and does not add automatic PAIR candidates.

The endpoint connects locally, but PAIR may execute a request on another paired machine on the user's trusted local network. MultiVibe treats this adapter as a personal-cluster execution boundary rather than proof that execution stayed on the machine running Core.

The dashboard exposes PAIR in Add account. The equivalent authenticated admin request is:

POST /admin/accounts
Content-Type: application/json

{"provider":"nvidia-pair","baseUrl":"http://127.0.0.1:11434"}

Core probes /v1/models before saving the deterministic account. Only a literal IPv4 or IPv6 loopback HTTP origin with an explicit port is accepted. If an automatically discovered Ollama or LM Studio account uses that same origin, the explicit PAIR identity takes precedence.

Network and authentication boundary

Automatic probes are limited to the literal IPv4 and IPv6 loopback candidates declared by the registry: the two Ollama URLs on port 11434, the two LM Studio URLs on port 1234, the two OMLX and two MTPLX URLs on port 8000, and the two Exo URLs on port 52415. No port scan is performed.

The probe has a deadline, a bounded response size, manual redirect handling, and strict JSON/model-ID validation. At least one model ID must be confirmed before an account is persisted.

An upstream request may omit Authorization only when all of these properties remain true:

  • the account carries MultiVibe's explicit discovery metadata;
  • its provider is openai-compatible and its location is local;
  • its token is the empty string;
  • its base URL and recorded endpoint use credential-free HTTP on literal 127.0.0.1 or ::1, on the adapter's declared port (1234 for LM Studio, 11434 for Ollama, 8000 for OMLX/MTPLX, 52415 for Exo);
  • the final request origin matches the discovered endpoint;
  • the path is one of the adapter's supported endpoints, with no query or fragment (/models is reserved for Exo's model catalog; inference uses the supported /v1 paths).

Redirects are not followed for classified local-runtime requests. A tokenless remote, DNS, LAN, non-allowlisted port, or ambiguous URL is rejected before a network request. Discovery performs no Cloud enrollment, community routing, or outbound telemetry.


Migrated from docs/local-runtime-discovery.md on 2026-09-07.

Clone this wiki locally