1: Core Platform & Board Contract
Standard hardware driver engine and companion reference code.pydevices
Unified pure-Python hardware abstraction layer and core device contract for MicroPython, CircuitPython, CPython, direct WebAssembly, Pyodide, and Android.
Visit sitedisplayif
High-performance C hardware bus engines (SPI, I2C, Intel 8080, RGB/DPI, MIPI DSI) and native usermod display drivers for MicroPython and CircuitPython.
Visit siteaudiodsp
CircuitPython's audio system (audiocore, synthio, audiomixer, effects, audiomp3) ported to MicroPython and CPython, extending CircuitPython along the way: dynamics, routing, convolution, and offline rendering. On PyPI as pydevices-audiodsp; the instrument and effect libraries built on it ship from audiocomponents.
Visit siteaudioif
The part of the audio stack that knows what a thread is, where the clock comes from and where the sound goes: a pinned task and the I2S peripheral on ESP32, a native thread on unix and Windows, and a CircuitPython-shaped audiobusio.I2SOut over all of it. With it in a firmware, a graph keeps an exact clock while a screen redraws and a USB stack runs, and audiodev plays through it without being asked. The portable half of the pump, and every DSP node, is audiodsp.
Visit siteaudiocomponents
The instrument and effect libraries for audiodsp: audioinstruments (55 modelled classics, from the TR-808 to the DX7) and audioeffects (45 effect classes and racks), pure Python on MicroPython and CPython. Ships as pydevices-audioinstruments and pydevices-audioeffects, each a standalone distribution and a MIP package.
Visit siteusbif
A board a computer sees as a sound card, a MIDI instrument, a keyboard, a drive or a webcam — and, on the same board, a USB host that a keyboard, thumb drive, MIDI controller or camera plugs into. One of the PyDevices *if modules, with displayif, audioif and cameraif: a native C module with a thin, stable Python surface that runs unchanged on a workstation.
Visit sitecameraif
Point the board at something and read the frame. The sensor is found by probing rather than named in code, so a different camera is a build-time option away, not a rewrite. Hardware JPEG, zero-copy frames and hardware scaling straight into a display's scanout buffer, with every rate in its README measured on the board it names.
Visit sitepydevices-examples
Comprehensive example code, direct MicroPython WebAssembly demos, board configurations, and multi-interpreter showcase benchmarks.
Visit site2: Python Framebuffers & GUI Toolkits
Zero external native dependencies — runs on any Python 3 host.pygraphics
Native C and pure-Python 2D graphics library with drawing primitives, bitmap font rendering, paletted surface blitting, and area-dirtying pipelines.
Visit sitepdwidgets
Lightweight object-oriented UI widget framework including buttons, sliders, progress bars, labels, and event routing for PyDevices screens.
Visit sitepalettes
Color management library with RGB565 / RGB888 output, an HSV color wheel, RGB color cubes, Material Design swatches, and Win16 color names.
Visit site3: LVGL Native Extensions & Binding Generator
Single-source LVGL C header binding generator and native interpreter modules.lvgl-bindings
Automated binding generator parsing LVGL C headers into native CPython extensions, MicroPython usermods, and CircuitPython modules.
Visit sitelvgl-micropython
Native MicroPython C module integrating LVGL v9 graphics engine with displayif bus drivers across ESP32, RP2040, and i.MX RT targets.
Visit sitelvgl-python
Pre-built CPython extension wheels and Pyodide WASM packages bringing LVGL v9 to Linux, Windows, Android, and web browsers.
Visit sitelvgl-circuitpython
CircuitPython native C module providing LVGL v9 bindings and displayif integration for Adafruit Feather and SAMD51 / RP2040 boards.
Visit site4: App Hosts & Mobile
Deploy PyDevices apps directly to desktop browsers or mobile APKs.pyscript-template
Progressive Web App starter template repository for deploying offline-capable client-side PyDevices applications on GitHub Pages.
Visit siteandroid-template
Pre-configured python-for-android build recipes and Buildozer project template for packaging PyDevices applications into native Android APKs.
Visit site5: Developer Tools & Infrastructure
MIP package indexing, multi-usermod builds, and serial/FTP IDE extensions.mpftp
Connect MicroPython and CircuitPython boards from VS Code, Cursor, or the CLI, over USB or Wi-Fi: dual-pane file transfer, in-editor REPL, firmware builds and flashing, mip/circup, plus RPC, MCP, and an optional browser PWA.
Visit sitemip
Single source of truth (SoT) for precompiled MicroPython .mpy bytecode packages and pure-Python library distributions across the PyDevices ecosystem.
Visit sitemicropython-pydevices
The PyDevices patch queue for MicroPython, kept like a distribution keeps one: an ordered, provenance-tracked patch series over the pinned upstream release (v1.29.0), with presets, boards and variants that build PyDevices modules into firmware with upstream's own make.
Visit siteworkbench
A ViperIDE fork with a built-in WebAssembly MicroPython simulator: edit, run, and debug PyDevices code against a simulated board entirely in the browser, no hardware required.
Visit sitempvst
Programmable VST3 instruments and effects: every audiocomponents instrument and effect as a named plug-in, each instance running its Python in a sidecar process. Installers for Windows and Linux; nothing has to be built.
Visit siteArchitecture & Layers
How PyDevices abstractions stack from the application down to the hardware — the amber-outlined Core Stack below is thepydevices package itself, the product this org ships; everything above it is optional tooling and everything below it is platform glue.
(Traffic Controller & Host Loop)"] end %% Device Abstraction Layer subgraph DeviceLayer ["Core Device Contract"] direction LR DISP["displaydev
(fbdisplay, psdisplay, wasmdisplay, etc.)"] AUDIO["audiodev
(Tone & PCM)"] TIMER["multimer
(Async & Sync Timers)"] end end %% Hardware / Interpreter Layer subgraph HardwareLayer ["Interpreters & Platforms"] direction LR MP["MicroPython (MCU)"] CP["CircuitPython (MCU)"] UNIX["Unix Desktop
(CPython, MicroPython, CircuitPython)"] WIN["Windows Desktop
(CPython, MicroPython)"] WASM["WebAssembly (Browser)"] AND["Android"] end %% Lowest Level Bindings Layer subgraph BindingsLayer ["Lowest Level (Native/OS Bindings)"] direction LR DIF["displayif
(C-usermod Bus Engine)"] DIO["displayio
(CircuitPython Built-in)"] SDL["sdl2
(via usdl2.py or displayif/usdl2)"] W32["win32
(via uwin32.py)"] DOM["DOM / HTML5 Canvas"] end %% Connections LVGL --> APPDEV PDW --> PYG PYG_APP --> PYG PYG --> APPDEV DIR -.-> APPDEV DIR --> DISP APPDEV --> DISP APPDEV --> AUDIO APPDEV --> TIMER %% Connect Subgraphs cleanly to avoid spaghetti lines DeviceLayer --> HardwareLayer %% Map Platforms down to Native Bindings MP --> DIF CP --> DIO UNIX --> SDL WIN --> W32 WASM --> DOM AND --> SDL class APPDEV,DISP,AUDIO,TIMER core; class LVGL,PDW,PYG_APP,DIR,PYG layer; class MP,CP,UNIX,WIN,WASM,AND hardware; class DIF,DIO,SDL,W32,DOM binding;