Models and engines¶
The catalog. Every model the company can name lives in
~/.soloinc/models.json: id, vendor, channel, context window, list price,
capability tier, modalities, when it was released and first seen. It is
seeded with the seat's models and refreshed by the orchestrator from what
the machine can reach — the seat, each local engine's model list, each
registered provider's list and, only while the API switch is on, the vendors'
public lists with OpenRouter as the index. New arrivals are marked new;
an id nobody has described is accepted and marked unverified.
Three channels. The seat (your Claude Code subscription — the default, metered by allowance, never by money); local engines on your hardware (Ollama, MLX, llama.cpp, vLLM, LM Studio — free, slower, weaker); metered providers (OpenAI, Gemini, OpenRouter, Anthropic's API) which are reached only while the Human's API switch is on. Which channels work may run on, and in what order, is a company-wide setting on the Seats board.
Two ways to run. The seat channel runs through Claude Code (the claude
binary). The local and provider channels run through SoloINC's own native
runtime, which needs no Claude Code and speaks the Anthropic Messages API
directly. The native runtime has no web search of its own — that is Claude
Code's, and it runs server-side — so a workload that leans on search stays on
the seat unless you add a search provider.
The shim. Both paths speak the Anthropic Messages API and nothing else. The translation shim fronts everything else on loopback, in two dialects: Ollama's own and the OpenAI chat-completions shape — so one wire shape reaches every vendor's API and every local engine. A public upstream is refused unless the shim was started for a metered provider — and that happens only with the API switch on.
Routing. A workload pins a model, or names a router: cheapest,
fastest, best, efficient, a model that chooses, or a self-hosted
router. Bounds apply before the choice: the contract reserves the most
capable model for planning, verification and synthesis; a model that cannot
hold the workload's context is not a candidate; a quality_floor sets aside
models the evals matrix has measured under it on that workload.
Best model per workload. The matrix on the cell's Seats and models facet: (model, workload) → quality (a judge's score with its own tier stated as the ceiling), speed and list cost from the runs that happened. Trial a model runs three of the workload's eval cases on a model, one turn each, judges them, and folds the result in.
Engines. soloinc detects an engine's dialect from its address; the
local-engine form has a Detect button. Profiles and install lines for
Ollama, MLX, llama.cpp and vLLM are on the Seats board.