llm_provider |
object |
{…} (9 keys; values below) |
— |
Configuration for the LLM provider abstraction layer |
llm_provider.provider |
string |
"" |
— |
Name of the LLM provider to use (e.g., 'agy', 'claude', 'codex'). Leave empty to autodetect an installed provider CLI. |
llm_provider.default_effort |
string |
"" |
"", "none", "minimal", "low", "medium", "high", "xhigh", "max" |
Default reasoning-effort level applied to agent launches when a prompt does not request one via %effort or a %model:<model>@<effort> suffix. Leave empty for no override (let each provider use its own default). A configured level is best-effort: providers that cannot honor it skip it with a warning. |
llm_provider.default_model |
string |
"@large" |
— |
Model expression used when a prompt has no %model directive. Values use the same grammar as %model and may reference built-in size aliases such as @large. |
llm_provider.epic_lander_model |
string |
"@large" |
— |
Model expression used for epic land agents unless the plan sets an explicit land model. |
llm_provider.big_epic_lander_model |
string |
"@xlarge" |
— |
Model expression used for threshold-selected big epic land agents unless the plan sets an explicit land model. |
llm_provider.model_alias_history_limit |
integer |
10 |
— |
Maximum runs shown per alias in the Launch settings agent-history panel. |
llm_provider.model_tier_map |
object |
not set |
— |
Mapping from model tiers to specific model identifiers |
llm_provider.model_tier_map.large |
string |
not set |
— |
Model identifier for the 'large' tier |
llm_provider.model_tier_map.small |
string |
not set |
— |
Model identifier for the 'small' tier |
llm_provider.model_aliases |
object |
not set |
— |
Model alias configuration. builtin contains overrides for SASE's five size aliases; custom contains user-defined aliases with required descriptions. |
llm_provider.model_aliases.builtin |
object |
not set |
— |
Overrides for SASE's built-in size aliases: xsmall, small, medium, large, and xlarge. See src/sase/llm_provider/models.yml for the current shipped default of each alias. Values are bare known models, explicit provider/model targets, nested provider-local model paths, or '@<alias>' references; a reference may carry a trailing '@<effort>' that overrides the referenced alias's effort. Single-pipe values (A | B) form load-balanced round-robin pools; a pool member may be prefixed with a positive integer weight and a space (A | 3 B, weights 1-99) to favor that member. Double-pipe values (A || B) form ordered provider-availability fallbacks and cannot carry weights. Parenthesize a pool to attach a last-resort tail ((A | B) || C); unparenthesized mixing is still rejected. Every member uses the same grammar and may carry a trailing @<effort>. |
llm_provider.model_aliases.builtin.<key> |
string |
not set |
— |
— |
llm_provider.model_aliases.custom |
object |
not set |
— |
User-defined custom model aliases usable from %model:@<alias> / %m:@<alias>. Each custom alias must include both the target model and a short description shown in completions and Launch settings. |
llm_provider.model_aliases.custom.<key> |
object |
not set |
— |
— |
llm_provider.model_aliases.custom.<key>.model |
string |
not set |
— |
Model target using a bare model, provider/model, nested provider-local path, or @<alias>. Single-pipe values (A | B) form load-balanced round-robin pools; a pool member may be prefixed with a positive integer weight and a space (A | 3 B, weights 1-99) to favor that member. Double-pipe values (A || B) form ordered provider-availability fallbacks and cannot carry weights. Parenthesize a pool to attach a last-resort tail ((A | B) || C); unparenthesized mixing is still rejected. Every member uses the same grammar and may carry a trailing @<effort>. |
llm_provider.model_aliases.custom.<key>.description |
string |
not set |
— |
— |
llm_provider.model_aliases.custom.<key>.bucket |
string |
not set |
— |
Optional display-only bucket in sase's TUI Launch settings; alias resolution remains flat and unchanged. |
llm_provider.model_aliases.buckets |
object |
not set |
— |
Optional display-only Launch settings bucket metadata for buckets referenced by custom aliases. |
llm_provider.model_aliases.buckets.<key> |
object |
not set |
— |
— |
llm_provider.model_aliases.buckets.<key>.description |
string |
not set |
— |
— |
llm_provider.continuation_budget |
object |
{…} (7 keys; values below) |
— |
Continuation preflight budget settings for monitor successor prompts. Environment variables documented in docs/reference/environment-variables.md override these values. |
llm_provider.continuation_budget.context_limit_bytes |
integer |
800000 |
— |
Maximum provider context budget, in UTF-8 bytes, before reserves are subtracted. |
llm_provider.continuation_budget.transport_limit_bytes |
integer |
not set |
— |
Maximum prompt bytes that can safely pass through the provider transport. |
llm_provider.continuation_budget.checkpoint_threshold_bytes |
integer |
not set |
— |
Prompt-size threshold at which checkpoint-backed reductions are considered. |
llm_provider.continuation_budget.instruction_reserve_bytes |
integer |
0 |
— |
Bytes reserved for provider-side system instructions or command framing. |
llm_provider.continuation_budget.tool_reserve_bytes |
integer |
0 |
— |
Bytes reserved for provider tool definitions or tool-call framing. |
llm_provider.continuation_budget.output_reserve_bytes |
integer |
0 |
— |
Bytes reserved for the model's response. |
llm_provider.continuation_budget.reasoning_reserve_bytes |
integer |
0 |
— |
Bytes reserved for hidden reasoning or provider-specific overhead. |
llm_provider.continuation_budget.estimate_uncertain |
boolean |
true |
— |
Whether the budget request marks byte estimates as uncertain when exact provider accounting is unavailable. |
llm_provider.continuation_budget.providers |
object |
{agy} (values below) |
— |
Per-provider continuation budget overrides. Keys are registered provider names. |
llm_provider.continuation_budget.providers.<key> |
object |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.context_limit_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.transport_limit_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.checkpoint_threshold_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.instruction_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.tool_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.output_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.reasoning_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.estimate_uncertain |
boolean |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models |
object |
not set |
— |
Per-model continuation budget overrides for this provider. Keys are provider-resolved model names. |
llm_provider.continuation_budget.providers.<key>.models.<key> |
object |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.context_limit_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.transport_limit_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.checkpoint_threshold_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.instruction_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.tool_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.output_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.reasoning_reserve_bytes |
integer |
not set |
— |
— |
llm_provider.continuation_budget.providers.<key>.models.<key>.estimate_uncertain |
boolean |
not set |
— |
— |
llm_provider.retry |
object |
{claude, codex, sase} (values below) |
— |
Per-provider retry configuration. Keys are provider names (e.g., 'agy', 'claude', 'codex'). |
llm_provider.retry.<key> |
object |
not set |
— |
— |
llm_provider.retry.<key>.max_retries |
integer |
0 |
— |
Maximum number of retries on matching errors |
llm_provider.retry.<key>.error_patterns |
array |
[] |
— |
Substrings to match against error output (case-insensitive) |
llm_provider.retry.<key>.error_patterns[] |
string |
not set |
— |
— |
llm_provider.retry.<key>.wait_times |
array |
[30] |
— |
Wait times in seconds for each retry attempt. Last value is reused if retries exceed list length. |
llm_provider.retry.<key>.wait_times[] |
integer |
not set |
— |
— |
llm_provider.retry.<key>.fallback_model |
string |
not set |
— |
Model to fall back to after all retries are exhausted |
llm_provider.retry.<key>.continuation_prompt |
string |
not set |
— |
Prompt prefix applied when continuing after a retry |
llm_provider.retry.<key>.preserve_workspace |
boolean |
false |
— |
Preserve the existing workspace when retrying |
llm_provider.retry.<key>.spawn_new_agent |
boolean |
false |
— |
Retry in a fresh detached agent process |
llm_provider.usage_limit |
object |
not set |
— |
Usage-limit detection and automatic provider disable configuration. Unlike 'retry', this section has genuine global scalars (enabled, disable_seconds, min/max_disable_seconds, honor_reset_hint, notify) alongside per-provider pattern overrides nested under 'providers', because every provider's disable duration and reset-hint handling share the same defaults unless overridden. |
llm_provider.usage_limit.enabled |
boolean |
true |
— |
Enable automatic provider disable on detected usage-limit errors. |
llm_provider.usage_limit.disable_seconds |
integer |
86400 |
— |
Fallback disable duration in seconds used when no reset hint is available or honored. |
llm_provider.usage_limit.min_disable_seconds |
integer |
60 |
— |
Minimum disable duration in seconds; clamps any duration derived from a parsed reset hint. |
llm_provider.usage_limit.max_disable_seconds |
integer |
604800 |
— |
Maximum disable duration in seconds; clamps any duration derived from a parsed reset hint. |
llm_provider.usage_limit.honor_reset_hint |
boolean |
true |
— |
Prefer a reset time reported by the provider itself over the flat disable_seconds fallback. Parses a bare or zoned clock time ('resets at 8pm', 'resets 6:38pm (America/New_York)'), an absolute date ('try again at Aug 20th, 2026 6:38 AM', 'resets Aug 22, 8pm (America/New_York)', 'resets 2026-08-20 06:38 UTC'), or a relative duration ('try again in 2 hours'). |
llm_provider.usage_limit.honor_usage_windows |
boolean |
true |
— |
When no reset hint is found, fall back to a corroborated reset instant read from the collected usage-window data (the collectors behind 'usage_metrics') before using the flat disable_seconds fallback. |
llm_provider.usage_limit.notify |
boolean |
true |
— |
Send a notification when a provider is automatically disabled. |
llm_provider.usage_limit.relaunch |
boolean |
true |
— |
Submit a durable 'sase agent drain' proc when a usage-limit disable hard-disables a provider, relaunching the agents it stranded and folding the drain report into the notify notification. |
llm_provider.usage_limit.relaunch_limit |
integer |
20 |
— |
Most agents an automatic usage-limit drain relaunches (the drain's --limit). |
llm_provider.usage_limit.providers |
object |
not set |
— |
Per-provider usage-limit overrides. Keys are provider names (e.g., 'agy', 'claude', 'codex'). |
llm_provider.usage_limit.providers.<key> |
object |
not set |
— |
— |
llm_provider.usage_limit.providers.<key>.patterns |
array |
[] |
— |
Substrings to match against error output (case- and apostrophe-insensitive). Added to the built-in patterns unless replace_patterns is true. |
llm_provider.usage_limit.providers.<key>.patterns[] |
string |
not set |
— |
— |
llm_provider.usage_limit.providers.<key>.exclude_patterns |
array |
[] |
— |
Substrings that, when present anywhere in the error output, prevent a match even if a pattern also matches. Always additive to the built-ins. |
llm_provider.usage_limit.providers.<key>.exclude_patterns[] |
string |
not set |
— |
— |
llm_provider.usage_limit.providers.<key>.disable_seconds |
integer | null |
not set |
— |
Per-provider override for the fallback disable duration. Null falls back to the global disable_seconds. |
llm_provider.usage_limit.providers.<key>.honor_reset_hint |
boolean | null |
not set |
— |
Per-provider override for honoring the provider's own reset hint. Null falls back to the global honor_reset_hint. |
llm_provider.usage_limit.providers.<key>.honor_usage_windows |
boolean | null |
not set |
— |
Per-provider override for the usage-window disable-expiry fallback. Null falls back to the global honor_usage_windows. |
llm_provider.usage_limit.providers.<key>.replace_patterns |
boolean |
false |
— |
When true, 'patterns' replaces the built-in patterns entirely instead of extending them. |
llm_provider.usage_metrics |
object |
{…} (7 keys; values below) |
— |
Subscription-capacity collection settings. Distinct from usage_limit auto-disable. "enabled" is the durable user preference for probes and passive observation writes. |
llm_provider.usage_metrics.enabled |
boolean |
true |
— |
Collect subscription usage. False stops probes, passive writes, scheduled requests, and attention while inspection can still explain the opt-out. |
llm_provider.usage_metrics.refresh_seconds |
number |
300 |
— |
Background refresh cadence in seconds. Must be finite and at least 60. |
llm_provider.usage_metrics.active_refresh_seconds |
number |
120 |
— |
Hot refresh cadence in seconds for providers in active use. Must be finite and at least 60; values above refresh_seconds are capped at it. |
llm_provider.usage_metrics.warn_percent |
number |
75 |
— |
Percentage used that classifies a window as low. Must satisfy 0 <= warn_percent < critical_percent <= 100. UI copy uses percentage left. |
llm_provider.usage_metrics.critical_percent |
number |
90 |
— |
Percentage used that classifies a window as very low. Must satisfy 0 <= warn_percent < critical_percent <= 100. |
llm_provider.usage_metrics.indicator |
object |
{enabled, default, weekly_all, providers} (values below) |
— |
Top-bar usage-window display preferences. Display selection is independent from collection and from warn/critical attention thresholds. |
llm_provider.usage_metrics.indicator.enabled |
boolean |
true |
— |
Show usage-window indicators in sase's TUI. False hides display entries while leaving collection and the Providers · Usage view active. |
llm_provider.usage_metrics.indicator.default |
string | object |
{below_remaining_percent} (values below) |
"always", "never" |
Fallback display policy for windows that do not match a provider/window override or the weekly_all default. |
llm_provider.usage_metrics.indicator.default.below_remaining_percent |
number |
20 |
— |
Select only windows with remaining capacity strictly below this finite percentage. Use always to include exactly full windows. |
llm_provider.usage_metrics.indicator.weekly_all |
string | object |
"always" |
"always", "never" |
Display policy for positively classified weekly all-model windows after exact and provider defaults. |
llm_provider.usage_metrics.indicator.weekly_all.below_remaining_percent |
number |
not set |
— |
Select only windows with remaining capacity strictly below this finite percentage. Use always to include exactly full windows. |
llm_provider.usage_metrics.indicator.providers |
object |
{muse} (values below) |
— |
Per-provider display overrides. Keys are provider IDs. This map is separate from the sibling collection providers map. |
llm_provider.usage_metrics.indicator.providers.<key> |
object |
not set |
— |
Per-provider usage-window display overrides. Window keys are exact provider-reported IDs from sase usage list --json. |
llm_provider.usage_metrics.indicator.providers.<key>.default |
string | object |
not set |
"always", "never" |
Default display policy for this provider's windows. |
llm_provider.usage_metrics.indicator.providers.<key>.default.below_remaining_percent |
number |
not set |
— |
Select only windows with remaining capacity strictly below this finite percentage. Use always to include exactly full windows. |
llm_provider.usage_metrics.indicator.providers.<key>.windows |
object |
not set |
— |
Exact window-key display overrides for this provider. |
llm_provider.usage_metrics.indicator.providers.<key>.windows.<key> |
string | object |
not set |
"always", "never" |
Usage-window display selection policy. String forms are always or never. The threshold form selects windows whose remaining percentage is strictly below the configured number. |
llm_provider.usage_metrics.indicator.providers.<key>.windows.<key>.below_remaining_percent |
number |
not set |
— |
Select only windows with remaining capacity strictly below this finite percentage. Use always to include exactly full windows. |
llm_provider.usage_metrics.providers |
object |
{} |
— |
Optional per-provider collection overrides. Keys are registered provider names; the generic schema does not hard-code the initial three providers. |
llm_provider.usage_metrics.providers.<key> |
object |
not set |
— |
— |
llm_provider.usage_metrics.providers.<key>.enabled |
boolean |
not set |
— |
Per-provider collection override. When omitted, the provider inherits llm_provider.usage_metrics.enabled. |