The models the Inferit API knows, as open data: ids, names, aliases, context windows and licence classes.
The same rows GET /v1/models serves, without the prices and seller data the API serves live.
Status: Inferit is a testnet demo on Whitechain Sepolia. Prices settle in Inferit Test Credit (ITC), a test token with no monetary value. The contracts are not audited.
Inferit is a peer-to-peer market for AI inference. Anyone can sell inference at their own price, and buyers and agents pay per request through one OpenAI-compatible API. This repository is that API's model list in one JSON file, checked against the live API on 2026-10-13.
- What is in it
- A row
- Fields
- Licence classes
- Prices and sellers: ask the API
- Use it
- Sell one of these models
- Check it
- Sources
- Licence
| File | What |
|---|---|
catalog.json |
26 models: 23 open-weight models and 3 closed-weight reference rows |
licenses.json |
The 9 licences those models use: name, link and the class the API applies when a seller lists an offer |
schema/catalog.schema.json, schema/licenses.schema.json |
JSON Schemas (draft 2020-12) for both files |
scripts/validate.mjs |
The rules a schema cannot express: unique ids and aliases, licence links between the files |
scripts/check-live.mjs |
Compares catalog.json with the live GET /v1/models |
{
"id": "qwen/qwen-2.5-14b-instruct",
"name": "Qwen: Qwen2.5 14B Instruct",
"owned_by": "qwen",
"aliases": ["qwen2.5:14b-instruct", "qwen2.5:14b", "qwen2.5-14b-instruct", "Qwen/Qwen2.5-14B-Instruct"],
"context_length": 32768,
"license": "apache-2.0",
"license_class": "permissive",
"open_weight": true,
"servable": true
}The field names are the API's own, so a row here parses like a row of GET /v1/models. license_class is the one field this file adds.
| Field | Type | Meaning |
|---|---|---|
id |
string | The model id to send as model in POST /v1/chat/completions: publisher/model, lowercase |
name |
string | Display name |
owned_by |
string | The publisher: the part of the id before the / |
aliases |
string[] | Other names the API accepts for the model, matched case-insensitively: an Ollama tag (qwen2.5:14b-instruct) or a Hugging Face repo id (Qwen/Qwen2.5-14B-Instruct). The seller app uses them to match local model names to catalog ids |
context_length |
integer | The model's context window, in tokens. A seller may serve a smaller window: each offer's own is in GET /v1/models/{id}/endpoints |
license |
string | The licence of the model's weights, an id in licenses.json |
license_class |
string | How the API treats an offer on this model when a seller lists it: permissive, conditional or not_allowed (next section) |
open_weight |
boolean | true when the weights are published; false exactly when license is proprietary |
servable |
boolean | false for a reference row: no seller can list the model on Inferit, and a request for it answers 404 model_not_servable |
| Class | When a seller lists an offer | Licences in this catalog |
|---|---|---|
permissive |
It lists with no acknowledgement | Apache License 2.0, MIT License |
conditional |
The seller accepts the licence's conditions with licenseAck: true |
Qwen License Agreement, Llama 3.1, 3.3 and 4 Community License Agreements, Gemma Terms of Use, Modified MIT License (Kimi) |
not_allowed |
The API refuses it (license_not_listable) |
Proprietary (closed weights): the 3 reference rows |
The classes are Inferit's reading of each licence text, read on 2026-10-02. They are not legal advice: read the licence licenses.json links. The seller is responsible for having the right to serve what it lists; the licence terms are between the seller and the model's lab.
This file holds no prices, no seller data and no quality scores. Those change while the market runs, so they come from the API:
| You want | Ask |
|---|---|
| List price, the cheapest healthy offer's price, seller counts and health per model | GET /v1/models: pricing, best_price, live |
| Every seller's offer of one model: all-in price, context window, health | GET /v1/models/{id}/endpoints, with the id URL-encoded (qwen%2Fqwen-2.5-14b-instruct) |
| One model's order book | GET /api/markets/{model} |
| The quality ranking model auto uses | GET /v1/routing and inferit.cc/docs/routing |
API prices are integers in µ per 1M tokens: one µ is a micro-dollar, a millionth of a dollar. On the testnet it is a micro-ITC, a test token with no monetary value.
GET /v1/models also lists three rows that are not models: auto, auto:cheap and auto:best. They are model auto's policies, where Inferit picks the model and then the cheapest healthy seller of it, so this file leaves them out. The routing docs describe them.
The file is plain JSON. Read it from this repository:
const url = 'https://raw.githubusercontent.com/InferitAI/model-catalog/main/catalog.json';
const { models } = await (await fetch(url)).json();
// Resolve any name the API accepts (id or alias, any case) to a catalog row.
const byName = new Map(models.flatMap((m) => [m.id, ...m.aliases].map((k) => [k.toLowerCase(), m])));
byName.get('qwen2.5:14b-instruct').id; // 'qwen/qwen-2.5-14b-instruct'
// Models a seller can list today.
const servable = models.filter((m) => m.servable);Or ask the live API for the same rows with their prices:
curl -s https://api-production-c74b9.up.railway.app/v1/models \
| jq '.data[] | select(.auto == null) | {id, context_length, license, servable, best_price}'Sellers may list any model at their own price. Today the API accepts an offer only for a model in this catalog; any other model answers model_not_found.
- From your own computer: inferit-seller connects a local Ollama, LM Studio, vLLM or llama.cpp server to the market with one command, with no open port or domain. Start with the seller quickstart.
- From an https endpoint: inferit.cc/docs/sellers.
- Set prices: the Sell workspace, inferit.app/sell.
To ask for a model, open an issue with its Hugging Face repo id and a link to its licence. A model joins the API's catalog first; this file follows it.
Node 18 or newer. No install needed:
node scripts/validate.mjs # unique ids and aliases, licence links, open_weight and servable rules
node scripts/check-live.mjs # every row against the live GET /v1/models (exit 1 on a difference)
npx --yes ajv-cli@5.0.0 validate --spec=draft2020 -s schema/catalog.schema.json -d catalog.json
npx --yes ajv-cli@5.0.0 validate --spec=draft2020 -s schema/licenses.schema.json -d licenses.jsonCI runs the schema checks and validate.mjs on every push to main and on every pull request.
- The rows: Inferit's catalog, as
GET /v1/modelsserved it on 2026-10-13.check-live.mjsmatched all 26 rows that day. - Ids, names and context windows: first read from OpenRouter's public model list on 2026-10-02, a data source and not a relationship. The Qwen 2.5 14B row was added by hand.
- Licences: read from each model's card and licence file on 2026-10-02.
- Data (
catalog.json,licenses.json): Creative Commons Attribution 4.0 (CC BY 4.0). Credit it as "Inferit model catalog (github.com/InferitAI/model-catalog), CC BY 4.0". - Schemas and scripts (
schema/,scripts/,.github/): Apache License 2.0. - Model names belong to their publishers. Each model's weights carry their own licence, which
licenses.jsonlinks; this repository grants no rights to any model. - The Inferit name and logo are not covered by either licence: see InferitAI/branding.
- inferit-seller: sell inference from your own computer (npm
inferit-seller). - whitechain-x402-facilitator: the first public x402 v2 facilitator for Whitechain, live on Whitechain Sepolia (testnet).
- branding: the Inferit logo files, colours and type.
- inferit.cc · docs · X
Inference, by the µ.