pub struct Config {Show 14 fields
pub last_used_model: Option<String>,
pub default_model: ModelSettings,
pub ollama: OllamaConfig,
pub non_interactive: NonInteractiveConfig,
pub mcp_servers: HashMap<String, McpServerConfig>,
pub providers: HashMap<String, UserProviderConfig>,
pub reasoning_per_model: HashMap<String, ReasoningLevel>,
pub ollama_num_ctx_per_model: HashMap<String, u32>,
pub model_profiles: HashMap<String, String>,
pub safety: SafetyConfig,
pub memory: MemoryConfig,
pub compaction: CompactionConfig,
pub computer_use: ComputerUseConfig,
pub prompt: PromptConfig,
}Expand description
Main configuration structure
Fields§
§last_used_model: Option<String>Last used model (persisted between sessions)
default_model: ModelSettingsDefault model configuration
ollama: OllamaConfigOllama configuration
non_interactive: NonInteractiveConfigNon-interactive mode configuration
mcp_servers: HashMap<String, McpServerConfig>MCP server configurations
providers: HashMap<String, UserProviderConfig>User overrides + custom OpenAI-compatible providers. Keys are provider names; matching a built-in registry entry overrides its defaults, anything else defines a fully custom provider. Example:
[providers.groq]
api_key_env = "MY_GROQ_KEY" # override default GROQ_API_KEY
[providers.my-vllm]
base_url = "http://192.168.1.42:8000/v1"
api_key_env = "VLLM_KEY"
compat = "openai-effort"reasoning_per_model: HashMap<String, ReasoningLevel>Per-model reasoning preferences keyed by full model ID
(provider/name). Set when the user runs /reasoning <level> or
Alt+T cycles while using a specific model — the new value sticks
for that model until changed. Falls back to
default_model.reasoning when no entry exists.
Example:
[reasoning_per_model]
"anthropic/claude-sonnet-4-6" = "high"
"ollama/qwen3-coder:30b" = "low"ollama_num_ctx_per_model: HashMap<String, u32>Per-model Ollama num_ctx override set via /context <n>/max. Beats
auto-fit; cleared by /context auto. Keyed by model id.
Example:
[ollama_num_ctx_per_model]
"ollama/ornith:9b" = 131072model_profiles: HashMap<String, String>Named model profiles that agents/plugins can request without hardcoding a concrete provider model. Values are full model IDs. Example:
[model_profiles]
fast = "ollama/qwen3-coder:14b"
large-context = "openai/gpt-5.2"
tool-strong = "anthropic/claude-sonnet-4-6"
vision = "gemini/gemini-2.5-pro"
cheap = "groq/llama-3.3-70b-versatile"safety: SafetyConfigRuntime safety policy. Defaults to Ask so mutations / shell /
network actions require approval out of the box; users opt into
Auto (LLM-vetted) or FullAccess deliberately.
memory: MemoryConfigDurable semantic memory settings.
compaction: CompactionConfigContext-compaction settings.
computer_use: ComputerUseConfigComputer-use (desktop control) preferences.
prompt: PromptConfigRuntime-only prompt customizations supplied by CLI flags. These are deliberately skipped when saving config so one-off agent personas do not pollute the user’s persistent Mermaid settings.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Config
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more