PyDevices Ecosystem

August 25, 2026 ยท View on GitHub

Welcome to PyDevices โ€” a unified pure-Python hardware abstraction engine, 2D graphics toolkit, native LVGL C binding generator, and cross-platform app host across MicroPython, CircuitPython, CPython, PyScript, and Android.


๐Ÿ›๏ธ Ecosystem Structure


โšก Repository Overview

Tier 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.
  • displayif โ€” High-performance C hardware bus engines (SPI, I2C, Intel 8080, RGB/DPI, MIPI DSI) and native usermod display drivers for MicroPython and CircuitPython.
  • audioif โ€” An audio synthesis stack with CircuitPython import names and play/stop/pause/resume semantics. MicroPython firmware includes audiomp3; pydevices-audioif 0.0.1 provides audiocore, synthio, the mixer, and effects for CPython, Android, and Pyodide.
  • pydevices-examples โ€” Comprehensive example code, direct MicroPython WebAssembly demos, board configurations, and multi-interpreter showcase benchmarks.

Tier 2: Python Framebuffers & GUI Toolkits

Zero external native dependencies โ€” runs on any Python 3 host.

  • pygraphics โ€” Pure-Python 2D graphics library with drawing primitives, anti-aliased font rendering, paletted surface blitting, and area-dirtying pipelines.
  • pdwidgets โ€” Lightweight object-oriented UI widget framework including buttons, sliders, progress bars, labels, and event routing for PyDevices screens.
  • palettes โ€” Color management library with RGB565 / RGB888 conversion, HSL / HSV color spaces, palette swatches, and smooth gradient generators.

Tier 3: 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.
  • lvgl-micropython โ€” Native MicroPython C module integrating LVGL v9 graphics engine with displayif bus drivers across ESP32, RP2040, and i.MX RT targets.
  • lvgl-python โ€” Pre-built CPython extension wheels and Pyodide WASM packages bringing LVGL v9 to desktop Linux, macOS, Windows, and web browsers.
  • lvgl-circuitpython โ€” CircuitPython native C module providing LVGL v9 bindings and displayif integration for Adafruit Feather and SAMD51 / RP2040 boards.

Tier 4: 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.
  • android-template โ€” Pre-configured python-for-android build recipes and Buildozer project template for packaging PyDevices applications into native Android APKs.

Tier 5: 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: dual-pane file transfer, in-editor REPL, firmware flash, mip/circup, plus RPC, MCP, and an optional browser PWA.
  • mip โ€” Single source of truth (SoT) for precompiled MicroPython .mpy bytecode packages and pure-Python library distributions across the PyDevices ecosystem.
  • cmods โ€” Out-of-tree C build workspace for compiling MicroPython and CircuitPython firmware binaries with displayif drivers and LVGL bindings.

Deliberately absent from this map:

  • .github (dotgithub) โ€” No landing page by design. It holds org-wide data, scripts, and community health files, and is documented as markdown only.
  • android-runner โ€” Exists solely to enable pydevices/bin/android.py. The APK is documented in pydevices; the runner publishes no site.