Skip to content

Configuration Reference

All Muxit server settings live in workspace/config/server.json. You can edit this file directly or use the Settings panel in the web UI.

File Location

workspace/config/server.json

Changes to this file require a server restart to take effect (except where noted).


Server

WebSocket

json
{
  "websocket": {
    "port": 8765
  }
}
FieldTypeDefaultDescription
websocket.portint8765WebSocket server port. Also serves the web UI

Override at startup: node start.js server --port=9000

Polling Rates

json
{
  "polling": {
    "connectorRate": 200,
    "broadcastRate": 50,
    "clientFlushRate": 100
  }
}
FieldTypeDefaultUnitDescription
polling.connectorRateint200msHow often to poll connector properties
polling.broadcastRateint50msHow often to batch state changes for WebSocket
polling.clientFlushRateint100msHow often clients flush pending state updates

Tuning tip: If you have many polled properties and see high CPU, increase connectorRate to 500 or 1000. The default 200ms (5 polls/second) is a good balance for most setups.

Logging

json
{
  "logging": {
    "level": "info"
  }
}
FieldTypeDefaultDescription
logging.levelstring"info"Minimum log level: debug, info, warn, error

Connectors

json
{
  "connectors": {
    "enabled": ["test-device", "webcam", "mqtt"]
  }
}
FieldTypeDefaultDescription
connectors.enabledstring[](auto)List of enabled connector names. If absent, the first N connectors are auto-selected based on your license tier

Connector names correspond to filenames in workspace/connectors/ (without .js). The TestDevice is always enabled regardless of this list.

Manage this from the Hardware panel — check/uncheck connectors and click Save.


Scripts

json
{
  "scripts": {
    "directory": "./scripts",
    "autoStart": []
  }
}
FieldTypeDefaultDescription
scripts.directorystring"./scripts"Path to the scripts directory (relative to workspace)
scripts.autoStartstring[][]Script names to start automatically on server launch

Auto-start example: "autoStart": ["monitor", "mqtt-connect"] runs these scripts when the server starts.


Drivers

json
{
  "drivers": {
    "directory": "./drivers"
  }
}
FieldTypeDefaultDescription
drivers.directorystring"./drivers"Path to the drivers directory (relative to workspace). Contains .driver.js files and free//premium/ DLL subdirectories

AI

json
{
  "ai": {
    "provider": "openrouter",
    "providers": {
      "openrouter": {
        "apiKey": "sk-or-v1-YOUR-KEY",
        "model": "anthropic/claude-sonnet-4",
        "maxTokens": 4096
      },
      "claude": {
        "apiKey": "",
        "model": "claude-sonnet-4-20250514",
        "maxTokens": 4096
      },
      "openai": {
        "apiKey": "",
        "model": "gpt-4o",
        "maxTokens": 4096
      },
      "google": {
        "apiKey": "",
        "model": "gemini-2.0-flash",
        "maxTokens": 4096
      }
    },
    "safetyMode": "confirm",
    "instructions": "You are Muxit AI, an assistant for a hardware lab."
  }
}
FieldTypeDefaultDescription
ai.providerstring"openrouter"Active LLM provider name
ai.providers.<name>.apiKeystring""API key for the provider
ai.providers.<name>.modelstringvariesModel identifier
ai.providers.<name>.maxTokensint4096Max tokens per response
ai.safetyModestring"confirm""confirm" = approve each tool call; "trust" = auto-execute
ai.instructionsstring""Custom system prompt prepended to AI conversations

Providers: Configure multiple providers and switch between them by changing ai.provider. Each provider has its own API key and model settings.

For detailed AI setup, see the AI & Voice Guide.


Voice

json
{
  "voice": {
    "stt": {
      "provider": "browser",
      "providers": {
        "browser": {
          "language": "en-US"
        }
      }
    },
    "tts": {
      "enabled": false,
      "provider": "browser",
      "providers": {
        "browser": {
          "voice": "Google UK English Male",
          "rate": 1.1,
          "pitch": 0.9
        }
      }
    },
    "wakeWord": {
      "enabled": false,
      "word": "muxit",
      "sensitivity": 0.5
    },
    "autoSend": true
  }
}
FieldTypeDefaultDescription
voice.stt.providerstring"browser"Speech-to-text provider (browser Web Speech API)
voice.stt.providers.browser.languagestring"en-US"STT language code
voice.tts.enabledbooleanfalseEnable text-to-speech for AI responses
voice.tts.providers.browser.voicestringvariesTTS voice name (browser-dependent)
voice.tts.providers.browser.ratenumber1.0Speech rate (0.5–2.0)
voice.tts.providers.browser.pitchnumber1.0Speech pitch (0.5–2.0)
voice.wakeWord.enabledbooleanfalseEnable "Muxit" wake word for hands-free activation
voice.wakeWord.wordstring"muxit"Wake word to listen for
voice.wakeWord.sensitivitynumber0.5Wake word detection sensitivity (0–1)
voice.autoSendbooleantrueAuto-send voice transcription when user pauses

For detailed voice setup, see the AI & Voice Guide.


Security

json
{
  "security": {
    "editorMode": true,
    "remoteAccess": false,
    "https": false,
    "bindAddress": "127.0.0.1"
  }
}
FieldTypeDefaultDescription
security.editorModebooleantrueAllow editing files from the web UI. Disable for read-only mode
security.remoteAccessbooleanfalseBind to all interfaces (0.0.0.0) for LAN access
security.httpsbooleanfalseEnable HTTPS with auto-generated self-signed certificate
security.bindAddressstring"127.0.0.1"Override bind address (advanced). Set to 0.0.0.0 for all interfaces

Remote access password is stored separately in workspace/config/security.json (hashed, never plaintext).

For detailed remote access setup, see the Remote Access Guide.


Complete Example

Here's a fully annotated server.json:

json
{
  "websocket": {
    "port": 8765
  },
  "polling": {
    "connectorRate": 200,
    "broadcastRate": 50,
    "clientFlushRate": 100
  },
  "logging": {
    "level": "info"
  },
  "scripts": {
    "directory": "./scripts",
    "autoStart": []
  },
  "drivers": {
    "directory": "./drivers"
  },
  "connectors": {
    "enabled": ["test-device", "webcam"]
  },
  "ai": {
    "provider": "openrouter",
    "providers": {
      "openrouter": {
        "apiKey": "sk-or-v1-YOUR-KEY",
        "model": "anthropic/claude-sonnet-4",
        "maxTokens": 4096
      }
    },
    "safetyMode": "confirm",
    "instructions": ""
  },
  "voice": {
    "tts": { "enabled": false },
    "wakeWord": { "enabled": false },
    "autoSend": true
  },
  "security": {
    "editorMode": true,
    "bindAddress": "127.0.0.1"
  }
}

Muxit — Hardware Orchestration Platform