Skip to content

amux Configuration Reference ​

This reference covers the settings read by amux from ~/.amux/config.toml. Common metadata lives in the public core's internal/config/reference.go; distributions register their own metadata through extensions. Update the owning module's metadata when changing keys, defaults, or constraints, then run make config-doc in that module. scripts/check.sh checks for omissions and stale generated files.

Common commands:

bash
amux system config path
amux system config get <key>
amux system config set <key> <value>
amux system config unset <key>

“CLI-managed” specifically means the generic amux system config set/get/unset commands. Keys marked “No” may have dedicated commands listed in their descriptions; otherwise edit TOML directly. Replace <profile> with the actual Feishu Bot Profile name. <provider> supports only codex. This reference does not include example sensitive values.

Agent ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
adapter.codex.executablestringcodexProgram name, absolute path or ~/ path; not a shell commandYesCodex executable; empty uses codex. Resolved on the execution Runtime; save and restart to apply to new Sessions and model discovery.

Runtime cleanup ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
maintenance.daily_cleanup.enabledbooleantrue—YesAutomatically clean up ordinary and user-isolated topic data daily and privately report results to Bot owners. Installation-wide switch; applies immediately.
maintenance.daily_cleanup.atstring06:17HH:MMYesDaily cleanup time in the Hub local timezone; a missed run is performed once when the system resumes.
maintenance.daily_cleanup.protected_pathsstring array[]absolute pathsYesAbsolute paths of shared or long-lived workspaces always retained by daily cleanup, across all Runtimes.
runtime.task_cleanup.enabledbooleantrue—NoWhether to clean up terminal task history automatically.
runtime.task_cleanup.terminal_history_ttl_secondsinteger seconds604800 (7 days)>0NoRetention period for terminal task history.
runtime.task_cleanup.sweep_interval_secondsinteger seconds3600>0NoSweep interval for terminal task cleanup.
runtime.broker_reap.enabledbooleantrue—NoWhether to periodically reap orphaned Session broker processes and their files (deleted or stopped Sessions, or duplicate brokers).
runtime.broker_reap.sweep_interval_secondsinteger seconds300>0NoSweep interval for orphaned broker reaping.

Experimental Feishu features ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
bridge.feishu.group_settings.enabledbooleanfalse—YesInstallation-wide group settings experiment. When disabled, saved group settings and Sessions are retained and independently configured groups pause new work; unconfigured groups and private chats use Bot defaults. Restart to apply changes.
bridge.feishu.presentation.completion_notification_enabledbooleanfalse—YesInstallation-wide experiment switch for long-session completion notifications, affecting every assistant. When disabled, no new success, input-needed, or failure notifications are sent. Restart after changing it.
bridge.feishu.experimental.steer_foregroundbooleanfalse—YesExperiment switch for foreground coordination and busy-input steering. When enabled, follow-ups from the same sender while a turn runs are injected into that turn instead of interrupting it, and singleton and thread chats receive the foreground/background coordination prompt (first submit and every 20). When disabled, busy input interrupts and resubmits as before. AMUX_FEISHU_BUSY_INPUT=interrupt forces steering off. Restart after changing it.
bridge.feishu.experimental.show_background_tasksbooleanfalse—YesBackground task progress card experiment: when on, each background task (subtask / background agent instance) started from a Feishu chat gets its own live progress card; off by default, background work posts no cards and the foreground agent reports results. Toggle on the Feishu experiments card; applies immediately on save.
memory.enabledbooleanfalse—YesAgent memory experiment switch, controlled by the Hub for all Runtimes without an Agent Profile; shared globally without isolation and scoped to the effective Principal with user isolation. Disabling blocks reads and writes while retaining files and native-memory suppression in existing conversations. Restart to apply.

Hub and scheduling ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
hub.addrstring127.0.0.1:7100host:portYesamuxd Hub address.
hub.tokenstringSensitive; omitted—YesShared authentication token for the Hub and Runtime.
hub.allowed_targetsstring array[]—YesAllowlist of target IDs that may register with the Hub; empty means unrestricted.

Runtime ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
runtime.idstringHostname—YesStable Runtime identifier.
runtime.namestringruntime.id—YesRuntime display name.
runtime.auto_startbooleanfalse—YesWhether to start the Runtime automatically at installation or system startup.
runtime.idle_timeout_secondsinteger seconds00 or >=60YesLegacy default sleep threshold; new configurations should use runtime.session_reclaim.
runtime.max_sessionsinteger100 (applied by the Runtime)>=0YesMaximum concurrent Sessions on the machine; 0 uses the Runtime default.
runtime.max_concurrencyinteger10 (applied by the Runtime)>=0YesMaximum concurrency per Agent type; 0 uses the Runtime default.
runtime.labels.<label>string map entryNone—YesScheduling labels, such as pool and repo_cache.

Session reclamation ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
runtime.session_reclaim.enabledbooleantrue—NoMaster switch for staged Session reclamation.
runtime.session_reclaim.sweep_interval_secondsinteger seconds600>0NoSweep interval for Session reclamation.
runtime.session_reclaim.local.sleep_after_secondsinteger seconds00 or >=60NoAutomatic sleep threshold for local Sessions.
runtime.session_reclaim.local.archive_after_secondsinteger seconds00 or >=60NoAutomatic archive threshold for local Sessions.
runtime.session_reclaim.local.prune_after_secondsinteger seconds00 or >=60NoAutomatic deletion threshold for local Sessions.
runtime.session_reclaim.feishu.sleep_after_secondsinteger seconds172800 (48 hours)0 or >=60NoAutomatic sleep threshold for Feishu Sessions.
runtime.session_reclaim.feishu.archive_after_secondsinteger seconds00 or >=60NoAutomatic archive threshold for Feishu Sessions; disabled by default, enabled by an explicit positive value.
runtime.session_reclaim.feishu.prune_after_secondsinteger seconds00 or >=60NoThreshold for automatically deleting local Feishu Session records and replay; disabled by default, enabled by an explicit positive value. Feishu messages are preserved.

CLI and MCP ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
cli.default_targetstringlocal—YesDefault CLI target.
mcp.enabledbooleantrue—YesWhether to enable the built-in amux MCP server.
mcp.auto_injectbooleantrue—YesWhether to automatically project the built-in MCP server into regular run Sessions.

Isolated execution ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
isolation.global_envKEY=VALUE string arraySensitive; omittedValid, unique environment variable namesNoInstallation-wide environment shared by all identified isolated executions. Manage with isolation global-env; explicit launch environment values take precedence. Restart the system after changes.

Feishu basics ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
bridge.feishu.notify_chat_idstringEmpty—YesLegacy Feishu notification chat ID.
bridge.feishu.prompt.shared_thread_enabledbooleanfalse—YesWhether to inject shared thread history into the Prompt.
bridge.feishu.prompt.topic_root_enabledbooleantrue—YesWhether to inject the root message into the first turn of a new topic.
bridge.feishu.prompt.shared_thread_template_filepathEmpty—YesShared thread Prompt template file.
bridge.feishu.document_comments.enabledbooleanfalse—YesInstallation-wide switch for cloud document comment input.
bridge.feishu.presentation.thinking_processenumcollapsedexpanded、collapsed、hiddenYesInstallation-wide activity display mode, inherited when a Profile does not override it.
bridge.feishu.presentation.completion_notification_after_secondsinteger seconds60>=0; 0 disables all private-chat notifications for this featureYesAfter a regular task succeeds, needs more input, or fails and reaches the duration threshold, send its initiator a private card linking back to the topic. No extra notification is added to the topic. Read status is not checked; agent-triggered work does not notify.

Agent collaboration ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
bridge.feishu.bot_to_bot.enabledbooleanfalse—YesWhether to accept structured, explicit mentions from external agents in shared workspace groups.
bridge.feishu.bot_to_bot.max_turns_per_threadinteger10>0YesMaximum accepted agent collaboration turns per group topic.

Group watch ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
bridge.feishu.group_watch.enabledbooleanfalse—YesInstallation-wide group watch switch; root messages with text or valid image, file, or merged-forward material can trigger it automatically.
bridge.feishu.group_watch.chat_idsstring array[]—YesGroup chat_ids allowed to trigger automatically.
bridge.feishu.group_watch.sender_typesstring array[user, app]user、appYesMessage sender types allowed to trigger automatically.
bridge.feishu.group_watch.chat_sender_types.<chat_id>string arrayInherits sender_typeschat_id must also be present in chat_ids; values are user or appYesSender types allowed to trigger automatically for one watched group; groups without an override use sender_types.
bridge.feishu.group_watch.poll_interval_secondsinteger seconds155-300YesHistory polling interval to recover messages from other apps.
bridge.feishu.group_watch.lookback_secondsinteger seconds605-3600 and at least the polling intervalYesHistory recovery lookback window.
bridge.feishu.group_watch.dedup.enabledbooleanfalse—YesWhether to suppress duplicate app-authored alerts in the same group before creating a Session or reply card.
bridge.feishu.group_watch.dedup.window_secondsinteger seconds1800 (30 minutes)60-86400YesSemantic deduplication window for app-authored alerts, measured from the last matching alert that was allowed to create a Session. The fingerprint uses the sending app, Rule ID and title, or normalized visible content when those fields are unavailable.
bridge.feishu.group_watch.max_active_sessions_per_chatinteger501-500YesMaximum active group watch Sessions per watched group for the current agent.
bridge.feishu.group_watch.idle_timeout_secondsinteger seconds10800 (3 hours)60-604800YesAutomatic sleep threshold for new group watch Sessions.
bridge.feishu.group_watch.thinking_processenumcollapsedexpanded、collapsed、hiddenYesInstallation-wide group watch activity display mode.

Feishu workspace defaults ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
bridge.feishu.workspace_defaults.agentstringbuiltin/codex—YesDefault Agent Profile for new workspaces.
bridge.feishu.workspace_defaults.targetstringEmpty (automatic selection)—YesDefault target for new workspaces.
bridge.feishu.workspace_defaults.cwdpathEmpty—YesLegacy cwd; natural entry points still use an independent empty workspace.
bridge.feishu.workspace_defaults.modelstringEmpty—YesDefault model override for new workspaces.
bridge.feishu.workspace_defaults.argsstring array[]—YesDefault Agent arguments for new workspaces.
bridge.feishu.workspace_defaults.idle_timeout_secondsinteger seconds00 or >=60YesSleep threshold for new workspace Sessions.
bridge.feishu.claude_modelsstring array[]—YesExtra Claude model names the Feishu model picker lists for the Claude runtime, appended after the built-in opus, sonnet, and haiku in declaration order so the latest models are selectable. Takes effect after restart.

Feishu Bot Profiles ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
bridge.feishu.profiles.<profile>.workspace_defaults.agentstringInherit installation settings—YesProfile-level default workspace expert.
bridge.feishu.profiles.<profile>.workspace_defaults.targetstringInherit installation settings—YesProfile-level default workspace target.
bridge.feishu.profiles.<profile>.workspace_defaults.cwdpathInherit installation settings—YesProfile-level legacy cwd.
bridge.feishu.profiles.<profile>.workspace_defaults.modelstringInherit installation settings—YesProfile-level default workspace model.
bridge.feishu.profiles.<profile>.workspace_defaults.argsstring arrayInherit installation settings—YesProfile-level default workspace arguments.
bridge.feishu.profiles.<profile>.workspace_defaults.idle_timeout_secondsinteger secondsInherit installation settings0 or >=60YesProfile-level workspace sleep threshold.
bridge.feishu.profiles.<profile>.interaction.modeenumthreadthread、singletonYesMessage routing mode for groups without independent settings. Group watch requires the target group’s effective mode to be thread.
bridge.feishu.profiles.<profile>.presentation.thinking_processenumInherit installation settings (collapsed)expanded、collapsed、hiddenYesActivity display mode for the current assistant's regular tasks.
bridge.feishu.profiles.<profile>.presentation.completion_notification_after_secondsinteger secondsInherit installation settings (60)>=0; 0 disables all private-chat notifications for this featureYesCompletion notification threshold for the current assistant's regular tasks.
bridge.feishu.profiles.<profile>.bot_e2e.sender_open_idsstring array[]—YesBot/app sender open_ids allowed to submit owner-authorized test input through @Bot /e2e.
bridge.feishu.profiles.<profile>.bot_e2e.sender_rolesmap[string]string{}owner、sharedYesMaps trusted test Bot sender open_ids to the projected identity of their /e2e requests (owner or shared). unauthorized is not supported; unmatched senders retain owner.
bridge.feishu.profiles.<profile>.document_comments.enabledbooleanInherit installation settings—YesProfile-level cloud document comment switch.
bridge.feishu.profiles.<profile>.document_comments.agent_profile_refstringEmpty (inherit assistant)—YesExpert used for new cloud document comment Sessions.
bridge.feishu.profiles.<profile>.document_comments.runtime_refstringEmpty (inherit assistant or legacy configuration)—YesRuntime engine used for new cloud document comment Sessions.
bridge.feishu.profiles.<profile>.document_comments.model_refstringEmpty (Runtime engine default)—YesModel for new cloud document comment Sessions, validated against the selected Runtime engine. Without a Runtime override, follow the expert's model policy; native model names are allowed when supported_models is not declared.
bridge.feishu.profiles.<profile>.document_comments.reasoning_effortstringEmpty (Runtime engine default)—YesReasoning effort for new cloud document comment Sessions.
bridge.feishu.profiles.<profile>.bot_to_bot.enabledbooleanInherit installation settings—YesProfile-level agent collaboration switch.
bridge.feishu.profiles.<profile>.bot_to_bot.max_turns_per_threadintegerInherit installation settings (10)>0YesProfile-level agent collaboration turn limit per topic.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.enabledbooleantrue—YesEnable watch in this group; automatic work also requires the master watch switch.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.agent_profile_refstringEmpty (inherit ordinary conversations in this group)—YesWatch expert for this group; empty inherits its ordinary conversation execution settings.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.runtime_refstringEmpty (inherit ordinary conversations in this group)—YesRuntime for custom watch execution in this group; required with a custom expert.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.model_refstringEmpty (Runtime engine default)—YesWatch model for this group, validated against the selected runtime.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.reasoning_effortstringEmpty (Runtime engine default)—YesWatch reasoning effort for this group, validated against the selected runtime and model.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.thinking_processenumInherit watch defaultsexpanded、collapsed、hiddenYesActivity presentation for watch tasks in this group.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.max_active_sessions_per_chatintegerInherit watch defaults1-500YesMaximum active watch Sessions in this group.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.idle_timeout_secondsinteger secondsInherit watch defaults60-604800YesIdle timeout for new watch Sessions in this group.
bridge.feishu.profiles.<profile>.group_watch.chat_settings.<chat_id>.versioninteger0Non-negative integerYesWatch settings version for this group, used to reject stale card writes.
bridge.feishu.profiles.<profile>.group_watch.enabledbooleanInherit installation settings—YesProfile-level group watch switch; image-only, file-only, and merged-forward messages without text can also trigger automatically.
bridge.feishu.profiles.<profile>.group_watch.chat_idsstring arrayInherit installation settings—YesProfile-level watched-group allowlist.
bridge.feishu.profiles.<profile>.group_watch.sender_typesstring arrayInherit installation settingsuser、appYesProfile-level sender types.
bridge.feishu.profiles.<profile>.group_watch.chat_sender_types.<chat_id>string arrayInherit installation settingschat_id must also be present in this Profile's effective chat_ids; values are user or appYesProfile-level sender type override for one watched group; groups without an override use the current Profile's sender_types.
bridge.feishu.profiles.<profile>.group_watch.poll_interval_secondsinteger secondsInherit installation settings5-300YesProfile-level history polling interval.
bridge.feishu.profiles.<profile>.group_watch.lookback_secondsinteger secondsInherit installation settings5-3600YesProfile-level history lookback window.
bridge.feishu.profiles.<profile>.group_watch.dedup.enabledbooleanInherit installation settings—YesProfile-level semantic deduplication switch for app-authored alerts.
bridge.feishu.profiles.<profile>.group_watch.dedup.window_secondsinteger secondsInherit installation settings (1800)60-86400YesProfile-level semantic deduplication window for app-authored alerts.
bridge.feishu.profiles.<profile>.group_watch.max_active_sessions_per_chatintegerInherit installation settings (50)1-500YesProfile-level active Session limit per group.
bridge.feishu.profiles.<profile>.group_watch.idle_timeout_secondsinteger secondsInherit installation settings (10800)60-604800YesProfile-level automatic sleep threshold for group watch.
bridge.feishu.profiles.<profile>.group_watch.agent_profile_refstringEmpty (inherit assistant)—YesAgent Profile for new group-watch Sessions. An empty value inherits the group’s effective default Profile; a custom selection is independent of Runtime.
bridge.feishu.profiles.<profile>.group_watch.runtime_refstringEmpty (inherit assistant)—YesRuntime for new group-watch Sessions. Inherited execution uses the group’s effective default Runtime; custom execution requires this field.
bridge.feishu.profiles.<profile>.group_watch.model_refstringEmpty (Runtime engine default)—YesModel for new group watch Sessions, validated against the selected Runtime engine. Without a Runtime override, follow the expert's model policy; native model names are allowed when supported_models is not declared.
bridge.feishu.profiles.<profile>.group_watch.reasoning_effortstringEmpty (Runtime engine default)—YesReasoning effort for new group watch Sessions; must be supported by the selected Runtime engine and model.
bridge.feishu.profiles.<profile>.group_watch.thinking_processenumInherit installation group watch settings (collapsed)expanded、collapsed、hiddenYesActivity display mode for the current assistant's group watch tasks, configured separately from regular tasks.

Structured Provider ​

Configuration keyTypeDefaultConstraintsCLI-managedDescription
provider.structured.turn_idle_timeout_secondsinteger seconds9000 disables; negative values use the default; maximum 604800NoStructured provider and ACP turn timeout when no meaningful activity occurs; paused while awaiting permission or an ACP tool without a progress contract.
provider.structured.turn_hard_cap_secondsinteger seconds216000 disables; negative values use the default; maximum 604800NoAbsolute duration limit for a structured provider or ACP turn, including time awaiting permission or tools.
provider.structured.tool_idle_timeout_secondsinteger seconds36000 disables; negative values use the default; maximum 604800NoStructured provider tool timeout when no progress occurs. ACP has no verified tool progress contract and uses the turn hard cap.
provider.structured.repeat_tool_call_limitinteger count500 disables; negative values use the default; maximum 1000NoMaximum consecutive identical tool calls in a structured provider or ACP turn. ACP counts only distinct call IDs with complete tool identity and input.
provider.structured.<provider>.turn_idle_timeout_secondsinteger secondsInherit global settingsProvider is codex; 0 disables; negative values use the provider default; maximum 604800NoTurn idle timeout override for the specified provider.
provider.structured.<provider>.turn_hard_cap_secondsinteger secondsInherit global settingsProvider is codexNoTurn hard cap override for the specified provider.
provider.structured.<provider>.tool_idle_timeout_secondsinteger secondsInherit global settingsProvider is codexNoTool idle timeout override for the specified provider.
provider.structured.<provider>.repeat_tool_call_limitinteger countInherit global settingsProvider is codex; 0 disables; negative values use the provider default; maximum 1000NoConsecutive identical tool call limit override for the specified provider.

State outside config.toml ​

Feishu App Secrets and legacy-host credentials live in $AMUX_HOME/secrets/; identified Agent credentials are stored per Principal in $AMUX_HOME/principals/<principal-id>/secrets/. Runtime state such as workspace Session quotas, thread bindings, and group watch bindings lives in Bridge/Runtime SQLite databases. These are not config.toml keys and must not be written to that file.

Released under the Apache-2.0 License.