Library / SDK
Moddable-OpenSource/moddable avatar
Moddable-OpenSource/moddable

Moddable SDK: JavaScript Development for Microcontrollers

Tools for developers to create truly open IoT products using standard JavaScript on low cost microcontrollers.

1,564 stars285 forksCLicense varies

At a glance

What is it?
Moddable SDK combines an XS JavaScript engine, build tools, device APIs, networking, graphics, and debugging for resource-constrained microcontrollers. It fits developers who want web-style JavaScript on embedded hardware, but device setup and memory constraints require careful evaluation.
Who is it for?
Adopt Moddable SDK when the target microcontroller, required device SDK, networking stack, and graphics needs match its supported environment and your team can work within strict memory limits. Do not choose it as a generic embedded platform without first checking device support, build instructions, API differences from browser JavaScript, and the licensing terms in the repository.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Moddable SDK Targets the Memory Boundary of Embedded Devices

Moddable SDK addresses a specific gap between familiar JavaScript development and the much tighter limits of microcontrollers. The README describes a typical supported device as having about 45 KB of free memory, 1 MB of Flash ROM, and an 80 MHz processor. That operating envelope differs substantially from a desktop, server, or mobile device, so transferring application patterns from Node.js or browser projects without adjustment is risky.

The intended users are embedded developers who want to write application logic and firmware-level integrations in JavaScript while retaining access to hardware protocols. The primary language is JavaScript, implemented by the XS engine. The README states that XS implements the 2026 JavaScript language standard with better than 99% conformance, while also warning that microcontroller constraints may limit how many language features can be combined in one project. That combination is important. Language compatibility does not mean that every browser API, allocation pattern, or application architecture will work unchanged on a device with roughly 45 KB of free memory.

The SDK is not limited to control logic. Its documented capabilities include sockets and secure protocols, BLE, bitmap graphics, responsive user interfaces, GPIO, analog, PWM, and I2C. It also includes drivers and example applications for common sensors. This makes it relevant to connected products that need application code, network communication, display output, and device control in one embedded development environment. It is less appropriate as a direct replacement for a conventional MCU framework when the application depends on a specific vendor SDK, unsupported peripheral, or hardware configuration that Moddable does not document.

XS, JavaScript Modules, and Build-Time Resource Decisions

The SDK architecture centers on XS, its JavaScript engine, with most of the system implemented in JavaScript and selected portions implemented in C where performance or direct native API access requires it. The README explicitly says that there is no C++. The repository layout places the engine and runtime in `xs/`, reusable modules in `modules/`, build infrastructure in `build/`, command-line tools in `tools/`, examples in `examples/`, and documentation in `documentation/`. That separation is visible evidence of a full SDK rather than a single JavaScript library.

Build time is part of the product, not merely a packaging step. The README says the SDK contains many tools and options for the build process and asks developers to learn them to get the best results. Example manifests are organized around different capability sets, including `examples/manifest_base.json`, `examples/manifest_net.json`, `examples/manifest_piu.json`, and others. The documentation also identifies a separate manifest guide and tools guide, indicating that application composition and included modules are explicit inputs to the build.

That model carries an engineering cost. Developers must decide which runtime capabilities an application needs and account for code size, memory use, and resource consumption during development. The SDK documentation distinguishes these constraints from ordinary JavaScript performance concerns. A feature that is valid JavaScript may still be unsuitable when the device has limited Flash, little free RAM, or a small display pipeline. The architecture favors deliberate selection of modules and APIs over assuming that every runtime feature can be loaded without consequence.

Networking, BLE, Graphics, and Hardware Access

Moddable's networking layer is documented as socket-based support for HTTP/HTTPS, WebSockets, MQTT, mDNS, DNS, SNTP, and telnet. BLE support covers both peripheral and central roles. These are concrete protocol building blocks for connected devices, but they also imply that network policy, certificates, connection handling, and resource budgets need to be treated as embedded design concerns. The README does not provide a universal deployment recipe for every protocol or peripheral, so the relevant documentation and device support should be checked before selecting it.

For displays, the SDK offers Commodetto, a bitmap 2D graphics library. Its Poco renderer uses a display list that can render one scanline at a time, which the README describes as saving memory by avoiding a full frame buffer. Piu builds an object-oriented UI layer on Commodetto for layouts and responsive interfaces. This is a meaningful architectural distinction from projects that assume a conventional large frame buffer. It can suit products with limited RAM, although interface design must account for the rendering model rather than treating the display as a desktop canvas.

Hardware access is documented through digital GPIO, analog, PWM, and I2C protocols. Driver examples appear under `examples/drivers/`, while the repository also includes examples for FFI, files, I/O, pins, networking, Piu, and base functionality. This gives new users concrete reference areas, but the README does not claim that every sensor or board is supported. Hardware adoption therefore depends on finding the exact device, peripheral, and driver documentation rather than assuming that protocol support implies a ready-made driver.

Simulator-First Development and Device-Specific Setup

The repository presents a simulator-based starting path for macOS, Linux, and Windows. The README says the simulators are useful for getting started and developing applications without immediately depending on physical hardware. The installation process itself is documented separately in `documentation/Moddable SDK - Getting Started.md`, which the README describes as covering installation of the SDK, development tools, command-line configuration, and SDK tool builds.

A first real use begins with installing the repository according to that guide. The README does not give a complete shell command sequence, package manager, configuration command, or build invocation, so this article cannot safely provide invented commands. After installation, the documented sequence is to build and run applications on a simulator. The simulator section of `documentation/tools/tools.md` contains the operational details.

Physical-device development adds another layer. For ESP8266-based devices, the README lists a specific order: install the Moddable SDK, then install the ESP8266 tools documented in `documentation/devices/esp8266.md`. It says other device setups differ and may require additional SDKs, drivers, and development tools. Those device tools and SDKs are not created or maintained by Moddable, according to the README. This ownership boundary is important for maintenance planning. A successful simulator build does not guarantee that a vendor toolchain, driver, flashing procedure, or board configuration is available.

xsbug and xsdb Address Two Embedded Debugging Styles

The SDK includes two source-level debugging paths. `xsbug` is a JavaScript source-level debugger for XS platforms. The README lists breakpoints, source browsing, call-stack inspection, and variable inspection. It also documents real-time instrumentation for memory usage and for profiling application and resource consumption. Those features are particularly relevant when an application fails because of a small memory or storage budget rather than an obvious syntax error.

`xsdb` is a command-line debugger modeled on gdb. The README positions it for embedded developers who already recognize that debugging style, automated debugging flows, and debugging by language models. The distinction is practical. A team accustomed to gdb-style command interaction has a separate tool available, while a JavaScript developer can use the debugger centered on XS source behavior.

The documentation does not claim that either debugger removes the need to reason about hardware limitations or vendor flashing tools. `xsbug` requires an XS platform and its instrumentation still reports resource use rather than changing the device's capacity. `xsdb` is described as a CLI tool, but the README does not provide a complete installation or invocation tutorial. Teams should inspect the linked `documentation/xs/xsbug.md` and `documentation/tools/tools.md#xsdb` documentation before building automation around the debugger.

Maintenance Signals and the Licensing Gap

The repository is not archived, and its last push was on 2026-10-13. The recent release list includes Moddable SDK 10.0.1 on 2026-10-13, 10.0.0 on 2026-10-09, and 9.5.0 on 2026-09-05. These dates indicate recent release activity, but the license status supplied for the repository is unknown. The repository includes a `licenses/` directory, yet the README does not identify the applicable license or explain its implications. No legal interpretation should be inferred from the directory name.

For adopters, this creates a concrete pre-adoption check: inspect the repository's license files and confirm which terms apply to the SDK, included modules, examples, and any device-specific components. The README also places copyright information for Moddable Tech, Inc. in the document, but copyright notice is not enough to establish the complete licensing grant. If an organization needs redistribution, proprietary linking, or compliance records, the relevant project files must be reviewed directly.

Upgrade planning is supported by versioned releases and the version reference in the README, which points to Moddable SDK 10.0.1. The README does not document a rollback procedure, compatibility matrix for every device, or upgrade migration policy. The available evidence supports checking release contents and device instructions when moving between versions, but not assuming that an upgrade is risk-free.

Editorial conclusion

Adopt Moddable SDK when the target microcontroller, required device SDK, networking stack, and graphics needs match its supported environment and your team can work within strict memory limits. Do not choose it as a generic embedded platform without first checking device support, build instructions, API differences from browser JavaScript, and the licensing terms in the repository. The first verification should be whether the selected hardware has complete setup instructions and whether the intended application fits its available memory and Flash budget.

Frequently asked questions

What is Moddable SDK used for?

It is a development environment for creating microcontroller applications with JavaScript. The SDK combines the XS engine, runtime APIs, build tools, networking, graphics, hardware protocols, and debugging support.

Can Moddable SDK run on ESP8266 devices?

Yes. The README specifically documents a process for ESP8266-based devices: install the Moddable SDK and then install the ESP8266 tools. The exact supported platforms and setup details are in `documentation/devices/esp8266.md`.

Does Moddable SDK support JavaScript like a desktop application?

It uses JavaScript and an engine that implements the 2026 JavaScript language standard with better than 99% conformance. The README warns that microcontroller limits may restrict feature combinations and that the APIs are designed for low memory use, so application code must account for code size, memory, and performance.

What graphics and UI tools are included?

The SDK includes Commodetto for bitmap 2D graphics and Piu for object-based user interfaces built on top of Commodetto. The README describes Poco as a scanline-oriented renderer that can avoid a full frame buffer.

What debuggers does Moddable SDK provide?

The SDK documents `xsbug`, a JavaScript source-level debugger with breakpoints, source inspection, call-stack inspection, variable inspection, memory instrumentation, and resource profiling. It also provides `xsdb`, a gdb-style command-line debugger for embedded development and automated debugging flows.

Official sources

  1. Issues
  2. Moddable-OpenSource/moddable on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/moddable-opensource-moddable.svg)](https://hysenlabs.com/projects/moddable-opensource-moddable)

Was this useful?