Model catalog
| Model | Provider | Aliases | Context | Cost (in/out per Mtok) | Speed |
|---|---|---|---|---|---|
claude-fable-5 | anthropic | fable, claude-fable | 1M | 50.00 | n/a |
claude-opus-4-8 | anthropic | opus, claude-opus | 1M | 25.00 | 25 tok/s |
claude-opus-4-7 | anthropic | 1M | 25.00 | 25 tok/s | |
claude-opus-4-6 | anthropic | 1M | 25.00 | 25 tok/s | |
claude-sonnet-4-6 | anthropic | sonnet, claude-sonnet | 200K | 15.00 | 50 tok/s |
claude-sonnet-4-5 | anthropic | 200K | 15.00 | 50 tok/s | |
claude-haiku-4-5 | anthropic | haiku, claude-haiku | 200K | 4.00 | 100 tok/s |
gpt-5.4 | openai | gpt54, gpt5, codex | 272K | 15.00 | 70 tok/s |
gpt-5.5 | openai | gpt55 | 272K | 30.00 | 70 tok/s |
gpt-5.5-pro | openai | gpt55-pro | 1M | 180.00 | 20 tok/s |
gpt-5.4-mini | openai | gpt54-mini, codex-spark | 272K | 4.50 | 140 tok/s |
gpt-5.4-pro | openai | gpt54-pro | 1M | 180.00 | 20 tok/s |
gemini-3.1-pro-preview | gemini | gemini-pro | 1M | 12.00 | 85 tok/s |
gemini-3.1-pro-preview-customtools | gemini | gemini-customtools | 1M | 12.00 | 85 tok/s |
gemini-3.5-flash | gemini | gemini-35-flash | 1M | 9.00 | 150 tok/s |
gemini-3-flash-preview | gemini | gemini-flash | 1M | 3.00 | 150 tok/s |
gemini-3.1-flash-lite | gemini | gemini-flash-lite, gemini-3.1-flash-lite-preview | 1M | 1.50 | 200 tok/s |
kimi-k2.5 | kimi | kimi | 262K | 3.00 | 50 tok/s |
glm-4.7 | zai | glm, glm4 | 203K | 2.20 | 100 tok/s |
minimax-m2.5 | minimax | minimax | 197K | 1.20 | 45 tok/s |
mercury-2 | inception | mercury | 131K | 0.75 | 1000 tok/s |
ANTHROPIC_API_KEY, OPENAI_API_KEY, or GEMINI_API_KEY set with fabro secret set or fabro provider login). Standalone SDK/CLI flows can opt into env-backed credential sources explicitly. See the Quick Start for setup.
Claude Fable 5 is available as an explicit model but is not the default Anthropic model. If Fable refuses a request, Fabro reports the refusal as a content-filter LLM error and applies the configured run.model.fallbacks chain when one is present.
Configuring providers and models
Fabro’s catalog starts with the built-in providers and models, then merges any[llm] entries from settings. Provider and model IDs are strings, so a server or project can add an OpenAI-compatible provider without a Fabro release.
settings.toml
settings.toml
api_id is the model name sent to the provider API. Omit it when the Fabro model ID and provider model ID are the same.
Model roles are separate: default = true controls normal model selection for workflow execution, while small_default = true marks the provider’s small/cheap utility model for metadata tasks such as generated run titles. If a provider has no small default, Fabro falls back to that provider’s normal default.
Provider auth is declared in [llm.providers.<id>.auth] with ordered env:<NAME> or vault:<NAME> refs. The primary auth header defaults to bearer; override with header = { custom = "Header-Name" } for providers like Anthropic that use x-api-key. Omit the [llm.providers.<id>.auth] block entirely for providers that need no API key (e.g. Ollama). Custom headers for any provider — including providers that need only typed headers and no API-key auth — go in extra_headers as { env = "NAME" }, { vault = "NAME" }, or { literal = "value" }.
Provider agent_profile defaults from adapter and controls profile-specific behavior such as project-memory filenames, CLI/ACP command selection, and native session routing. Valid values are anthropic, openai, and gemini; model-level values override provider-level values.
Provider billing_policy defaults from adapter and controls usage-cost estimation. Use openai, anthropic, gemini, or none.
Provider fields in configuration, APIs, and model routing are provider ID strings. Built-in names like
anthropic, openai, and gemini still work, but custom IDs like proxy work anywhere a provider ID is accepted.Ollama
Fabro ships an Ollama provider definition that is disabled by default. Enable it in settings when you want Fabro to route through a local Ollama server:settings.toml
[llm.models.<id>] blocks for each Ollama model you have pulled locally. Ollama’s OpenAI-compatible endpoint accepts any bearer token, so local users can set OLLAMA_API_KEY=ollama.
Default models
When no model or provider is specified, Fabro checks configured provider credentials and chooses the first configured provider by catalog priority. If no provider credentials are configured, it uses the catalog’s global default model. Each provider has a default model:| Provider | Default model |
|---|---|
anthropic | claude-sonnet-4-6 |
openai | gpt-5.5 |
gemini | gemini-3.5-flash |
kimi | kimi-k2.5 |
zai | glm-4.7 |
minimax | minimax-m2.5 |
inception | mercury |
Using models in workflows
Assign models to workflow nodes using model stylesheets, which use a CSS-like syntax:example.fabro
Overriding the default model
Model stylesheets set per-node models inside the workflow graph, but you can also override the default model for an entire run. This is useful for quick experimentation or when you want to swap models without editing the Graphviz file.CLI flags
Pass--model and optionally --provider to fabro run:
--provider for models not in the catalog or to force a specific provider.
Run config TOML
For repeatable runs, set the model in a run config file:run.toml
fallbacks array is optional. Each entry may be a bare provider token (like "gemini"), a bare model alias (like "gpt-5.4"), or a qualified "provider/model" reference. Fabro tries them in order when the primary provider is unavailable.
The precedence order is: node-level stylesheet > run config TOML > CLI flags > server defaults. More specific settings always win.