Skip to content

Console Settings

Open Settings from the left navigation of the Device Agent console. The page is split into five tabs: MQTT, Models, Voice, IM, and Permissions. Each tab has refresh and save actions. Successful saves write to .device_agent/config.json.

Console settings page

MQTT

The MQTT tab configures how Device Agent connects to the MQTT broker. It also shows the current gateway MQTT connection status.

AreaSettingsNotes
EndpointsBroker URL, WebSocket URL, Client IDbrokerUrl is used by the gateway and device-side clients; wsUrl is used by the browser for MQTT over WebSocket.
ConnectionMQTT version, Keep Alive, connect timeout, auto reconnect, reconnect period, Clean Start, session expirySession expiry is shown for MQTT 5.
AuthUsername, passwordMatches the MQTT broker authentication settings.
TLSTLS switch, certificate verification, CA, client certificate, client key, key passphrase, Server NameUploaded certificate files are stored under certificates in the runtime home.
Topic templatesText requests, device commands, command responses, telemetry, events, NTPRead-only in the current UI. Use .env or the config file to change topic templates.

After saving MQTT changes, existing MQTT connections do not switch automatically. The page shows whether a gateway restart is required.

Models

The Models tab contains the primary agent model and the vision model.

AreaSettingsNotes
Agent modelProvider, model, API key, max iterations, Base URLUsed for device modeling, chat, tool calls, and device control. Model options come from the runtime model catalog.
Codex authAccess token or ~/.codex/auth.jsonShown when the provider is openai-codex.
Vision modelEnabled state, provider, model, API key, timeoutUsed for camera images, screenshots, and multimodal input analysis.

The vision provider can be auto or dashscope. auto reuses the primary agent model when it supports image input. If the selected agent model does not support images, vision analysis is unavailable. dashscope requires a separate model and API key.

Voice

The Voice tab configures the voice channel and speech provider. The voice WebSocket URL is shown as read-only; the default is ws://127.0.0.1:3001/ws/voice.

SettingNotes
Voice enabledControls whether the voice channel is available.
Speech providerSupports Volcengine, Alibaba Cloud DashScope, AWS, and ElevenLabs.
RegionLimits eligible providers. Supported values are cn, us, eu, and global.
Speech recognitionASR model, resource ID, or language settings, depending on provider.
Text-to-speechTTS model, voice, and sample rate, depending on provider.
Provider credentialsAPI key, access key, AWS credentials, or equivalent provider secrets.

Provider, model, voice, and credential changes can be saved from the page. Enable state, bind host, port, or TLS changes require a service restart; those listener settings are usually managed through .env or the config file.

IM

The IM tab enables and configures common third-party chat platforms. The current console supports:

ChannelMain Settings
FeishuApp ID, App Secret, Encrypt Key, Verification Token, allow list
DingTalkClient ID, Client Secret, allow list
DiscordBot Token, allow list
TelegramBot Token, allow list
SlackBot Token, App Token, Signing Secret, allow list

allowFrom limits which users or conversation sources can access the device agent. Multiple values can be separated by commas or new lines. IM channels are loaded at startup, so restart Device Agent after saving IM changes.

See IM Access for platform-specific setup.

Permissions

The Permissions tab controls local tool permissions for device agents.

PermissionNotes
tool_editorAllows saving and deleting tool editor extensions.
write_fileAllows agents to write local files.
execute_commandAllows agents to run commands.
allowedPrefixesRestricts command execution to allowed prefixes such as pwd, ls, or rg.

The page edits the saved permissions.tools configuration. If ENABLE_TOOL_EDITOR_MUTATIONS, ENABLE_FILE_WRITE_TOOL, ENABLE_EXECUTE_COMMAND_TOOL, or ALLOWED_EXEC_COMMAND_PREFIXES is set in .env, startup writes that value into config.json the same way as other configuration sections.