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.4.0.tar.gz (14.5 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.4.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: exoclaw_firmware-0.4.0.tar.gz
  • Upload date:
  • Size: 14.5 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.4.0.tar.gz
Algorithm Hash digest
SHA256 0b03c904aeaf69f16587209c0aa45940b8ca8fa01e1cb3213fd9d8710620267c
MD5 2efa76468fc4165be7cab4a141bd69f3
BLAKE2b-256 3c84f4a4a346472470be399176c3c74dd2b99f27bcc089aa364eb2a4994f7cc8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: exoclaw_firmware-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 115de8c7a66f7afeba14576f43f72eb6d107473b99b2a35f859b1f42e99c55a1
MD5 ef11cd49a9d3d8975ae279f163b7809a
BLAKE2b-256 67084d2fc4b7f7593cb52dcb70f2049058713602e7865472991af4e282d171cd

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