pub struct SettingsType {Show 103 fields
pub app_clear: bool,
pub app_dismiss_architecture_warning: bool,
pub app_default_new_block: String,
pub app_show_overlay_block_nums: Option<bool>,
pub term_clear: bool,
pub term_font_size: f64,
pub term_font_family: String,
pub term_theme: String,
pub term_disable_web_gl: bool,
pub term_local_shell_path: String,
pub term_local_shell_opts: Vec<String>,
pub term_scrollback: Option<i64>,
pub term_durable: Option<bool>,
pub term_copy_on_select: Option<bool>,
pub term_transparency: Option<f64>,
pub term_scroll_sensitivity: Option<f64>,
pub term_allow_bracketed_paste: Option<bool>,
pub term_shift_enter_newline: Option<bool>,
pub browser_search_suggestions: Option<bool>,
pub term_agent_max_runtime_hours: f64,
pub term_agent_idle_timeout_mins: f64,
pub cmd_env: HashMap<String, String>,
pub block_header_clear: bool,
pub block_header_show_block_ids: bool,
pub preview_show_hidden_files: Option<bool>,
pub tab_preset: String,
pub widget_clear: bool,
pub widget_icon_only: Option<bool>,
pub widget_pinned: Option<Vec<String>>,
pub widget_hidden: Option<Vec<String>>,
pub statusbar_show_muxbus_cloud: Option<bool>,
pub window_clear: bool,
pub window_transparent: bool,
pub window_blur: bool,
pub window_opacity: Option<f64>,
pub window_bg_color: String,
pub window_reduced_motion: bool,
pub window_tile_gap_size: Option<i64>,
pub window_show_menu_bar: bool,
pub window_native_title_bar: bool,
pub window_disable_hardware_acceleration: bool,
pub window_max_tab_cache_size: i32,
pub window_magnified_block_opacity: Option<f64>,
pub window_magnified_block_size: Option<f64>,
pub window_magnified_block_blur_primary_px: Option<i64>,
pub window_magnified_block_blur_secondary_px: Option<i64>,
pub window_confirm_close: bool,
pub window_save_last_window: bool,
pub window_keep_inactive_tabs_laid_out: Option<bool>,
pub window_dimensions: String,
pub window_zoom: Option<f64>,
pub telemetry_clear: bool,
pub telemetry_enabled: bool,
pub telemetry_interval: f64,
pub telemetry_numpoints: Option<i64>,
pub conn_clear: bool,
pub conn_helper: String,
pub network_lan_discovery: bool,
pub voice_enabled: Option<bool>,
pub voice_engine: Option<String>,
pub voice_groq_api_key: Option<String>,
pub voice_whisper_cli_path: Option<String>,
pub voice_whisper_model: Option<String>,
pub voice_whisper_model_path: Option<String>,
pub notify_sounds_enabled: Option<bool>,
pub notify_sounds_volume: Option<f32>,
pub notify_sounds_suppress_when_focused: Option<bool>,
pub notify_sound_agent_turn_complete: Option<bool>,
pub notify_sound_agent_turn_error: Option<bool>,
pub notify_sound_agent_turn_interrupted: Option<bool>,
pub notify_sound_agent_message_accepted: Option<bool>,
pub notify_sound_agent_message_rejected: Option<bool>,
pub notify_tooltones_enabled: Option<bool>,
pub notify_tooltones_volume: Option<f32>,
pub notify_tooltones_scope: Option<String>,
pub notify_tooltones_flash: Option<bool>,
pub notify_waiting_browser: Option<bool>,
pub messaging_discord_enabled: bool,
pub messaging_discord_token: Option<String>,
pub messaging_discord_channel: String,
pub messaging_discord_target: Option<String>,
pub messaging_discord_guild: Option<String>,
pub messaging_telegram_enabled: bool,
pub messaging_telegram_token: Option<String>,
pub messaging_telegram_allowed_chats: String,
pub messaging_telegram_default_chat: Option<String>,
pub messaging_telegram_target: Option<String>,
pub messaging_slack_enabled: bool,
pub messaging_slack_bot_token: Option<String>,
pub messaging_slack_app_token: Option<String>,
pub messaging_slack_channel: String,
pub messaging_slack_target: Option<String>,
pub messaging_whatsapp_enabled: bool,
pub messaging_whatsapp_phone_number_id: String,
pub messaging_whatsapp_access_token: Option<String>,
pub messaging_whatsapp_app_secret: Option<String>,
pub messaging_whatsapp_webhook_verify_token: Option<String>,
pub messaging_whatsapp_target: Option<String>,
pub messaging_whatsapp_fallback_template: Option<String>,
pub messaging_whatsapp_fallback_template_lang: Option<String>,
pub messaging_whatsapp_tunnel_domain: String,
pub connections: HashMap<String, ConnKeywords>,
pub extra: HashMap<String, Value>,
}Expand description
Application settings. Matches Go’s wconfig.SettingsType JSON tags.
Fields use pointer-like Option for nullable booleans/numbers
to distinguish “not set” from “false/0”.
Fields§
§app_clear: bool§app_dismiss_architecture_warning: bool§app_default_new_block: String§app_show_overlay_block_nums: Option<bool>§term_clear: bool§term_font_size: f64§term_font_family: String§term_theme: String§term_disable_web_gl: bool§term_local_shell_path: String§term_local_shell_opts: Vec<String>§term_scrollback: Option<i64>§term_durable: Option<bool>SSH terminal panes durable (their shell kept on the host by AgentMux’s
helper) or not, unless a pane or its connection says otherwise. Unset:
durable, asking before the helper is installed on a host without it,
and plain there if it isn’t (durable_mode::mode).
term_copy_on_select: Option<bool>§term_transparency: Option<f64>§term_scroll_sensitivity: Option<f64>§term_allow_bracketed_paste: Option<bool>§term_shift_enter_newline: Option<bool>§browser_search_suggestions: Option<bool>A browser pane’s address bar also asks the default search engine for suggestions while you type (each edit is sent to it before you submit), as Chrome does. Unset: on. Off: suggestions come only from this computer (history, typed URLs). Incognito tabs never ask, as in Chrome.
term_agent_max_runtime_hours: f64Maximum runtime in hours before the watchdog kills an agent pane. 0 (default) disables the limit.
term_agent_idle_timeout_mins: f64Minutes of PTY silence before the watchdog kills an idle agent pane. 0 (default) disables the limit.
cmd_env: HashMap<String, String>§block_header_clear: bool§block_header_show_block_ids: bool§tab_preset: String§widget_clear: bool§widget_icon_only: Option<bool>§widget_pinned: Option<Vec<String>>The widget bar’s pinned icons, in order: a built-in’s short name (agent for
defwidget@agent), or an installed package widget’s full key (ext@<id>/<pane>). Absent means the fresh-install default: the entries with
display:pinned. Written whole by the bar, its drag reorder and Settings → Widgets.
Widget-bar entries the user hid, as full keys (defwidget@drone,
ext@acme.board/main): on neither the bar nor More, nor in the pane “+” picker.
Absent means nothing is hidden. SPEC_WIDGET_BAR_VISIBILITY_SETTINGS_2026_10_12.md.
statusbar_show_muxbus_cloud: Option<bool>Whether the status bar shows MuxBus Cloud: the dot after the host name and
the sign-in block in the host popover. Absent means shown; only an explicit
false hides it. LAN is unaffected. SPEC_STATUSBAR_HIDE_MUXBUS_SETTING_2026_10_08.md.
window_clear: bool§window_transparent: bool§window_blur: bool§window_opacity: Option<f64>§window_bg_color: String§window_reduced_motion: bool§window_tile_gap_size: Option<i64>§window_native_title_bar: bool§window_disable_hardware_acceleration: bool§window_max_tab_cache_size: i32§window_magnified_block_opacity: Option<f64>§window_magnified_block_size: Option<f64>§window_magnified_block_blur_primary_px: Option<i64>§window_magnified_block_blur_secondary_px: Option<i64>§window_confirm_close: bool§window_save_last_window: bool§window_keep_inactive_tabs_laid_out: Option<bool>Keep inactive window tabs laid out (visibility: hidden) instead of
skipping their layout (content-visibility: hidden), so switching
back has nothing to catch up on. On unless false (the frontend
treats unset as on); see
docs/analysis/ANALYSIS_WINDOW_TAB_SWITCH_SMOOTHNESS_2026_09_24.md §7.
window_dimensions: String§window_zoom: Option<f64>§telemetry_clear: bool§telemetry_enabled: bool§telemetry_interval: f64§telemetry_numpoints: Option<i64>§conn_clear: bool§conn_helper: StringInstalling AgentMux’s helper on a host whose own conn:helper is
unset: ask (unset), always or never (SPEC_REMOTES_PANE_2026_10_05.md §4.9).
network_lan_discovery: bool§voice_enabled: Option<bool>§voice_engine: Option<String>§voice_groq_api_key: Option<String>§voice_whisper_cli_path: Option<String>§voice_whisper_model: Option<String>§voice_whisper_model_path: Option<String>§notify_sounds_enabled: Option<bool>§notify_sounds_volume: Option<f32>§notify_sounds_suppress_when_focused: Option<bool>§notify_sound_agent_turn_complete: Option<bool>§notify_sound_agent_turn_error: Option<bool>§notify_sound_agent_turn_interrupted: Option<bool>§notify_sound_agent_message_accepted: Option<bool>§notify_sound_agent_message_rejected: Option<bool>§notify_tooltones_enabled: Option<bool>§notify_tooltones_volume: Option<f32>§notify_tooltones_scope: Option<String>§notify_tooltones_flash: Option<bool>§notify_waiting_browser: Option<bool>§messaging_discord_enabled: boolMaster enable for the Discord messaging bridge. When true, the bridge connects to the Discord Gateway at startup.
messaging_discord_token: Option<String>Discord bot token. Treat as a secret — do not log. Obtain from discord.com/developers/applications → Bot → Token.
messaging_discord_channel: StringChannel ID to filter inbound messages and use as the default send target.
messaging_discord_target: Option<String>Agent ID that receives inbound Discord messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.
messaging_discord_guild: Option<String>Guild ID for guild-scoped slash command registration (Phase 2).
messaging_telegram_enabled: boolMaster enable for the Telegram messaging bridge. When true, the bridge starts long-polling getUpdates at startup.
messaging_telegram_token: Option<String>Telegram bot token from @BotFather. Treat as a secret — do not log.
messaging_telegram_allowed_chats: StringComma-separated allowlist of chat IDs permitted to reach the bridge.
Inbound updates from any other chat are silently dropped.
Stored as a string (not Vec
messaging_telegram_default_chat: Option<String>Default chat ID for outbound sends when a request doesn’t override one.
messaging_telegram_target: Option<String>Agent ID that receives inbound Telegram messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.
messaging_slack_enabled: boolMaster enable for the Slack messaging bridge. When true, the bridge opens a Socket Mode connection at startup.
messaging_slack_bot_token: Option<String>Slack bot token (xoxb-...). Used for Web API calls (chat.postMessage).
Treat as a secret — do not log. Obtain from api.slack.com/apps → OAuth & Permissions
→ Bot User OAuth Token, after installing the app to the workspace.
messaging_slack_app_token: Option<String>Slack app-level token (xapp-...). Used only for apps.connections.open (Socket Mode).
Treat as a secret — do not log. Obtain from api.slack.com/apps → Basic Information
→ App-Level Tokens, scope connections:write.
messaging_slack_channel: StringChannel ID to filter inbound messages and use as the default send target.
messaging_slack_target: Option<String>Agent ID that receives inbound Slack messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.
messaging_whatsapp_enabled: boolMaster enable for the WhatsApp Cloud API bridge.
When true, the outbound sender starts and the /webhook/whatsapp
routes become live (they’re always registered on the router; this
flag controls whether WhatsAppBridge::get() resolves).
messaging_whatsapp_phone_number_id: StringWhatsApp Business phone number ID (Meta App Dashboard > WhatsApp > API Setup).
messaging_whatsapp_access_token: Option<String>System User access token (permanent). Treat as a secret — do not log.
messaging_whatsapp_app_secret: Option<String>Meta App Secret, used to validate X-Hub-Signature-256 on inbound webhooks. Treat as a secret — do not log.
messaging_whatsapp_webhook_verify_token: Option<String>Verify token used in the GET /webhook/whatsapp handshake. User-chosen, must match what’s entered in Meta App Dashboard > WhatsApp > Configuration. Treat as a secret — do not log.
messaging_whatsapp_target: Option<String>Agent ID that receives inbound WhatsApp messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.
messaging_whatsapp_fallback_template: Option<String>Template name used for outbound sends outside the 24h customer service window. If unset and the window has expired, send() fails fast rather than round-tripping to the Graph API (spec §3.4).
messaging_whatsapp_fallback_template_lang: Option<String>Template language code (BCP-47). Default “en_US” if unset.
messaging_whatsapp_tunnel_domain: StringPublic webhook origin (e.g. “wa.yourdomain.com”) that a
user-managed tunnel (Cloudflare Tunnel, ngrok, or otherwise) points
at this instance’s webhook port. v1 does not spawn or supervise a
tunnel subprocess — this field is used only to print the full
callback URL in the startup log as a setup reminder; the user is
responsible for standing up the tunnel and registering
https://<this>/webhook/whatsapp in Meta’s App Dashboard themselves.
See messaging/whatsapp/mod.rs for the full scoping rationale.
connections: HashMap<String, ConnKeywords>Per-connection settings: settings.json → connections.<name>
(SPEC_REMOTE_TERMINALS_AND_DURABLE_SESSIONS_2026_10_02.md §4, decision 5;
SPEC_REMOTES_PANE_2026_10_05.md §4.3). Typed here so it reaches
FullConfigType::connections, which every per-connection reader uses
(ConfigState::update_settings copies it). Before this field the object
fell into extra and no connection setting ever took effect.
Read entry by entry (deserialize_connections), so one bad entry
can’t fail the whole file.
extra: HashMap<String, Value>Catch-all for unknown/dynamic keys (a key this struct has no field for yet). These pass through serde unchanged so the frontend can access them as flat settings keys.
Trait Implementations§
Source§impl Clone for SettingsType
impl Clone for SettingsType
Source§fn clone(&self) -> SettingsType
fn clone(&self) -> SettingsType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SettingsType
impl Debug for SettingsType
Source§impl Default for SettingsType
impl Default for SettingsType
Source§fn default() -> SettingsType
fn default() -> SettingsType
Source§impl<'de> Deserialize<'de> for SettingsType
impl<'de> Deserialize<'de> for SettingsType
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 SettingsType
impl RefUnwindSafe for SettingsType
impl Send for SettingsType
impl Sync for SettingsType
impl Unpin for SettingsType
impl UnsafeUnpin for SettingsType
impl UnwindSafe for SettingsType
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>,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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