Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration Reference

Manually authored from source: crates/config/src/schema/ + crates/config/src/validate/schema_map.rs

Every valid moltis.toml option, organized by domain.

Types: string, bool, integer, float, array, map, optional, enum(...).

Defaults shown as TOML values. means the field has no explicit default (uses Rust Default).

Contents


Server & Networking

server — ServerConfig

Gateway server configuration.

KeyTypeDefaultDescription
bindstring"127.0.0.1"Address to bind to.
portinteger0Port to listen on. 0 is replaced with a random available port when config is created.
http_request_logsboolfalseEnable verbose Axum/Tower HTTP request logs (http_request spans). Useful for debugging redirects and request flow.
ws_request_logsboolfalseEnable WebSocket request/response logs (ws: entries). Useful for debugging RPC calls from the web UI.
log_buffer_sizeinteger1000Maximum number of log entries kept in the in-memory ring buffer. Older entries are persisted to disk. Increase for busy servers, decrease for memory-constrained devices.
update_releases_urloptional stringURL of the releases manifest (releases.json) used by the update checker. Defaults to https://www.moltis.org/releases.json when unset.
db_pool_max_connectionsinteger5Maximum number of SQLite pool connections. Lower values reduce memory usage for personal gateways.
shiki_cdn_urloptional stringBase URL for the Shiki syntax-highlighting library loaded by the web UI. Defaults to https://esm.sh/shiki@3.2.1?bundle when unset.
terminal_enabledbooltrueEnable or disable the host terminal in the web UI. Set to false to prevent an unsandboxed shell. The MOLTIS_TERMINAL_DISABLED env var (1 or true) takes precedence.

auth — AuthConfig

Authentication configuration.

KeyTypeDefaultDescription
disabledboolfalseWhen true, authentication is explicitly disabled (no login required).

tls — TlsConfig

TLS configuration for the gateway HTTPS server.

KeyTypeDefaultDescription
enabledbooltrueEnable HTTPS with auto-generated certificates.
auto_generatebooltrueAuto-generate a local CA and server certificate on first run.
cert_pathoptional stringPath to a custom server certificate (PEM). Overrides auto-generation.
key_pathoptional stringPath to a custom server private key (PEM). Overrides auto-generation.
ca_cert_pathoptional stringPath to the CA certificate (PEM) used for trust instructions.
http_redirect_portoptional integerPort for the plain-HTTP redirect/CA-download server. Defaults to the gateway port + 1 when not set.

graphql — GraphqlConfig

Runtime GraphQL server configuration.

KeyTypeDefaultDescription
enabledbooltrueWhether GraphQL HTTP/WS handlers accept requests.

ngrok — NgrokConfig

ngrok public HTTPS tunnel configuration.

KeyTypeDefaultDescription
enabledboolfalseWhether the ngrok tunnel is enabled.
authtokenoptional secret stringngrok authtoken. If unset, NGROK_AUTHTOKEN env var is used.
domainoptional stringOptional reserved/static domain to request from ngrok.

tailscale — TailscaleConfig

Tailscale Serve/Funnel configuration.

KeyTypeDefaultDescription
modestring"off"Tailscale mode: "off", "serve", or "funnel".
reset_on_exitbooltrueReset tailscale serve/funnel when the gateway shuts down.

upstream_proxy (top-level scalar)

KeyTypeDefaultDescription
upstream_proxyoptional secret stringUpstream HTTP/SOCKS proxy for all outbound requests. Supports http://, https://, socks5://, and socks5h:// schemes. Proxy auth via URL: http://user:pass@host:port. Overrides HTTP_PROXY/HTTPS_PROXY/ALL_PROXY env vars. Localhost/loopback addresses are automatically excluded (no_proxy).

failover — FailoverConfig

Automatic model/provider failover configuration.

KeyTypeDefaultDescription
enabledbooltrueWhether failover is enabled.
fallback_modelsarray[]Ordered list of fallback model IDs to try when the primary fails. If empty, the chain is built from all registered models.

Observability

metrics — MetricsConfig

Metrics and observability configuration.

KeyTypeDefaultDescription
enabledbooltrueWhether metrics collection is enabled.
prometheus_endpointbooltrueWhether to expose the /metrics Prometheus endpoint.
history_pointsinteger360Maximum number of in-memory history points for time-series charts (sampled every 30 s; 360 ≈ 3 hours). Historical data is persisted to SQLite regardless.
labelsmap{}Additional labels to add to all metrics.

Identity & User

identity — AgentIdentity

Agent identity (name, emoji, theme).

KeyTypeDefaultDescription
nameoptional stringAgent display name. Falls back to "moltis" when unset.
emojioptional stringAgent emoji icon.
themeoptional stringAgent theme identifier.

user — UserProfile

User profile collected during onboarding.

KeyTypeDefaultDescription
nameoptional stringUser’s display name.
timezoneoptional stringIANA timezone (e.g. "Europe/Paris").

Chat & Agents

chat — ChatConfig

KeyTypeDefaultDescription
message_queue_modeenum: followup, collect"followup"How to handle messages that arrive while an agent run is active. followup queues each message and replays them one-by-one; collect concatenates and processes as a single message.
prompt_memory_modeenum: live-reload, frozen-at-session-start"live-reload"How MEMORY.md is loaded into the prompt for an ongoing session. live-reload reloads from disk before each turn; frozen-at-session-start freezes the initial content for the session lifetime.
workspace_file_max_charsinteger32000Maximum characters from each workspace prompt file (AGENTS.md, TOOLS.md).
priority_modelsarray[]Preferred model IDs to show first in selectors (full or raw model IDs).
allowed_modelsarray[]⚠️ Deprecated. Legacy model allowlist kept for backward compatibility; currently ignored (model visibility is provider-driven). Will be removed in a future release.

chat.compaction — CompactionConfig

KeyTypeDefaultDescription
modeenum: deterministic, recency-preserving, structured, llm-replace"deterministic"Compaction strategy. deterministic extracts a summary from message structure (zero LLM calls). recency-preserving keeps head + tail verbatim, collapses middle. structured keeps head + tail and LLM-summarises the middle. llm-replace replaces entire history with an LLM summary.
threshold_percentfloat0.95Fraction of the session model’s context window at which automatic compaction fires. Clamped to 0.10.95.
protect_headinteger3Number of head messages preserved verbatim by recency-preserving and structured modes.
protect_tail_mininteger20Minimum number of tail messages preserved verbatim (floor under token-budget cut).
tail_budget_ratiofloat0.20Tail protection window as a fraction of threshold_percent × context_window.
tool_prune_char_thresholdinteger200Tool-result content longer than this is replaced with a placeholder in the collapsed middle region.
summary_modeloptional stringnullProvider-qualified model for LLM summary calls (e.g. "openrouter/google/gemini-2.5-flash"). ⚠️ Not yet implemented — setting this field triggers a warning.
max_summary_tokensinteger4096Maximum output tokens for LLM summary calls. 0 accepts provider default. ⚠️ Not yet implemented — has no effect.
show_settings_hintbooltrueWhether the “Change chat.compaction.mode in moltis.toml…” hint is included in compaction notifications.

agents — AgentsConfig

KeyTypeDefaultDescription
default_presetoptional string"research"Default preset name used when spawn_agent.preset is omitted. Applies only to sub-agents.
presetsmap of AgentPresetbuilt-in presetsNamed spawn presets, keyed by name. Built-ins: research, coder, reviewer, qa, ux, docs, coordinator.

agents.presets.<name> — AgentPreset

KeyTypeDefaultDescription
modeloptional stringnullOptional model override for this preset.
tools.allowarray[]Tools to allow (whitelist). If empty, all tools are allowed.
tools.denyarray[]Tools to deny (blacklist). Applied after allow.
delegate_onlyboolfalseRestrict sub-agent to delegation/session/task tools only.
system_prompt_suffixoptional stringnullExtra instructions appended to the sub-agent system prompt.
max_iterationsoptional integernullMaximum iterations for the agent loop.
timeout_secsoptional integernullTimeout in seconds for the sub-agent.
reasoning_effortoptional enum: low, medium, highnullReasoning/thinking effort level for models that support extended thinking (e.g. Claude Opus, OpenAI o-series).
sessionsoptional SessionAccessPolicyConfignullSession access policy for inter-agent communication.
memoryoptional PresetMemoryConfignullPersistent per-agent memory configuration.

agents.presets.<name>.identity (AgentIdentity)

KeyTypeDefaultDescription
nameoptional stringnullAgent display name.
emojioptional stringnullAgent emoji identifier.
themeoptional stringnullAgent theme identifier.

agents.presets.<name>.sessions (SessionAccessPolicyConfig)

KeyTypeDefaultDescription
key_prefixoptional stringnullOnly see sessions with keys matching this prefix.
allowed_keysarray[]Explicit session keys the agent can access (in addition to prefix).
can_sendbooltrueWhether the agent can send messages to sessions.
cross_agentboolfalseWhether the agent can access sessions from other agents.

agents.presets.<name>.memory (PresetMemoryConfig)

KeyTypeDefaultDescription
scopeenum: user, project, local"user"Memory scope: user stores in ~/.moltis/agent-memory/<preset>/, project in .moltis/agent-memory/<preset>/, local in .moltis/agent-memory-local/<preset>/.
max_linesinteger200Maximum lines to load from MEMORY.md.

modes — ModesConfig

Modes are temporary per-session prompt overlays selected with /mode. They do not create chat agents, change memory, or affect spawn_agent presets.

KeyTypeDefaultDescription
presetsmap of ModePresetbuilt-in presetsNamed mode presets. Built-ins: concise, technical, creative, teacher, plan, build, review, research, elevated.

modes.presets.<name> — ModePreset

KeyTypeDefaultDescription
nameoptional stringnullDisplay name shown in the UI and /mode list.
descriptionoptional stringnullShort user-facing summary.
promptstring""Prompt overlay injected into the active session while this mode is selected.

skills — SkillsConfig

KeyTypeDefaultDescription
enabledbooltrueWhether the skills system is enabled.
search_pathsarray[]Extra directories to search for skills.
auto_loadarray[]Skills to always load (by name) without explicit activation.
enable_agent_sidecar_filesboolfalseWhether agents may write supplementary files inside personal skill directories.
enable_self_improvementbooltrueInclude system prompt guidance encouraging the agent to autonomously create and update skills after complex tasks.


Tools — Execution

tools.exec — ExecConfig

KeyTypeDefaultDescription
default_timeout_secsinteger30Default wall-clock timeout in seconds for command execution.
max_output_bytesinteger204800Maximum bytes of stdout/stderr captured per command.
approval_modestring"on-miss"When operator approval is required ("always", "on-miss", "never").
security_levelstring"allowlist"Security enforcement level ("allowlist", "sandbox", etc.).
allowlistarray[]List of command globs permitted without sandboxing.
hoststring"local"Where to run commands: "local", "node", or "ssh".
nodeoptional stringnullDefault node id or display name for remote execution (when host = "node").
ssh_targetoptional stringnullDefault SSH target for remote execution (when host = "ssh").

tools.exec.sandbox — SandboxConfig

KeyTypeDefaultDescription
modestring"all"When sandboxing is active ("all", "auto", "off").
scopestring"session"Container lifetime ("session" or "per-command").
workspace_mountstring"ro"Workspace mount mode ("ro", "rw", "none").
host_data_diroptional stringnullHost-visible path for Moltis data_dir() when creating sandbox containers from inside another container.
home_persistenceenum: "off", "session", "shared""shared"Persistence strategy for /home/sandbox in sandbox containers.
shared_home_diroptional stringnullHost directory for shared /home/sandbox persistence. Relative paths resolved against data_dir().
imageoptional stringnullDocker/Podman image for sandbox containers.
container_prefixoptional stringnullName prefix for created containers.
no_networkboolfalseDisable all network access in sandbox containers.
networkstring"trusted"Network policy: "blocked", "trusted" (proxy-filtered), or "bypass" (unrestricted).
trusted_domainsarray[]Domains allowed through the proxy in "trusted" network mode.
backendstring"auto"Sandbox backend: "auto", "docker", "podman", "apple-container", "restricted-host", or "wasm".
packagesarray(~130 packages)Packages to install via apt-get in the sandbox image. Empty list to skip.
wasm_fuel_limitoptional integernullFuel limit for WASM sandbox execution (instructions).
wasm_epoch_interval_msoptional integernullEpoch interruption interval in milliseconds for WASM sandbox.

tools.exec.sandbox.resource_limits — ResourceLimitsConfig

KeyTypeDefaultDescription
memory_limitoptional stringnullMemory limit for sandbox containers (e.g. "512M", "1G").
cpu_quotaoptional floatnullCPU quota as a fraction (e.g. 0.5 = half a core, 2.0 = two cores).
pids_maxoptional integernullMaximum number of PIDs allowed in the sandbox.

tools.exec.sandbox.tools_policy — ToolPolicyConfig

KeyTypeDefaultDescription
allowarray[]Tool names explicitly allowed inside the sandbox.
denyarray[]Tool names explicitly denied inside the sandbox.
profileoptional stringnullNamed policy profile to apply (e.g. "restricted").

tools.exec.sandbox.wasm_tool_limits — WasmToolLimitsConfig

KeyTypeDefaultDescription
default_memoryinteger16777216Default WASM memory limit in bytes (16 MB).
default_fuelinteger1000000Default WASM fuel limit (instructions).
tool_overridesmap(see below)Per-tool overrides for WASM fuel and memory.

tools.exec.sandbox.wasm_tool_limits.tool_overrides. (ToolLimitOverrideConfig)

KeyTypeDefaultDescription
fueloptional integernullPer-tool WASM fuel override (instructions).
memoryoptional integernullPer-tool WASM memory override (bytes).

Default tool_overrides entries:

Toolfuelmemory
calc1000002097152 (2 MB)
web_fetch1000000033554432 (32 MB)
web_search1000000033554432 (32 MB)
show_map1000000067108864 (64 MB)
location500000016777216 (16 MB)

tools.browser — BrowserConfig

KeyTypeDefaultDescription
enabledbooltrueWhether browser support is enabled.
chrome_pathoptional stringnullPath to Chrome/Chromium binary (auto-detected if not set).
obscura_pathoptional stringnullPath to the Obscura binary for browser = "obscura" requests (auto-detected from OBSCURA or PATH if not set).
lightpanda_pathoptional stringnullPath to the Lightpanda binary for browser = "lightpanda" requests (auto-detected from LIGHTPANDA or PATH if not set).
headlessbooltrueWhether to run in headless mode.
viewport_widthinteger2560Default viewport width in pixels.
viewport_heightinteger1440Default viewport height in pixels.
device_scale_factorfloat2.0Device scale factor for HiDPI/Retina displays (1.0, 2.0, 3.0).
max_instancesinteger0Maximum concurrent browser instances (0 = unlimited, limited by memory).
memory_limit_percentinteger90System memory usage threshold (0–100) above which new instances are blocked.
idle_timeout_secsinteger300Instance idle timeout in seconds before closing.
navigation_timeout_msinteger30000Default navigation timeout in milliseconds.
user_agentoptional stringnullCustom user agent string (uses Chrome default if not set).
chrome_argsarray[]Additional Chrome command-line arguments.
sandbox_imagestring"docker.io/browserless/chrome"Docker image for sandboxed browser instances.
allowed_domainsarray[]Allowed navigation domains (empty = all allowed). Supports wildcards ("*.example.com").
low_memory_threshold_mbinteger2048System RAM threshold (MB) below which memory-saving Chrome flags are injected (0 to disable).
persist_profilebooltruePersist Chrome user profile (cookies, auth, local storage) across sessions.
profile_diroptional stringnullCustom path for persistent Chrome profile directory. Implies persist_profile = true.
container_hoststring"127.0.0.1"Hostname/IP to connect to the browser container from the host. Use "host.docker.internal" when Moltis runs inside Docker.
browserless_api_versionenum: "v1", "v2""v1"Browserless API compatibility mode for websocket endpoints.


Tools — Web & Data

tools.web.search — WebSearchConfig

KeyTypeDefaultDescription
enabledbooltrueEnable the web search tool.
providerstring (enum)"brave"Search provider. One of: brave, perplexity, firecrawl.
api_keyoptional stringAPI key (overrides BRAVE_API_KEY env var).
max_resultsinteger5Maximum number of results to return (1–10).
timeout_secondsinteger30HTTP request timeout in seconds.
cache_ttl_minutesinteger15In-memory cache TTL in minutes (0 to disable).
duckduckgo_fallbackboolfalseEnable DuckDuckGo HTML fallback when no provider API key is configured. Disabled by default because it may trigger CAPTCHA challenges.

tools.web.search.perplexity — PerplexityConfig

KeyTypeDefaultDescription
api_keyoptional stringAPI key (overrides PERPLEXITY_API_KEY / OPENROUTER_API_KEY env vars).
base_urloptional stringBase URL override. Auto-detected from key prefix if empty.
modeloptional stringModel to use.

tools.web.fetch — WebFetchConfig

KeyTypeDefaultDescription
enabledbooltrueEnable the web fetch tool.
max_charsinteger50000Maximum characters to return from fetched content.
timeout_secondsinteger30HTTP request timeout in seconds.
cache_ttl_minutesinteger15In-memory cache TTL in minutes (0 to disable).
max_redirectsinteger3Maximum number of HTTP redirects to follow.
readabilitybooltrueUse readability extraction for HTML pages.
ssrf_allowlistarray[]CIDR ranges exempt from SSRF blocking (e.g. ["172.22.0.0/16"]). Default: empty (all private IPs blocked). ⚠️ Security: ranges added here bypass SSRF protection. Only add specific, trusted CIDR ranges (e.g. a known sidecar subnet), never broad private ranges like 10.0.0.0/8.

tools.web.firecrawl — FirecrawlConfig

KeyTypeDefaultDescription
enabledboolfalseEnable Firecrawl integration.
api_keyoptional stringFirecrawl API key (overrides FIRECRAWL_API_KEY env var).
base_urlstring"https://api.firecrawl.dev"Firecrawl API base URL (for self-hosted instances).
only_main_contentbooltrueOnly extract main content (skip navs, footers, etc.).
timeout_secondsinteger30HTTP request timeout in seconds.
cache_ttl_minutesinteger15In-memory cache TTL in minutes (0 to disable).
web_fetch_fallbackbooltrueUse Firecrawl as fallback in web_fetch when readability extraction produces poor results.

tools.fs — FsToolsConfig

KeyTypeDefaultDescription
workspace_rootoptional stringDefault search root used by Glob and Grep when the LLM call omits the path argument. Must be an absolute path. When unset, calls without an explicit path are rejected.
allow_pathsarray[]Absolute path globs the tools are allowed to access. Empty list means all paths allowed. Evaluated after canonicalization.
deny_pathsarray[]Absolute path globs the tools must refuse. Deny wins over allow. Evaluated after canonicalization.
track_readsboolfalseWhether to track per-session read history (files read, re-read loop detection). Required for must_read_before_write.
must_read_before_writeboolfalseReject Write/Edit/MultiEdit calls targeting files the session has not previously Read. Requires track_reads = true.
require_approvalboolfalseWhether Write/Edit/MultiEdit must pause for explicit operator approval before mutating a file.
max_read_bytesinteger10485760 (10 MB)Maximum bytes a single Read call can return before the file is rejected with a typed too_large payload.
binary_policystring (enum)"reject"What to do with binary files encountered by Read. One of: reject (return typed marker without content), base64 (return base64-encoded content).
respect_gitignorebooltrueWhether Glob and Grep respect .gitignore / .ignore files and .git/info/exclude while walking.
checkpoint_before_mutationboolfalseWhen true, Write/Edit/MultiEdit create a per-file backup before mutating, so the LLM can restore the pre-edit state via checkpoint_restore.
context_window_tokensoptional integerModel context window in tokens. When set, Read’s per-call byte cap scales adaptively so a single Read call can’t consume more than ~20% of the model’s working set. Clamped to [50 KB, 512 KB]. When unset, Read uses a fixed 256 KB cap. Typical values: 200000 (Claude 3.5/4 Sonnet), 1000000 (Claude Opus 4.6), 128000 (GPT-4 Turbo).

tools.maps — MapsConfig

KeyTypeDefaultDescription
providerstring (enum)"google_maps"Preferred map provider used by show_map. One of: google_maps, apple_maps, openstreetmap.

Tools — Policy & Agent Limits

tools.policy — ToolPolicyConfig

KeyTypeDefaultDescription
allowarray[]Tool names or glob patterns that are explicitly allowed.
denyarray[]Tool names or glob patterns that are explicitly denied.
profileoptional stringNamed policy profile to apply.

tools — Agent-level scalars

KeyTypeDefaultDescription
agent_timeout_secsinteger600Maximum wall-clock seconds for an agent run (0 = no timeout).
agent_max_iterationsinteger25Maximum number of agent loop iterations before aborting.
agent_max_auto_continuesinteger2Maximum auto-continue nudges when the model stops mid-task (0 = disabled).
agent_auto_continue_min_tool_callsinteger3Minimum tool calls in the current run before auto-continue can trigger.
max_tool_result_bytesinteger50000 (50 KB)Maximum bytes for a single tool result before truncation.
registry_modestring (enum)"full"How tool schemas are presented to the model. One of: full (all schemas sent every turn), lazy (only tool_search sent; model discovers tools on demand).
agent_loop_detector_windowinteger2Window size for the tool-call reflex-loop detector. When this many consecutive tool calls share the same tool + (args or error), the runner injects a directive intervention message. Set to 0 to disable.
agent_loop_detector_strip_tools_on_second_firebooltrueWhen the loop detector fires a second time (stage 2), strip the tool schema list for a single LLM turn so the model is forced to respond in text.


Channels & Integrations

channels — ChannelsConfig

KeyTypeDefaultDescription
offeredarray of string["telegram", "whatsapp", "msteams", "discord", "slack", "matrix", "nostr", "signal"]Which channel types are offered in the web UI (onboarding + channels page).
<channel_type>map of serde_json::Value{}Account configs keyed by account name. Known types: telegram, whatsapp, msteams, discord, slack, matrix, nostr, signal. Additional types accepted via flatten.

Each channel account (channels.<channel_type>.<account_name>) is an arbitrary JSON object that may contain provider-specific keys plus a tools sub-block (see below).

channels.*.<account>.tools — ChannelToolPolicyOverride

KeyTypeDefaultDescription
groupsmap of GroupToolPolicy{}Per-chat-type policies, keyed by chat type ("private", "group", etc.).

channels.*.<account>.tools.groups.<group_id> — GroupToolPolicy

KeyTypeDefaultDescription
allowarray of string[]Tool names/patterns to allow.
denyarray of string[]Tool names/patterns to deny.
by_sendermap of ToolPolicyConfig{}Per-sender overrides within this group, keyed by sender/peer ID.

channels.*.<account>.tools.groups.<group_id>.by_sender.<sender_id> — ToolPolicyConfig

KeyTypeDefaultDescription
allowarray of string[]Tool names/patterns to allow for this sender.
denyarray of string[]Tool names/patterns to deny for this sender.
profileoptional stringNoneAgent profile to use for this sender.

hooks — HooksConfig

KeyTypeDefaultDescription
hooksarray of ShellHookConfigEntry[]Shell hooks defined in the config file.

hooks.hooks[] — ShellHookConfigEntry

KeyTypeDefaultDescription
namestring(required)Human-readable hook name.
commandstring(required)Shell command to execute.
eventsarray of string(required)Event names that trigger this hook.
timeoutinteger10Timeout in seconds for the hook process.
envmap of string{}Environment variables to set for the hook process.

mcp — McpConfig

KeyTypeDefaultDescription
request_timeout_secsinteger30Default timeout for MCP requests in seconds.
serversmap of McpServerEntry{}Configured MCP servers, keyed by server name.

mcp.servers.<name> — McpServerEntry

KeyTypeDefaultDescription
commandstring""Command to spawn the server process (stdio transport).
argsarray of string[]Arguments to the command.
envmap of string{}Environment variables to set for the process.
enabledbooltrueWhether this server is enabled.
request_timeout_secsoptional integerNoneOptional per-server MCP request timeout override in seconds.
transportstring""Transport type: "stdio" (default), "sse", or "streamable-http".
urloptional stringNoneURL for SSE/Streamable HTTP transport. Required when transport is "sse" or "streamable-http".
headersmap of string{}Custom headers for remote HTTP/SSE transport.
oauthoptional McpOAuthOverrideEntryNoneManual OAuth override for servers that don’t support standard discovery.
display_nameoptional stringNoneCustom display name for the server (shown in UI instead of technical ID).

mcp.servers.<name>.oauth — McpOAuthOverrideEntry

KeyTypeDefaultDescription
client_idstring(required)The OAuth client ID.
auth_urlstring(required)The authorization endpoint URL.
token_urlstring(required)The token endpoint URL.
scopesarray of string[]OAuth scopes to request.


Memory

memory

Struct: MemoryEmbeddingConfig

KeyTypeDefaultDescription
styleenum (hybrid, prompt-only, search-only, off)"hybrid"High-level memory orchestration style.
agent_write_modeenum (hybrid, prompt-only, search-only, off)"hybrid"Where agent-authored memory writes are allowed to land.
user_profile_write_modeenum (explicit-and-auto, explicit-only, off)"explicit-and-auto"How Moltis writes the managed USER.md profile surface.
backendenum (builtin, qmd)"builtin"Memory backend used for search, retrieval, and indexing.
provideroptional enum (local, ollama, openai, custom)auto-detectEmbedding provider. Alias: embedding_provider.
disable_ragboolfalseDisable RAG embeddings and force keyword-only memory search.
base_urloptional stringBase URL for the embedding API. Alias: embedding_base_url.
modeloptional stringModel name for embeddings. Alias: embedding_model.
api_keyoptional string (secret)API key for the embedding endpoint. Alias: embedding_api_key.
citationsenum (on, off, auto)"auto"Citation mode for memory search results.
llm_rerankingboolfalseEnable LLM reranking for hybrid search results.
search_merge_strategyenum (rrf, linear)"rrf"Merge strategy for hybrid search results.
session_exportenum (off, on-new-or-reset)"on-new-or-reset"How session transcripts are exported into searchable memory.
qmdmap (see memory.qmd){}QMD-specific configuration (only used when backend = "qmd").

memory.qmd

Struct: QmdConfig

KeyTypeDefaultDescription
commandoptional string"qmd"Path to the qmd binary.
collectionsmap of name → QmdCollection{}Named collections with paths and glob patterns.
max_resultsoptional integerMaximum results to retrieve.
timeout_msoptional integerSearch timeout in milliseconds.

memory.qmd.collections.<name>

Struct: QmdCollection

KeyTypeDefaultDescription
pathsarray of string[]Paths to include in this collection.
globsarray of string[]Glob patterns to filter files.

Scheduling & Webhooks

heartbeat

Struct: HeartbeatConfig

KeyTypeDefaultDescription
enabledbooltrueWhether the heartbeat is enabled.
everystring"30m"Interval between heartbeats (e.g. "30m", "1h").
modeloptional stringProvider/model override for heartbeat turns.
promptoptional stringCustom prompt override. Empty uses the built-in default.
ack_max_charsinteger300Max characters for an acknowledgment reply before truncation.
active_hoursmap (see heartbeat.active_hours)Active hours window — heartbeats only run during this window.
deliverboolfalseWhether heartbeat replies should be delivered to a channel account.
channeloptional stringChannel account identifier for heartbeat delivery.
tooptional stringDestination chat/recipient id for heartbeat delivery.
sandbox_enabledbooltrueWhether heartbeat runs inside a sandbox.
sandbox_imageoptional stringOverride sandbox image for heartbeat.
wake_cooldownstring"5m"Minimum duration between exec-triggered heartbeat wakes. Use "0" to disable the guard.

heartbeat.active_hours

Struct: ActiveHoursConfig

KeyTypeDefaultDescription
startstring"08:00"Start time in HH:MM format.
endstring"24:00"End time in HH:MM format.
timezonestring"local"IANA timezone (e.g. "Europe/Paris") or "local".

cron

Struct: CronConfig

KeyTypeDefaultDescription
rate_limit_maxinteger10Maximum number of jobs within the rate limit window.
rate_limit_window_secsinteger60Rate limit window in seconds.
session_retention_daysoptional integer7Days to retain cron session data before auto-cleanup. None disables pruning.
auto_prune_cron_containersbooltrueWhether to auto-prune sandbox containers after cron job completion.

caldav

Struct: CalDavConfig

KeyTypeDefaultDescription
enabledboolfalseWhether CalDAV integration is enabled.
default_accountoptional stringDefault account name to use when none is specified.
accountsmap of name → CalDavAccountConfig{}Named CalDAV accounts.

caldav.accounts.<name>

Struct: CalDavAccountConfig

KeyTypeDefaultDescription
urloptional stringCalDAV server URL.
usernameoptional stringUsername for authentication.
passwordoptional string (secret)Password or app-specific password.
provideroptional stringProvider hint: "fastmail", "icloud", or "generic".
timeout_secondsinteger30HTTP request timeout in seconds.

webhooks

Struct: WebhooksConfig

KeyTypeDefaultDescription
rate_limitmap (see webhooks.rate_limit)Per-account rate limiting settings.

webhooks.rate_limit

Struct: WebhookRateLimitConfig

KeyTypeDefaultDescription
enabledbooltrueWhether rate limiting is enabled.
requests_per_minuteoptional integerMax requests per minute per account. None uses per-channel defaults.
burstoptional integerBurst allowance per account.
cleanup_interval_secsinteger300Interval in seconds between stale bucket cleanup.

LLM Providers

providers

Struct: ProvidersConfig

KeyTypeDefaultDescription
offeredarray of string[]Allowlist of enabled providers (also controls web UI pickers). Empty = all enabled.
show_legacy_modelsboolfalseShow models older than one year in the chat model selector.
<name>ProviderEntry (see below)Provider-specific settings keyed by provider name.

providers.<name> — ProviderEntry

KeyTypeDefaultDescription
enabledbooltrueWhether this provider is enabled.
api_keyoptional string (secret)Override the API key. Env var takes precedence if set.
base_urloptional stringOverride the base URL. Alias: url.
modelsarray of string[]Preferred model IDs shown first in model pickers.
fetch_modelsbooltrueWhether to fetch provider model catalogs dynamically.
stream_transportenum (sse, websocket, auto)"sse"Streaming transport for this provider.
wire_apienum (chat-completions, responses)"chat-completions"Wire format for this provider’s HTTP API.
aliasoptional stringAlias used in metrics labels instead of the provider name.
tool_modeenum (auto, native, text, off)"auto"How tool calling is handled for this provider.
cache_retentionenum (none, short, long)"short"Prompt cache retention policy.
policyoptional ToolPolicyConfig (see below)Tool policy override merged on top of global [tools.policy].
model_overridesmap of ModelOverride{}Per-model context window overrides. Keys are model IDs.

providers.<name>.model_overrides.<model_id> — ModelOverride

KeyTypeDefaultDescription
context_windowoptional integerOverride the context window size (in tokens) for this model. Must be ≥ 1. Values > 10,000,000 produce a warning.

models — Global Model Overrides

Struct: HashMap<String, ModelOverride>

Per-model overrides that apply across all providers. Provider-scoped overrides (providers.<name>.model_overrides.<id>) take precedence over these.

[models.claude-opus-4-6]
context_window = 1_000_000

providers.<name>.policy

Struct: ToolPolicyConfig

KeyTypeDefaultDescription
allowarray of string[]Tool names to allow.
denyarray of string[]Tool names to deny.
profileoptional stringNamed policy profile to apply.

voice

Struct: VoiceConfig

KeyTypeDefaultDescription
ttsVoiceTtsConfig(see below)Text-to-speech settings
sttVoiceSttConfig(see below)Speech-to-text settings

Voice — Text-to-Speech

voice.tts

Struct: VoiceTtsConfig

KeyTypeDefaultDescription
enabledbooltrueEnable TTS globally
providerstring""Active provider ("openai", "elevenlabs", "google", "piper", "coqui"). Empty string auto-selects the first configured provider
providersarray of string[]Provider IDs to list in the UI. Empty means list all
elevenlabsVoiceElevenLabsConfig(see below)ElevenLabs-specific settings
openaiVoiceOpenAiConfig(see below)OpenAI TTS settings
googleVoiceGoogleTtsConfig(see below)Google Cloud TTS settings
piperVoicePiperTtsConfig(see below)Piper (local) settings
coquiVoiceCoquiTtsConfig(see below)Coqui TTS (local server) settings

voice.tts.elevenlabs

Struct: VoiceElevenLabsConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key (from ELEVENLABS_API_KEY env or config)
voice_idoptional stringnullDefault voice ID
modeloptional stringnullModel to use (e.g. "eleven_flash_v2_5" for lowest latency)

voice.tts.openai

Struct: VoiceOpenAiConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key (from OPENAI_API_KEY env or config)
base_urloptional stringnullOverride the OpenAI TTS endpoint for compatible local servers
voiceoptional stringnullVoice to use for TTS (alloy, echo, fable, onyx, nova, shimmer)
modeloptional stringnullModel to use for TTS (tts-1, tts-1-hd)

voice.tts.google

Struct: VoiceGoogleTtsConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key for Google Cloud Text-to-Speech
voiceoptional stringnullVoice name (e.g. "en-US-Neural2-A", "en-US-Wavenet-D")
language_codeoptional stringnullLanguage code (e.g. "en-US", "fr-FR")
speaking_rateoptional floatnullSpeaking rate (0.25–4.0, default 1.0)
pitchoptional floatnullPitch (-20.0–20.0, default 0.0)

voice.tts.piper

Struct: VoicePiperTtsConfig

KeyTypeDefaultDescription
binary_pathoptional stringnullPath to piper binary. If not set, looks in PATH
model_pathoptional stringnullPath to the voice model file (.onnx)
config_pathoptional stringnullPath to the model config file (.onnx.json). Defaults to model_path + ".json"
speaker_idoptional integernullSpeaker ID for multi-speaker models
length_scaleoptional floatnullSpeaking rate multiplier (default 1.0)

voice.tts.coqui

Struct: VoiceCoquiTtsConfig

KeyTypeDefaultDescription
endpointstring"http://localhost:5002"Coqui TTS server endpoint
modeloptional stringnullModel name to use (if server supports multiple models)
speakeroptional stringnullSpeaker name or ID for multi-speaker models
languageoptional stringnullLanguage code for multilingual models


Voice — Speech-to-Text

voice.stt

Struct: VoiceSttConfig

KeyTypeDefaultDescription
enabledbooltrueEnable STT globally
provideroptional enum: whisper, groq, deepgram, google, mistral, elevenlabs-stt, voxtral-local, whisper-cli, sherpa-onnxnullActive provider. null auto-selects the first configured provider. Values: "whisper", "groq", "deepgram", "google", "mistral", "elevenlabs-stt", "voxtral-local", "whisper-cli", "sherpa-onnx"
providersarray of string[]Provider IDs to list in the UI. Empty means list all
whisperVoiceWhisperConfig(see below)OpenAI Whisper settings
groqVoiceGroqSttConfig(see below)Groq (Whisper-compatible) settings
deepgramVoiceDeepgramConfig(see below)Deepgram settings
googleVoiceGoogleSttConfig(see below)Google Cloud Speech-to-Text settings
mistralVoiceMistralSttConfig(see below)Mistral AI (Voxtral Transcribe) settings
elevenlabsVoiceElevenLabsSttConfig(see below)ElevenLabs Scribe settings
voxtral_localVoiceVoxtralLocalConfig(see below)Voxtral local (vLLM server) settings
whisper_cliVoiceWhisperCliConfig(see below)whisper-cli (whisper.cpp) settings
sherpa_onnxVoiceSherpaOnnxConfig(see below)sherpa-onnx offline settings

voice.stt.whisper

Struct: VoiceWhisperConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key (from OPENAI_API_KEY env or config)
base_urloptional stringnullOverride the Whisper endpoint for compatible local servers
modeloptional stringnullModel to use (whisper-1)
languageoptional stringnullLanguage hint (ISO 639-1 code)

voice.stt.groq

Struct: VoiceGroqSttConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key (from GROQ_API_KEY env or config)
modeloptional stringnullModel to use (e.g. "whisper-large-v3-turbo")
languageoptional stringnullLanguage hint (ISO 639-1 code)

voice.stt.deepgram

Struct: VoiceDeepgramConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key (from DEEPGRAM_API_KEY env or config)
modeloptional stringnullModel to use (e.g. "nova-3")
languageoptional stringnullLanguage hint (e.g. "en-US")
smart_formatboolfalseEnable smart formatting (punctuation, capitalization)

voice.stt.google

Struct: VoiceGoogleSttConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key for Google Cloud Speech-to-Text
service_account_jsonoptional stringnullPath to service account JSON file (alternative to API key)
languageoptional stringnullLanguage code (e.g. "en-US")
modeloptional stringnullModel variant (e.g. "latest_long", "latest_short")

voice.stt.mistral

Struct: VoiceMistralSttConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key (from MISTRAL_API_KEY env or config)
modeloptional stringnullModel to use (e.g. "voxtral-mini-latest")
languageoptional stringnullLanguage hint (ISO 639-1 code)

voice.stt.elevenlabs

Struct: VoiceElevenLabsSttConfig

KeyTypeDefaultDescription
api_keyoptional secret stringnullAPI key (from ELEVENLABS_API_KEY env or config). Shared with TTS if not specified separately
modeloptional stringnullModel to use (scribe_v1 or scribe_v2)
languageoptional stringnullLanguage hint (ISO 639-1 code)

voice.stt.voxtral_local

Struct: VoiceVoxtralLocalConfig

KeyTypeDefaultDescription
endpointstring"http://localhost:8000"vLLM server endpoint
modeloptional stringnullModel to use (optional, server default if not set)
languageoptional stringnullLanguage hint (ISO 639-1 code)

voice.stt.whisper_cli

Struct: VoiceWhisperCliConfig

KeyTypeDefaultDescription
binary_pathoptional stringnullPath to whisper-cli binary. If not set, looks in PATH
model_pathoptional stringnullPath to the GGML model file (e.g. "~/.moltis/models/ggml-base.en.bin")
languageoptional stringnullLanguage hint (ISO 639-1 code)

voice.stt.sherpa_onnx

Struct: VoiceSherpaOnnxConfig

KeyTypeDefaultDescription
binary_pathoptional stringnullPath to sherpa-onnx-offline binary. If not set, looks in PATH
model_diroptional stringnullPath to the ONNX model directory
languageoptional stringnullLanguage hint (ISO 639-1 code)

Environment

env

Struct: top-level HashMap<String, String> on MoltisConfig

KeyTypeDefaultDescription
*stringDynamic map of environment variable names to values.