About
Credits and software foundations
XOBIT is an ESP32 creative coding environment by Mads Hobye. It combines browser tooling, firmware scripting, online transport, circuit notes, and AI-assisted project context.
Independent by design
XOBIT is built so the stack stays independent: a static HTML page, firmware on the board, and project data kept close to the person making the work. It should not rely on sudden subscription changes, locked-in add-on models, or a hosted platform that decides what is possible.
Therefore, USB connection and firmware install use Web Serial, which works in Chrome-based browsers such as Chrome and Edge.
Two optional parts can use cloud services: online control needs an MQTT broker, and chat needs a ChatGPT API key. Fresh boards do not allow MQTT control until a named online user or an explicit guest/anonymous mode is configured. Other LLM providers may be added later.
Therefore, there are no cloud backups of your sketches. The running code lives on the board, while projects, revisions, chat, and specifications are stored in your browser local storage. Export projects and make regular backups when the work matters.
The philosophy is freedom to inspect, modify, self-host, extend, and implement projects on your own terms. You should be able to understand the stack, replace parts of it, and keep making even when a service changes direction.
Project Principles
- Local-first projects. Sketches, revisions, chat, and specifications stay in browser storage unless exported or shared.
- Physical computing as live material. Code, circuit notes, UI controls, and logs stay close to the object being made.
Community and bug reports
Join the XOBIT Signal group to ask questions, share projects, and follow larger announcements. For heavier bug reports, screenshots, logs, or broken setup notes, write directly to xobit@hobye.dk.
XOBIT is still in alpha, so the firmware and browser tools will keep evolving before the project settles into a careful legacy-support format. Watch the Change Log for smaller development notes and update firmware when larger changes require it.
Firmware Software Credits
| Software | Used For | Source |
|---|---|---|
| Arduino core for ESP32 | Arduino-compatible ESP32 runtime, board APIs, WiFi wrappers, filesystem wrappers, and build environment. | espressif/arduino-esp32 |
| ESP-IDF | Underlying ESP32 platform, FreeRTOS, OTA primitives, partitions, heap APIs, networking, and system services. | espressif/esp-idf |
| Wrench embedded interpreter | Core scripting language used by XOBIT sketches. XOBIT bundles Wrench as wrench.cpp and wrench.h in the firmware and exposes firmware services as the XOBIT script API. | Wrench reference and source |
| FastLED | LED strip color management and NeoPixel-style output foundation. | FastLED/FastLED |
| MQTT library for Arduino | MQTT client transport used for online command, response, and event paths. | 256dpi/arduino-mqtt |
| mbedTLS | AES, HMAC, SHA-256, TLS support, and cryptographic primitives used by secure transport and OTA verification. | Mbed-TLS/mbedtls |
| LittleFS | On-board filesystem used for configuration and script storage through the ESP32 Arduino integration. | littlefs-project/littlefs |
| Preferences / NVS | Persistent settings and SafeBoot OTA request state through ESP32 non-volatile storage. | ESP-IDF NVS |
| detools | Delta patch format and in-place OTA patch application. | eerimoq/detools |
| heatshrink | Compression component included with the embedded detools patch path. | atomicobject/heatshrink |
| arduinoWebSockets | WebSocket transport code that may still exist in firmware but is hidden for the current UI direction unless revived. | Links2004/arduinoWebSockets |
| libpeer | WebRTC experiment code that may still exist in firmware but is not the active browser transport. | sepfy/libpeer |
| Home Assistant | Integration target and entity model for exposing XOBIT prototypes to a living environment. | home-assistant.io |
| ESPHome native API | Protocol model used by the sketch-owned Home Assistant bridge, including ESPHome discovery service naming and native API entity behavior. | ESPHome native API / esphome/esphome |
| MessagePack | Compact binary frame format used by XOBIT protocol transports such as MQTT and serial MessagePack mode. | msgpack.org |
| Protocol Buffers | Serialization format behind the ESPHome native API messages used as the protocol basis for the Home Assistant bridge. | protobuf.dev |
Browser And Documentation Credits
| Software or Service | Used For | Source |
|---|---|---|
| Ace Editor | In-browser code editor, JavaScript/Wrench-like editing mode, code formatting extension, and editor themes loaded from cdnjs. | ace.c9.io / ajaxorg/ace |
| MQTT.js | Browser MQTT-over-WebSocket client used for online command, response, event, and share-link transport paths. | mqttjs/MQTT.js |
| p5.js | Canvas drawing layer used by the Circuit workspace for board diagrams, wiring, parts, and exportable circuit views. | p5js.org / processing/p5.js |
| esptool-js | Browser firmware installer and erase/install flow. XOBIT loads esptool-js@0.5.7 and uses it with Web Serial to flash ESP32 firmware manifests. | espressif/esptool-js |
| Web Serial API | Browser-to-board USB install, recovery, direct serial development, and post-install reconnect behavior. | MDN Web Serial API |
| Portal USB Serial helper | Local helper script used by the editor's USB transport wrapper for serial communication with the board after firmware is installed. | ../../P1/portal/usbSerial.js |
| QR code helper | Local helper script used by the browser editor for share/link QR code rendering. | ../../P1/portal/qrCodeGen.js |
| cdnjs | CDN used by the current editor page for Ace Editor assets and p5.js. | cdnjs.com |
| unpkg | CDN used by the current editor page for MQTT.js. | unpkg.com |
| esm.sh | ES module CDN used by the browser flasher to load esptool-js. | esm.sh |
| Material Symbols | Icon font used by the guide and editor UI. | Google Fonts Icons |
| OpenAI API | Optional chat-assisted sketch and specification workflow when an API key is configured. | OpenAI platform docs |
Source Notes
This credits page is based on the current XOBIT firmware includes, editor HTML, browser scripts, and local guide context. Some libraries are part of the ESP32 Arduino/ESP-IDF distribution rather than copied directly into this repository. ESPHome, Protocol Buffers, and MessagePack are credited because XOBIT implements compatible protocol ideas or wire formats around them. WebRTC and WebSocket components are credited because code paths exist, but MQTT is the active online transport. The browser installer is custom XOBIT code around Web Serial and esptool-js, rather than a separate ESP Web Tools install button.