Try it
For a Llama model running locally through Ollama, save this as ~/Library/Application Support/Gnista/Models/ollama.json:
{
"version": 1,
"match": ["llama3.1:8b"],
"price": "free",
"context": 131072
}Within ten seconds, sessions running llama3.1:8b say they cost $0 and show how much of their 131K-token context they use, with Meta’s icon, which Gnista already knows. Settings ▸ Agents ▸ Models lists the file; Show Models Folder there opens the folder.
The model file
One file per model, or per family of models: up to 32 lowercase letters, digits, - and _, ending in .json. Only match is required, and a file must give at least an icon, a price or a context.
{
"version": 1,
"maker": "Acme",
"match": ["acme-coder", "acme"],
"icon": "acme.svg",
"motion": "breathe",
"monochrome": false,
"price": { "input": 0.5, "output": 1.5, "cacheRead": 0.05, "cacheWrite": 0.6 },
"context": 200000,
"about": "Prices from our internal rate card."
}| Key | What it does |
|---|---|
version | 1. |
match | Required. Up to 32 parts of the model ids it’s for, as your agent reports them: llama3.1:8b, acme-coder. Case doesn’t matter. A part of more than two characters matches anywhere in the id; one of two or fewer only as a whole word, so o3 matches o3-mini but not foo3. |
maker | Who makes it, as Settings names the file. Up to 40 characters. |
icon | An SVG or PNG file in the same folder, up to 1 MB, shown as a small badge on the agent’s icon. Without it, a model Gnista knows keeps its maker’s icon. |
motion | How the badge moves while the agent works: spin, twinkle, bob, swim, rock or breathe, or at your own pace: {"name": "spin", "period": 10}. |
monochrome | true for a single-colour mark, drawn in the colour of the text around it. |
price | "free", or US dollars per million tokens: input and output, and optionally cacheRead (a tenth of input if left out) and cacheWrite (1.25 times input if left out). |
context | The model’s context window in tokens, for the ring that shows how full it is. |
about | A note for whoever edits the file next. Gnista doesn’t show it. |
A file over 1 MB, or with anything wrong in it (an unknown key, a price that isn’t one, an icon Gnista can’t read), is ignored as a whole, never half-used. Settings ▸ Agents ▸ Models lists it with the reason.
Which file a model gets
- Your files come before Gnista’s own. Among several that match, the longest matching part wins:
llama-3.1-nemotronis NVIDIA’s (nemotron), not Meta’s (llama). - The icon comes from the best match that has one, the price and context from the best match that has them. A file with only a price keeps the maker’s icon.
- Your price and context come before the published prices Gnista knows, since you know your endpoint. A context window the agent reports itself still wins.
- No badge shows when the model is the agent maker’s own, such as Claude Code running Claude.
More examples
A model in LM Studio, free, with Gnista’s own Qwen icon:
{ "version": 1, "match": ["qwen2.5-coder-32b"], "price": "free", "context": 32768 }Your company’s endpoint, with its own icon and price, next to acme.svg:
{
"version": 1,
"maker": "Acme",
"match": ["acme-coder"],
"icon": "acme.svg",
"motion": "breathe",
"price": { "input": 0.5, "output": 1.5 },
"context": 200000
}Where it shows
The badge shows for agents that report their model, such as Claude Code, Codex, OpenCode, Antigravity and Droid, and for your own tools that send model (custom agents). Cost and context show for agents whose sessions Gnista reads; Settings ▸ Agents marks which those are.