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

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

SoftwareUsed ForSource
Arduino core for ESP32Arduino-compatible ESP32 runtime, board APIs, WiFi wrappers, filesystem wrappers, and build environment.espressif/arduino-esp32
ESP-IDFUnderlying ESP32 platform, FreeRTOS, OTA primitives, partitions, heap APIs, networking, and system services.espressif/esp-idf
Wrench embedded interpreterCore 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
FastLEDLED strip color management and NeoPixel-style output foundation.FastLED/FastLED
MQTT library for ArduinoMQTT client transport used for online command, response, and event paths.256dpi/arduino-mqtt
mbedTLSAES, HMAC, SHA-256, TLS support, and cryptographic primitives used by secure transport and OTA verification.Mbed-TLS/mbedtls
LittleFSOn-board filesystem used for configuration and script storage through the ESP32 Arduino integration.littlefs-project/littlefs
Preferences / NVSPersistent settings and SafeBoot OTA request state through ESP32 non-volatile storage.ESP-IDF NVS
detoolsDelta patch format and in-place OTA patch application.eerimoq/detools
heatshrinkCompression component included with the embedded detools patch path.atomicobject/heatshrink
arduinoWebSocketsWebSocket transport code that may still exist in firmware but is hidden for the current UI direction unless revived.Links2004/arduinoWebSockets
libpeerWebRTC experiment code that may still exist in firmware but is not the active browser transport.sepfy/libpeer
Home AssistantIntegration target and entity model for exposing XOBIT prototypes to a living environment.home-assistant.io
ESPHome native APIProtocol model used by the sketch-owned Home Assistant bridge, including ESPHome discovery service naming and native API entity behavior.ESPHome native API / esphome/esphome
MessagePackCompact binary frame format used by XOBIT protocol transports such as MQTT and serial MessagePack mode.msgpack.org
Protocol BuffersSerialization 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 ServiceUsed ForSource
Ace EditorIn-browser code editor, JavaScript/Wrench-like editing mode, code formatting extension, and editor themes loaded from cdnjs.ace.c9.io / ajaxorg/ace
MQTT.jsBrowser MQTT-over-WebSocket client used for online command, response, event, and share-link transport paths.mqttjs/MQTT.js
p5.jsCanvas drawing layer used by the Circuit workspace for board diagrams, wiring, parts, and exportable circuit views.p5js.org / processing/p5.js
esptool-jsBrowser 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 APIBrowser-to-board USB install, recovery, direct serial development, and post-install reconnect behavior.MDN Web Serial API
Portal USB Serial helperLocal 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 helperLocal helper script used by the browser editor for share/link QR code rendering.../../P1/portal/qrCodeGen.js
cdnjsCDN used by the current editor page for Ace Editor assets and p5.js.cdnjs.com
unpkgCDN used by the current editor page for MQTT.js.unpkg.com
esm.shES module CDN used by the browser flasher to load esptool-js.esm.sh
Material SymbolsIcon font used by the guide and editor UI.Google Fonts Icons
OpenAI APIOptional 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.