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.3.0.tar.gz (13.8 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.3.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: exoclaw_firmware-0.3.0.tar.gz
  • Upload date:
  • Size: 13.8 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.3.0.tar.gz
Algorithm Hash digest
SHA256 8de478267b4a6b0ca30a0383e5c1248d4f0447b30643bad521b1d3d80b58f078
MD5 44da3bbdea041fbf8ee3226383aed380
BLAKE2b-256 add441f1f69543efe9ec51cb52bcfc327f055a97e5da90a3cdce6de3825a504c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: exoclaw_firmware-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.0 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f9b66a9876efb18b57875309ed52faca49ac3d75cc9d26895bc5bbe743a95e1
MD5 64d06583bb371dbad9aeec1627a7f8e2
BLAKE2b-256 153072622b2563b0934f1603afeb7582ef9f01a7fb89678f39e7f569b1b69de1

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