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.
basic_demo settings
Section titled “basic_demo settings”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_tokensfield 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()(currentlyopenai). - Mapping of preset names to concrete settings is in basic_demo_settings.c:24.
- Empty string falls back to
llm_backend_type: backend type [optional]- Must match the real wire protocol or be empty: use
anthropicfor official Anthropic or Messages-compatible gateways; useopenai_compatiblefor OpenAI or “OpenAI-compatible” gateways. - Non-empty overrides the profile’s default backend; empty keeps the profile default.
- Allowed values:
openai_compatible,anthropic,custom1.
- Must match the real wire protocol or be empty: use
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.
- Custom gateway root; empty uses the profile’s default
llm_model: model name- Must match the provider’s model id.
llm_api_key: LLM API keyllm_auth_type: auth header style [optional]- Extra hint such as
bearer,api-key,none, … - With
openai_compatible, emptyllm_auth_typeimpliesbearerandAuthorization: Bearer <API Key>. - With
anthropic,llm_auth_typeis ignored; the key goes inx-api-key: <API Key>.
- Extra hint such as
llm_timeout_ms: request timeout- Timeout in milliseconds (stored as string).
IM and platforms
Section titled “IM and platforms”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 credentialsfeishu_app_id/feishu_app_secret: Feishu app credentialstg_bot_token: Telegram bot tokenwechat_token/wechat_base_url/wechat_cdn_base_url/wechat_account_id: WeChat ClawBot fields, usually filled by the QR login flow.
Web search
Section titled “Web search”Search API keys are optional. If both are empty, ESP-Claw cannot fetch online results via search.
search_brave_key: Brave Search API key—see Brave auth docs.search_tavily_key: Tavily key—see Tavily quickstart.
Compile-time Kconfig options
Section titled “Compile-time Kconfig options”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 fullMEMORY.mdtext. - Lightweight: skips structured extraction and injects
MEMORY.mdtext directly—useful when RAM or context window is tight.
- Structured (full structured memory, default): enables structured memory extraction; the LLM-visible groups additionally include
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.
Where to edit
Section titled “Where to edit”- 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.
Footnotes
Section titled “Footnotes”-
Custom backend for advanced use; read the source for details. ↩