Configuration /config

API Keys

muxd supports 9 LLM providers. Set API keys via environment variables or /config:

/config set anthropic.api_key sk-ant-...
/config set openai.api_key sk-...
/config set mistral.api_key ...
/config set grok.api_key xai-...
/config set zai.api_key ...
/config set google.api_key ...
/config set fireworks.api_key ...
/config set deepinfra.api_key ...
/config set ollama.url http://localhost:11434
/config set brave.api_key BSA...

Or use environment variables:

export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
export MISTRAL_API_KEY="..."
export GROK_API_KEY="xai-..."
export ZAI_API_KEY="..."
export GOOGLE_API_KEY="..."
export FIREWORKS_API_KEY="..."
export DEEPINFRA_API_KEY="..."
export OLLAMA_URL="http://localhost:11434"

Resolution order: environment variable > /config set preference.

Config file

All preferences are stored in ~/.config/muxd/config.json. You can edit this file directly or use /config set from the TUI. Here's a sample:

{
  "model": "claude-sonnet",
  "anthropic_api_key": "sk-ant-...",
  "brave_api_key": "BSA...",
  "daemon_bind_address": "0.0.0.0",
  "hub_url": "http://192.168.1.50:4097",
  "hub_node_token": "your-hub-token",
  "hub_node_name": "my-desktop"
}

Only set the keys you need — omitted keys use defaults. The file is created automatically on first run.

/config Subcommands

CommandDescription
/config showShow all current preferences
/config set <key> <value>Set a preference
/config resetReset all preferences to defaults
/config modelsShow available models and pricing
/config toolsShow available tools
/config hubShow hub settings
/config daemonShow daemon/network settings
/config themeShow theme settings

/config set Keys

Provider Keys

KeyEnv var fallbackDescription
anthropic.api_keyANTHROPIC_API_KEYAnthropic API key
openai.api_keyOPENAI_API_KEYOpenAI API key
mistral.api_keyMISTRAL_API_KEYMistral API key
grok.api_keyGROK_API_KEYGrok / xAI API key
zai.api_keyZAI_API_KEYZ.AI API key
google.api_keyGOOGLE_API_KEYGoogle AI API key
fireworks.api_keyFIREWORKS_API_KEYFireworks AI API key
deepinfra.api_keyDEEPINFRA_API_KEYDeepInfra API key
ollama.urlOLLAMA_URLOllama server URL (default: http://localhost:11434)
brave.api_keyBRAVE_SEARCH_API_KEYBrave Search API key (for web search tool)
textbelt.api_keyTextbelt API key (for SMS tools)

Model

KeyDescription
modelDefault model (e.g. claude-sonnet, gpt-4o, claude-opus)
model.consultModel to use for second opinion consult calls (e.g. openai/gpt-4o, anthropic/claude-haiku). No default. Set via /config set model.consult <model>.

Footer Display

KeyTypeDefaultDescription
footer.tokensbooltrueShow token count
footer.costbooltrueShow estimated cost
footer.cwdbooltrueShow current working directory
footer.sessionbooltrueShow session info
footer.keybindingsbooltrueShow keybinding hints
footer.emojistring(none)Footer emoji (use /emoji picker or set by name)

Preset emoji names: devil, imp, fire, rocket, skull, robot, ghost, alien, bolt, star, diamond, snake, cat, dog, heart. Use none to remove.

/config set footer.emoji devil
/config set footer.emoji none

Or use the interactive picker: /emoji

Hub

Settings for running a hub coordinator (muxd --hub).

KeyDescription
hub.bind_addressHub bind address (default: localhost, use 0.0.0.0 for LAN access)
hub.auth_tokenBearer token for hub authentication (auto-generated on first hub start)

Node (Client)

Settings for registering a daemon as a node with an existing hub.

KeyDescription
hub.urlHub URL that this daemon registers with (e.g. http://hub-host:4097)
hub.node_tokenToken this daemon uses to authenticate with the hub (same as the hub's hub.auth_token)
hub.node_nameDisplay name for this node in the hub (defaults to hostname)

See the Hub setup guide for the full connection flow.

SMS (Textbelt)

KeyDescription
textbelt.api_keyTextbelt API key for sending SMS
/config set textbelt.api_key your-api-key

Get an API key at textbelt.com. Enables the sms_send, sms_status, and sms_schedule tools.

Daemon

KeyDescription
daemon.bind_addressNetwork interface to bind (localhost, 0.0.0.0, or specific IP). Default: localhost

Use 0.0.0.0 to make muxd accessible from other devices on your LAN (e.g. the muxd mobile app):

/config set daemon.bind_address 0.0.0.0

Or pass it as a CLI flag:

muxd -bind 0.0.0.0
muxd --daemon -bind 0.0.0.0

Scheduler

KeyDescription
scheduler.allowed_toolsComma-separated list of tools the scheduler may run

Note: Scheduled agent tasks (created via schedule_task or /schedule add-task) bypass the scheduler.allowed_tools allowlist. The spawned agent enforces its own tool policy at runtime.

Tools

KeyDescription
tools.disabledComma-separated list of tools to disable (e.g. bash,file_write)
tools.ask_userEnable/disable the ask_user tool (default: true)

Boolean values accept: true/false, on/off, yes/no, 1/0 (case-insensitive).

Model Aliases

Use short aliases instead of full model IDs:

AliasResolves to
claude-sonnetclaude-sonnet-4-6
claude-haikuclaude-haiku-4-5-20251001
claude-opusclaude-opus-4-6

The anthropic/ prefix is optional: anthropic/claude-sonnet and claude-sonnet are equivalent.

/config set model claude-opus

Provider Prefixes

Use provider/model syntax to specify a model from any provider:

PrefixProviderExample
anthropic/Anthropicanthropic/claude-sonnet-4-6
openai/OpenAIopenai/gpt-4o
mistral/Mistralmistral/mistral-large-latest
grok/ or xai/Grok / xAIgrok/grok-3
zai/, zai-sdk/, or zhipu/Z.AIzai/glm-4
fireworks/Fireworks AIfireworks/llama-v3p1-70b
deepinfra/DeepInfradeepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct
google/Google AIgoogle/gemini-2.0-flash
ollama/Ollama (local)ollama/llama3.3

Auto-Detection

When no prefix is given, muxd detects the provider from the model name:

PatternDetected provider
claude-*Anthropic
gpt-*, o1*, o3*, o4*OpenAI
mistral-*, ministral-*, codestral-*, pixtral-*Mistral
grok-*Grok / xAI
glm-*, autoglm-*Z.AI
accounts/fireworks/models/*Fireworks AI
Contains : (e.g. gemma3:4b)Ollama

Provider Model Examples

/config set model claude-sonnet          # Anthropic (alias)
/config set model gpt-4o                 # OpenAI (auto-detected)
/config set model mistral-large-latest   # Mistral (auto-detected)
/config set model grok-3                 # Grok / xAI (auto-detected)
/config set model glm-4                  # Z.AI (auto-detected)
/config set model fireworks/llama-v3p1-70b           # Fireworks (prefix)
/config set model deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct  # DeepInfra (prefix)
/config set model google/gemini-2.0-flash            # Google (prefix)
/config set model llama3.3:latest        # Ollama (auto-detected by ":")

Pricing

muxd tracks estimated costs per session.

Built-in pricing

ModelInput ($/1M tokens)Output ($/1M tokens)
claude-opus-4-6$5.00$25.00
claude-sonnet-4-6$3.00$15.00
claude-haiku-4-5-20251001$1.00$5.00

Custom pricing

Override or add pricing in ~/.config/muxd/pricing.json:

{
  "my-custom-model": {
    "input": 1.0,
    "output": 5.0
  }
}

Values are dollars per million tokens. Custom entries merge with defaults.

Data Directory

PathContents
~/.config/muxd/config.jsonUser preferences and API keys
~/.config/muxd/pricing.jsonCustom pricing overrides
~/.local/share/muxd/muxd.dbSQLite database (sessions and messages)