# adafruit/circuitpython

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/adafruit-circuitpython).**

4,521 stars · 1,400 forks · C · NOASSERTION · fork

## Links

- GitHub: https://github.com/adafruit/circuitpython
- Homepage: https://circuitpython.org
- awesome-repositories: https://awesome-repositories.com/repository/adafruit-circuitpython.md

## Description

CircuitPython is a specialized derivative of the MicroPython runtime designed as an embedded Python interpreter for microcontrollers. It provides a high-level language environment that allows for direct hardware access through a dedicated hardware abstraction layer and a Python microcontroller runtime.

The project is distinguished by firmware that exposes the microcontroller as a native USB mass storage device. This allows users to edit code directly on the device as if it were a removable drive, eliminating the need for specialized flashing tools and enabling filesystem-triggered code reloading.

The system covers a broad range of capabilities including unified hardware API access for controlling electronic components across different boards, serial-based communication via REPL and WebUSB, and a port-based system for board-specific firmware compilation. It also includes developer tooling such as type stub generation for static analysis and a crash recovery mode to maintain device accessibility during troubleshooting.

## Tags

### Hardware & IoT

- [Mass Storage Deployment](https://awesome-repositories.com/f/hardware-iot/mass-storage-deployment.md) — Exposes the device internal filesystem as a native USB mass storage device for direct code editing without flashing tools.
- [Microcontroller Programming](https://awesome-repositories.com/f/hardware-iot/microcontroller-programming.md) — Enables controlling microcontroller pins and hardware using Python instead of low-level C or assembly firmware.
- [Hardware Abstraction Layers](https://awesome-repositories.com/f/hardware-iot/hardware-abstraction-layers.md) — Provides a unified interface layer to standardize hardware access across different microcontroller architectures and pin configurations.
- [Microcontroller Firmware Frameworks](https://awesome-repositories.com/f/hardware-iot/microcontroller-firmware-frameworks.md) — Provides a complete framework for building and configuring custom firmware for various microcontroller boards.
- [Removable Storage Emulation](https://awesome-repositories.com/f/hardware-iot/removable-storage-emulation.md) — Allows mounting the onboard filesystem as a removable drive for direct file transfers and code updates. ([source](https://github.com/adafruit/circuitpython/blob/main/AGENTS.md))
- [Unified Hardware Interfaces](https://awesome-repositories.com/f/hardware-iot/unified-hardware-interfaces.md) — Provides a consistent set of software interfaces to control diverse microcontroller boards and sensors.
- [Embedded Systems Debugging](https://awesome-repositories.com/f/hardware-iot/embedded-systems-debugging.md) — Supports monitoring real-time device logs and inspecting firmware state through serial consoles and debugging probes.
- [Hardware Prototyping Frameworks](https://awesome-repositories.com/f/hardware-iot/integration-performance/hardware-interfacing-integration/hardware-prototyping-frameworks.md) — Provides a high-level environment for rapidly iterating on hardware projects by editing code directly on the device.
- [Interactive REPL Interfaces](https://awesome-repositories.com/f/hardware-iot/interactive-repl-interfaces.md) — Provides a bidirectional communication channel over USB or WebUSB for real-time command execution and system logging.

### Development Tools & Productivity

- [Hardware-Specific Firmware Images](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-configuration-systems/build-configurations/firmware-build-variants/hardware-specific-firmware-images.md) — Builds executable firmware tailored for specific microcontroller boards using a port-based system and configurable flags. ([source](https://github.com/adafruit/circuitpython/blob/main/BUILDING.md))
- [MicroPython Runtimes](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/python-package-managers/micropython-managers/micropython-runtimes.md) — Provides a specialized Python runtime optimized for ease of use on small hardware devices.
- [USB Configuration Drives](https://awesome-repositories.com/f/development-tools-productivity/virtual-file-systems/virtual-drive-emulation/usb-configuration-drives.md) — Exposes the device as a native USB drive to allow direct file editing without specialized flashing tools. ([source](https://github.com/adafruit/circuitpython#readme))
- [Firmware Crash Recovery](https://awesome-repositories.com/f/development-tools-productivity/crash-recovery-systems/crash-recovery-simulation/firmware-crash-recovery.md) — Prevents user code from running after a hard crash to ensure the device remains accessible for troubleshooting. ([source](https://github.com/adafruit/circuitpython#readme))
- [Firmware Debugging](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/debugging-inspection-tools/debugging-and-inspection-tools/firmware-debugging.md) — Provides specialized tools for inspecting memory and execution flow on microcontroller hardware using debug probes. ([source](https://github.com/adafruit/circuitpython/blob/main/BUILDING.md))
- [Hot Code Reloading](https://awesome-repositories.com/f/development-tools-productivity/hot-code-reloading.md) — Implements a mechanism to automatically restart the main program when changes to the internal filesystem are detected. ([source](https://github.com/adafruit/circuitpython/blob/main/README.rst))
- [Firmware Build Configuration](https://awesome-repositories.com/f/development-tools-productivity/workflow-automation-tools/build-task-automation/build-automation/makefile-automation/firmware-build-configuration.md) — Manages firmware compilation through a nested system of configuration files tailored to specific boards and hardware ports.

### DevOps & Infrastructure

- [File-Change-Triggered Restarts](https://awesome-repositories.com/f/devops-infrastructure/restart-automation/file-change-triggered-restarts.md) — Automatically restarts the main program when changes to files on the internal storage are detected.
- [Boot Sequence Automation](https://awesome-repositories.com/f/devops-infrastructure/automation-orchestration/task-execution-frameworks/automation-frameworks/action-execution/script-sequences/boot-sequence-automation.md) — Automatically executes specific scripts during system boot, recovery states, or following filesystem changes. ([source](https://github.com/adafruit/circuitpython#readme))

### Programming Languages & Runtimes

- [Source-to-Bytecode Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/bytecode-compiled-languages/source-to-bytecode-compilers.md) — Transforms high-level Python source code into compact bytecode for efficient execution on constrained microcontroller hardware.
- [Embedded Python Interpreters](https://awesome-repositories.com/f/programming-languages-runtimes/embedded-python-interpreters.md) — Implements a compact software layer that executes Python code directly on microcontroller hardware.
- [Runtime Bytecode Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-bytecode-compilation.md) — Transforms source files into compact bytecode for efficient execution on target microcontroller runtimes. ([source](https://github.com/adafruit/circuitpython/tree/main/mpy-cross))
- [Microcontroller Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly/python-runtimes/microcontroller-runtimes.md) — Implements a Python runtime specifically optimized for resource-constrained microcontroller environments.
- [High-Level Hardware Programming](https://awesome-repositories.com/f/programming-languages-runtimes/high-level-hardware-programming.md) — Allows operating low-cost hardware using a simplified high-level language environment instead of low-level code. ([source](https://github.com/adafruit/circuitpython/blob/main/README.rst-stubs))

### Operating Systems & Systems Programming

- [File System Mounts](https://awesome-repositories.com/f/operating-systems-systems-programming/file-system-mounts.md) — Provides a dedicated storage module to control how various storage media are mounted and accessed. ([source](https://github.com/adafruit/circuitpython/blob/main/README.rst))

### Software Engineering & Architecture

- [Hierarchical Configuration Systems](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/hierarchical-configuration-systems.md) — Allows modifying board or port behavior using a hierarchical system of makefiles and compile-time options. ([source](https://github.com/adafruit/circuitpython/blob/main/BUILDING.md))

### System Administration & Monitoring

- [Embedded Log Capture](https://awesome-repositories.com/f/system-administration-monitoring/real-time-application-log-monitoring/embedded-log-capture.md) — Retrieves real-time execution logs and stack traces from embedded target devices via stable serial identifiers. ([source](https://github.com/adafruit/circuitpython/blob/main/AGENTS.md))

### Web Development

- [Serial Communication](https://awesome-repositories.com/f/web-development/browser-hardware-apis/serial-communication.md) — Supports establishing a serial console interface to send and receive data via WebUSB without specialized drivers. ([source](https://github.com/adafruit/circuitpython/blob/main/WEBUSB_README.md))

### Part of an Awesome List

- [Core Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/core-frameworks.md) — The primary source code repository for the firmware.
