LLM roles
A realm never names a model. The installing world may not run the model its author used, so a realm names a role, and each world maps each role to a model it actually has. These role ids are part of this contract: a realm that uses one can rely on every conforming host knowing it.
| Role | Intended use |
|---|---|
chat_best |
High-quality conversational responses — the model a person talks to |
chat_cheap |
Fast, low-cost conversational work where quality matters less |
code_best |
The strongest code generation: building apps, complex transforms |
code_cheap |
Cheaper code generation for simple or bulk edits |
routing |
A small fast model for classification, routing and extraction |
narration |
Rewriting a reply to be spoken aloud |
vc_execution |
Summarising, scoring and labelling query results inside Virtual Cypher: many small calls |
vc_relevance |
Judging whether each result is really about a criterion, where a cheap model over-matches |
agentic_rag |
Driving a bounded retrieval loop: searching, reformulating, judging fit |
A prompted action names its role where it would otherwise name a model:
llm: role: code_bestA host resolves an unknown role to its own default model rather than refusing, so a realm written
against a newer role still runs on an older host, at whatever quality that default gives. An agent
may say which roles its work leans on, so a world can see before adopting it that, for example, its
duties need vc_relevance mapped to something better than the cheapest model. Forward-looking.

