Skip to main content

Deployable exoclaw image for MicroPython boards (ESP32-S3 and friends)

Project description

exoclaw-firmware

Deployable exoclaw image for MicroPython boards. Bundles core exoclaw + the MP-compatible plugin set (conversation, OpenAI provider) + board-specific boot wrappers, so flashing one tree gets you a chip that can hold a conversation with an LLM.

This is the equivalent of exoclaw-nanobot for the chip target — where nanobot is "what you run on a server", exoclaw-firmware is "what you flash to a board".

Supported boards

Board RAM Status Notes
ESP32-S3 (8 MB PSRAM) 8 MB Supported Reference target; SD card recommended.
ESP32 (4 MB) 4 MB Should work Tighter; turn off any optional plugins.
Raspberry Pi Pico W 264 KB Unlikely RAM budget too small for an LLM agent loop.

Adding a new board: copy boards/esp32_s3/ to boards/<your_board>/, adapt the boot.py for that platform's WiFi / SD / clock APIs.

Quickstart (ESP32-S3)

  1. Wire up an SD card (optional but recommended for session storage). Default pins in boards/esp32_s3/boot.py: sclk=12, mosi=11, miso=13, cs=10.
  2. Flash MicroPython 1.27+ to the board (out of scope for this package — see the MicroPython downloads page).
  3. Copy boards/esp32_s3/secrets.py.example to boards/esp32_s3/secrets.py and fill in WIFI_SSID, WIFI_PASSWORD, OPENAI_API_KEY.
  4. Stage and flash:
    cd packages/exoclaw-firmware
    mise run flash
    
  5. Reset the board (or mise run repl to watch output). On first boot you should see boot: SD mounted, boot: WiFi up, boot: clock synced, then a you> prompt — type a message and press enter to chat with the agent over USB serial.

What's in the flash image

The mise run stage task assembles the deployable tree under .stage/:

.stage/
├── boot.py                    # WiFi + SD + NTP setup
├── main.py                    # runs run_serial_chat() (USB-CDC chat loop)
├── secrets.py                 # gitignored; your credentials
├── exoclaw/                   # core (with _cpython.py stripped)
├── exoclaw_conversation/      # MP-compatible conversation plugin
├── exoclaw_provider_openai/   # MP-compatible OpenAI provider
└── exoclaw_firmware/          # this package's app.py

Files matching _cpython.py are stripped at stage time — they hold CPython-only implementations that the MP runtime never imports. Same trick the core MP coverage runner uses.

Channels

The default channel after flash is USB-CDC serial. Plug the board into a host, open mpremote repl (or screen /dev/cu.usbmodem* 115200), hit reset, and you'll see:

boot: WiFi up: ('192.168.…', …)
boot: clock synced via NTP
main: ready — type a message and press enter (Ctrl-C to exit)
you>

Type, press enter, get a response. No chat-platform tokens, no webhook URLs — just stdin/stdout over USB.

For network-side channels, swap the run_serial_chat call in main.py for your own loop on top of build_agent (which returns a (provider, conversation) pair). Common patterns:

  • HTTP long-poll (Telegram-style) — easiest cloud channel; one outbound request per poll cycle.
  • MQTT subscriber (umqtt.simple) — IoT-native, integrates with Home Assistant / AWS IoT / HiveMQ.
  • HTTP webhook server (asyncio.start_server) — local-network only unless you tunnel.
  • WebSocket — single long-lived connection, lower latency than long-poll, needs a WS client.
  • BLE GATT — phone companion app pattern, range ~10m.

Pick what fits the deployment. The serial loop stays useful as a debug channel even after you wire a cloud channel.

mise tasks

Task What it does
mise run stage Assemble .stage/ from core + plugins + board files.
mise run flash Copy .stage/ onto the attached board via mpremote.
mise run repl Drop into a REPL on the board.
mise run run Exec main.py on the board without flashing.
mise run wipe Erase the board's filesystem (destructive).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

exoclaw_firmware-0.7.0.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

exoclaw_firmware-0.7.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file exoclaw_firmware-0.7.0.tar.gz.

File metadata

  • Download URL: exoclaw_firmware-0.7.0.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for exoclaw_firmware-0.7.0.tar.gz
Algorithm Hash digest
SHA256 e8a4f8f0c61f7cf6ff9190a11144a81f0ed246af8cbc1304df130300e99d9dea
MD5 46ef310122ecd4938eaa5eee6c8ad972
BLAKE2b-256 5a6345b01190b6136aab0772931832aef34fdd79dd849bec1023807a2691871f

See more details on using hashes here.

File details

Details for the file exoclaw_firmware-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: exoclaw_firmware-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for exoclaw_firmware-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 92078f765c0a4db8d8c35dd311952e6445b53c0a63e7980010194b0db5bf314b
MD5 74885444020d2fd33eeae3f8bbf697cf
BLAKE2b-256 0bccd7e416d688cc146d9f1bbd2e596f454bc1a089d5d9ad64a129c92ada45c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page