Skip to content

Configuration

ESP-Claw basic_demo stores boot defaults in menuconfig (sdkconfig) and runtime overrides in NVS.

basic_demo uses the NVS namespace basic_demo. On boot, menuconfig defaults load first, then keys present in NVS override them. Field list and read/write logic live in application/basic_demo/main/basic_demo_settings.c.

Unless marked optional, fields are required.

  • wifi_ssid / wifi_password: Wi‑Fi SSID and password
    • Except ESP32-C5, only 2.4 GHz Wi‑Fi is supported.
    • Empty password means open network.
  • time_timezone: time zone
    • Must be a POSIX TZ string; see this table.
    • Example for Beijing/Hong Kong/Singapore: CST-8.

The firmware LLM runtime (claw_llm_runtime.c inside claw_core) builds requests from profile (preset) + backend (protocol):

  • profile picks default gateway root, API path shape, max_tokens field names, etc.;
  • backend chooses OpenAI Chat Completions–compatible vs Anthropic Messages request/response parsing.

Fields:

  • llm_profile: vendor/scenario preset
    • Empty string falls back to claw_llm_profile_default() (currently openai).
    • Mapping of preset names to concrete settings is in basic_demo_settings.c:24.
  • llm_backend_type: backend type [optional]
    • Must match the real wire protocol or be empty: use anthropic for official Anthropic or Messages-compatible gateways; use openai_compatible for OpenAI or “OpenAI-compatible” gateways.
    • Non-empty overrides the profile’s default backend; empty keeps the profile default.
    • Allowed values: openai_compatible, anthropic, custom1.
  • llm_base_url: API base URL [optional]
    • Custom gateway root; empty uses the profile’s default base_url.
    • Runtime endpoint is base_url + api_path.
  • llm_model: model name
    • Must match the provider’s model id.
  • llm_api_key: LLM API key
  • llm_auth_type: auth header style [optional]
    • Extra hint such as bearer, api-key, none, …
    • With openai_compatible, empty llm_auth_type implies bearer and Authorization: Bearer <API Key>.
    • With anthropic, llm_auth_type is ignored; the key goes in x-api-key: <API Key>.
  • llm_timeout_ms: request timeout
    • Timeout in milliseconds (stored as string).

ESP-Claw can connect QQ, Feishu, Telegram, and WeChat ClawBot, with extension hooks. If credentials for a channel are empty, that IM cannot work end-to-end.

  • qq_app_id / qq_app_secret: QQ Open Platform bot credentials
  • feishu_app_id / feishu_app_secret: Feishu app credentials
  • tg_bot_token: Telegram bot token
  • wechat_token / wechat_base_url / wechat_cdn_base_url / wechat_account_id: WeChat ClawBot fields, usually filled by the QR login flow.

Search API keys are optional. If both are empty, ESP-Claw cannot fetch online results via search.

Besides the NVS settings above, some behavior is controlled at build time via Kconfig (menuconfig) with no runtime toggle—change requires rebuilding and reflashing:

  • BASIC_DEMO_MEMORY_MODE: long-term memory mode.
    • Structured (full structured memory, default): enables structured memory extraction; the LLM-visible groups additionally include claw_memory; the summary-tag catalog is injected instead of the full MEMORY.md text.
    • Lightweight: skips structured extraction and injects MEMORY.md text directly—useful when RAM or context window is tight.
  • BASIC_DEMO_ENABLE_EMOTE: whether to start the LCD emote/status UI (app_expression_emote) at boot. Only meaningful on boards with an LCD; disabling saves a little heap.

Use idf.py menuconfig(Top)Basic Demo Config to view or change these options.

  • Web: see Web configuration.
  • menuconfig: good for factory Wi‑Fi/keys before mass flash; still overridden by NVS.
  • Web flasher: values entered in the wizard are saved to NVS like Web saves.

After changes, rebooting the device is recommended.

  1. Custom backend for advanced use; read the source for details.