LOCAL AIregistry

How it works

A recipe is not written by hand. The lab rents the GPU, starts the model, runs six checks, and writes the recipe only if every check passes. The file is about 400 bytes; everything else is rendered from it.

A recipe
{"model":"qwen3.5-9b",
 "weights":"TheMelonGod/Qwen3.5-9B-exl3@22ef1303062e0f6d0b282440f8c1f685947f4938",
 "engine":"tabbyapi-exl3@0f83e6198dc3",
 "set":{"ctx":65536,"draft":"mtp"},
 "card":"rtx-3070-ti-8gb",
 "proof":[{"at":"2026-09-25","on":"vast","gpu":"RTX 3070 Ti",
           "gates":"load chat reasoning tools context speed","tps":105.3,"prefill":1485}]}
weights
A Hugging Face repo at an exact commit.
engine
A profile in registry/engines/, pinned to its container image digest.
set
Only the settings that differ from the profile's defaults.
proof
The runs it passed: where, on what GPU, which checks, and the speed measured. Sibling means it ran on the same chip family because nobody rents this card; earlier check means it passed the older acceptance and is waiting for a full run.
The six checks
loadThe server lists the model within an hour
chatA plain question gets an answer that ends on its own
reasoningThe thinking comes back separately, and 17 × 23 is answered 391
toolsA weather tool is called with the right city, and its result is used in the reply
contextA code planted in a prompt filling 85% of the window is recalled
speedDecode over the first 30 seconds of an answer is at least 15 tok/s. No answer is ever cut short.
The repository
registry/                     the source of truth, tiny
  cards/<vendor>/<card>.json        a GPU: name, memory, how to detect it
  engines/<profile>.json            an engine: pinned image, arguments, config
  recipes/<vendor>/<card>/<model>.<engine>.<ctx>k.json
                                    one recipe (~400 bytes): weights, engine, settings, proof
  models.json                       each model: family, release date, what it is for
lab/            make recipes: lab.py (try, convert, render, check), catalog.py
dist/           catalog.json: everything above, rendered, 3 picks per GPU
site/           this website and its API
sdk/            js/ and python/: pick a recipe for a GPU, print the command
app/            local-ai: run a recipe on any Linux
images/         the container images we build (gateway, tabbyapi-exl3, ...)
plugin/         what the Omarchy Local AI plugin reads
data/           everything the registry held before; nothing reads it
API
GET /api/v2/catalog.jsonEverything: every GPU, its picks, every recipe with its rendered launch
GET /api/v2/gpus/<gpu>.jsonOne GPU and its top recipes, launches included
GET /api/v2/pick?gpu=RTX%203090&vram=24The recommended recipe for the GPU a program detected
curl -s "https://local.sybilsolutions.ai/api/v2/pick?gpu=RTX%204090&vram=24" | jq .recipe.launch.image
SDK
// JavaScript (sdk/js): no dependencies
import { pick, command } from "@local-ai/registry";
const r = await pick({ gpu: "NVIDIA GeForce RTX 4090", vram: 24 });
console.log(command(r));

# Python (sdk/python): standard library only
from local_ai_registry import pick, command
print(command(pick(gpu="NVIDIA GeForce RTX 4090", vram=24)))