Skip to main content

Models

File: config/agents/models.yaml · Schema: schemas/models.schema.json

The model registry: which provider serves each model, its pinned revision and its license, checked against the allow-list in policies.yaml.

Fields​

FieldTypeDescription
allowed_licenseslist of stringRequired. SPDX ids a model may be licensed under. A model whose license is not listed stops boot.
modelsmap of name → ModelDefRequired. Models by key; llm.extract and records.match name a model by this key.

Unknown fields are refused at boot.

Types​

Types referred to by the fields above, from the same schema.

ModelDef​

FieldTypeDescription
dimensionsinteger (uint32) (optional)Vector width; required for an embedding model, and must equal the embeddings.embedding column width.
licensestringRequired. SPDX license id; must be in allowed_licenses.
namestringRequired. The model name the provider serves, e.g. Qwen/Qwen3.8-27B-FP8.
paramsanyRequest parameters sent with every completion: temperature, max_tokens, enable_thinking, ….
providerstringRequired. Key in settings.llm.providers.
revisionstringRequired. The exact revision approved for use (a Hugging Face commit hash). Recorded here; nothing reads it at run time yet.
rolestringRequired. chat (used by llm.extract) or embedding (used by ingestion and records.match).

Unknown fields are refused at boot.

In this repository​

config/agents/models.yaml

# The model catalogue. Boot fails if any model's license is not in allowed_licenses.
models:
chat_default:
provider: vllm_chat # key in settings.llm.providers
name: Qwen/Qwen3.8-27B-FP8
revision: "<hf-commit-hash>" # pin before production (plan §18)
license: Apache-2.0
role: chat
params: { temperature: 0, max_tokens: 4096, enable_thinking: false }
embed_default:
provider: vllm_embed
name: Qwen/Qwen3-Embedding-0.6B
revision: "<hf-commit-hash>"
license: Apache-2.0
role: embedding
dimensions: 1024 # must equal the embeddings.embedding column width
allowed_licenses: [Apache-2.0, MIT, BSD-3-Clause]

Editor support​

The schemas are generated from the Rust definition structs (task schema_export), and a test fails when they drift. Point a YAML language server at the schema to get completion and validation while editing:

# yaml-language-server: $schema=../../schemas/models.schema.json