{"id":80452,"url":"https://github.com/tinygo-org/awesome-tinygo","name":"awesome-tinygo","description":"A curated list of awesome TinyGo projects and libraries. Inspired by awesome-go.","projects_count":86,"last_synced_at":"2026-06-24T23:00:23.912Z","repository":{"id":53788945,"uuid":"347229687","full_name":"tinygo-org/awesome-tinygo","owner":"tinygo-org","description":"A curated list of awesome TinyGo projects and libraries. Inspired by awesome-go.","archived":false,"fork":false,"pushed_at":"2025-08-14T08:18:22.000Z","size":33,"stargazers_count":153,"open_issues_count":1,"forks_count":14,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-06-08T03:03:02.212Z","etag":null,"topics":["awesome","awesome-list","go","golang","hardware","tinygo"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tinygo-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-03-13T00:01:49.000Z","updated_at":"2026-05-22T03:25:52.000Z","dependencies_parsed_at":"2023-12-13T23:24:25.499Z","dependency_job_id":"16cac0fd-43a3-4754-9b4d-20b7eb8fb8b3","html_url":"https://github.com/tinygo-org/awesome-tinygo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tinygo-org/awesome-tinygo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinygo-org%2Fawesome-tinygo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinygo-org%2Fawesome-tinygo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinygo-org%2Fawesome-tinygo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinygo-org%2Fawesome-tinygo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinygo-org","download_url":"https://codeload.github.com/tinygo-org/awesome-tinygo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinygo-org%2Fawesome-tinygo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34752465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-11-30T19:04:19.663Z","updated_at":"2026-06-24T23:00:23.912Z","primary_language":"Go","list_of_lists":false,"displayable":true,"categories":["Encoders","Embedded Systems","Wireless Communication","Display Hardware","Gaming","Code Editing","WebAssembly","Continuous Integration","Websites"],"sub_categories":["Instrumentation and control with sensors and actuators","Protocol implementations","WASI and WASM Unknown","General use","DOM Manipulation","WebSockets","TinyGo Community","Tutorials"],"readme":"# awesome-tinygo\nA curated list of awesome TinyGo projects. Inspired by [awesome-go](https://github.com/avelino/awesome-go).\n\n**Contributing**:\n\n* **Issues**. Please add which category you believe fits it best along with the following markdown:\n    ```markdown\n    * [\u003cproject name\u003e](\u003cproject url\u003e) - \u003cproject description\u003e\n    ```\n\n* **Pull requests** There are no guidelines or requirements one has to meet to be added though it would be desirable the project be original.\n\n* [Awesome TinyGo](#awesome-tinygo)\n    - [Code Editing](#code-editing)\n    - [Continuous Integration](#continuous-integration)\n    - [Display Hardware](#display-hardware)\n    - [Embedded Systems](#embedded-systems)\n        - [General use](#general-use)\n        - [Protocol implementations](#protocol-implementations)\n        - [Instrumentation and control with sensors and actuators](#instrumentation-and-control-with-sensors-and-actuators)\n    - [Encoders](#encoders)\n    - [Gaming](#gaming)\n    - [WebAssembly](#webassembly)\n        - [WebSockets](#websockets)\n        - [DOM Manipulation](#dom-manipulation)\n        - [WASI and WASM Unknown](#wasi-and-wasm-unknown)\n    - [Wireless Communication](#wireless-communication)\n\n* [Awesome TinyGo Creations](#awesome-tinygo-creations)\n\n* [Awesome Libraries](#awesome-libraries)\n\n* [Resources](#resources)\n    - [Websites](#websites)\n        - [TinyGo Community](#tinygo-community)\n        - [Tutorials](#tutorials)\n\n\n# Awesome TinyGo\n\n## Code Editing\n* [VSCode](https://github.com/tinygo-org/vscode-tinygo) - TinyGo support for Visual Studio Code.\n* [Goland](https://plugins.jetbrains.com/plugin/16915-tinygo) - TinyGo support for Goland.\n* [Vim](https://github.com/sago35/tinygo.vim) - TinyGo support for Vim/NeoVim.\n* [bash/zsh/clink](https://github.com/sago35/tinygo-autocmpl) - Adds bash/zsh/clink auto-completion to TinyGo.\n* [Display Simulator](https://github.com/sago35/tinydisplay) - `tinydisplay` is a tiny display for TinyGo development.\n\n## Continuous Integration\n* [setup-tinygo](https://github.com/marketplace/actions/setup-tinygo) - Sets up a TinyGo environment for GitHub Actions.\n* [TinyHCI](https://github.com/tinygo-org/tinyhci) - Test actual hardware connections for microcontrollers. It is intended to provide smoke test implementations that exercise the basic functionality for each kind of hardware interface for each supported microcontroller.\n\n## Display Hardware\n* [TinyDraw](https://github.com/tinygo-org/tinydraw) - Draw primitives on TinyGo displays. It is heavily based on the Adafruit GFX library.\n* [TinyFont](https://github.com/tinygo-org/tinyfont) - Font/text package for TinyGo displays. It is heavily based on Adafruit's GFX library.\n* [tinygl](https://github.com/aykevl/tinygl) - The fastest and smallest Go math library for constrained environments, like microcontrollers or WebAssembly.\n* [TinyTerm](https://github.com/tinygo-org/tinyterm) - Tiny graphics library for SPI connected displays.\n* [SSD1306 font](https://github.com/Nondzu/ssd1306_font) - Lite SSD1306 OLED font library using TinyGo.\n\n\n\n## Embedded Systems\n\n### General use\n* [bouncer](https://github.com/eyelight/bouncer) - bouncer is a button input handler library supporting press-lengths of different durations, and debouncing.\n* [fat](https://github.com/soypat/fat) - Filesystem implementation using the File Allocation Table in pure Go.\n* [go-maquina](https://github.com/soypat/go-maquina) - Finite State Machine (FSM) implementation with simplicity and maintainability in mind using Go generics.\n* [go-pico](https://github.com/djthorpe/go-pico) - Raspberry Pi RP2040 Pico SDK for golang.\n* [mm-go](https://github.com/joetifa2003/mm-go) - Generic manual memory management for golang.\n* [periph/devices](https://github.com/periph/devices) - Device drivers.\n* [pio](https://github.com/tinygo-org/pio) - Programmable I/O API for RP2040/RP2350 using TinyGo\n* [schedule](https://github.com/soypat/schedule) - Event-loop scheduling library for synchronizing actions over long periods of time.\n* [tinyfs](https://github.com/tinygo-org/tinyfs) - Embedded filesystems for TinyGo like FATfs and LittleFS on microcontrollers.\n* [TinyGo Drivers](https://github.com/tinygo-org/drivers) - Provides a collection of hardware drivers for devices such as sensors and displays that can be used together with TinyGo.\n* [tinymath](https://github.com/orsinium-labs/tinymath) - The fastest and smallest Go math library for constrained environments, like microcontrollers or WebAssembly.\n* [tinytest](https://github.com/orsinium-labs/tinytest) - The only assertion library that works with TinyGo\n\n### Protocol implementations\n* [achicken](https://github.com/soypat/achicken) - Dead-simple serial protocol with CRC for small projects.\n* [ether-swtch](https://github.com/soypat/ether-swtch) - Low level Ethernet/IP/TCP/HTTP stack marshaller/unmarshaller for use in tiny places.\n* [go-bthome](https://github.com/hybridgroup/go-bthome) - Minimal package for creating and parsing BTHome service data using Go/TinyGo.\n* [go-canard](https://github.com/soypat/go-canard) - CAN/OpenCyphal implementation in pure Go. Port of libcanard.\n* [go-cayenne-lib](https://github.com/TheThingsNetwork/go-cayenne-lib) - CayenneLPP in Go\n* [gomavlib](https://github.com/bluenviron/gomavlib) - Mavlink protocol (2.0 and 1.0) implementation in Go for control and instrumentation of autonomous vehicles.\n* [mlkem768](https://github.com/FiloSottile/mlkem768) - Quantum-resistant key encapsulation method ML-KEM (formerly known as Kyber) implementation in Go.\n* [natiu-mqtt](https://github.com/soypat/natiu-mqtt) - A dead-simple, extensible MQTT implementation well suited for embedded systems.\n* [peamodbus](https://github.com/soypat/peamodbus) - Fault tolerant, TCP modbus implementation in Go that just works. Apt for embedded systems.\n* [peasocket](https://github.com/soypat/peasocket) - Dead-simple, extensible websocket implementation in Go.\n* [seqs](https://github.com/soypat/seqs) - Networking library for use on microcontrollers. Basically a more featureful LWIP.\n* [tiny-sproto](https://github.com/soypat/tiny-sproto) - A simple Point-to-Point Protocol implementation written in Go.\n\n### Instrumentation and control with sensors and actuators\n* [fusion](https://github.com/aykevl/fusion) - Sensor fusion algorithms (gyroscope/accelerometer) implemented in pure Go.\n* [magcal](https://github.com/ysoldak/magcal) - (Magical) Magnetometer Calibration\n* [pctl](https://github.com/brandondube/pctl) - \"process control\" is a package for industrial control in Go. Filtering and control theory algorithms.\n\n## Encoders\n* [easyjson](https://github.com/mailru/easyjson) - Fast JSON serializer for golang.\n* [gjson](https://github.com/tidwall/gjson) - Get JSON values quickly - JSON parser for Go\n* [jsony](https://github.com/orsinium-labs/jsony) - A blazing fast and safe Go package for serializing JSON\n* [protobuf-go-lite](https://github.com/aperturerobotics/protobuf-go-lite) - Reflection-free Protobuf for Go.\n\n## Gaming\n* [firefly-go](https://github.com/firefly-zero/firefly-go) - Go SDK for making Firefly Zero games\n* [Flappy Boot](https://github.com/bjatkin/flappy-boot) - clone of flappy bird for the GBA written using TinyGo.\n* [ghost-castle](https://github.com/deadprogram/ghost-castle) - Simple roguelike game written using TinyGo with TinyRogue on Firefly Zero\n* [gonx](https://github.com/racerxdl/gonx) - Wrapper around libnx for developing Nintendo Switch programs using TinyGo.\n* [Hunt the Wumpus](https://github.com/smittytone/pi-pico-go.git) - Handheld gaming powered by the Raspberry Pi Pico and TinyGo.\n* [koebiten](https://github.com/sago35/koebiten) - Koebiten is a 2D game engine that runs on TinyGo. Inspired by Ebitengine and is characterized by its simple API.\n* [tinygba](https://github.com/tinygo-org/tinygba) - Tools and helpers for developing GBA programs using TinyGo.\n* [tinyrogue](https://github.com/deadprogram/tinyrogue) - Fun package for creating roguelike games with TinyGo on Firefly Zero using WASM\n* [wasm4go](https://github.com/orsinium-labs/wasm4go) - Framework for making WASM-4 games with Go (and TinyGo).\n\n## WebAssembly\n\n### DOM Manipulation\n* [TinyDom](https://github.com/Nerzal/tinydom) - DOM manipulation library. For use in WASM\n* [GoUI](https://github.com/goui-org/goui) - A web framework for making user interfaces\n\n### WebSockets\n* [TinyWebSocket](https://github.com/Nerzal/tinywebsocket) - Wraps the `syscall/js` api to provide a better developer experience, while being compilable by TinyGo\n\n### WASI and WASM Unknown\n* [go-modules](https://github.com/bytecodealliance/go-modules) - WebAssembly, WASI, and Component Model tools for Go\n* [wasmCV](https://github.com/wasmvision/go-wasmcv) - Go bindings for wasmCV computer vision interfaces using WebAssembly.\n* [wypes](https://github.com/orsinium-labs/wypes) - Go library to define type-safe host functions in wazero and other WebAssembly runtimes.\n\n## Wireless Communication\n* [Go Bluetooth](https://github.com/tinygo-org/bluetooth) - Go Bluetooth is a cross-platform package for using Bluetooth Low Energy hardware from the Go programming language.\n* [lorawan](https://github.com/tinygo-org/drivers/tree/release/lora/lorawan) - LoRaWAN implementation for embedded devices using TinyGo.\n\n# Awesome TinyGo Creations\n**Hardware and software implementations**\n* [Arduino Mega Programmer](https://github.com/Gustavomurta/Arduino_Mega_Programmer) - Read ROMs, EPROM, Flash of older computers such as a Commodore C128 ROM chip.\n* [FPV Combat Gadget](https://github.com/ysoldak/fpvc-gadget) - [FPV Combat](https://fpv-combat.com/) configurator with display and a rotary encoder (multi-level menu system with input), runs on XIAO.\n* [go-haystack](https://github.com/hybridgroup/go-haystack) - Track personal Bluetooth devices via Apple's \"Find My\" network using OpenHaystack and Macless-Haystack with tools written in Go/TinyGo. No Apple hardware required!\n* [Gobadge](https://github.com/tinygo-org/gobadge) - TinyGo powered badge using Adafruit Pybadge Hardware\n* [gopher-board](https://github.com/sat0ken/gopher-board) - Original board with Gopher design for Waveshare RP2040-Zero and XIAO.\n* [gopher.pretty](https://github.com/sat0ken/gopher.pretty) - Kicad footprint file of Gopher design. Lets you make your own board.\n* [Gopherbot](https://github.com/hybridgroup/gopherbot) - A robotic gopher plushie that you can code using TinyGo\n* [HeadTracker](https://github.com/ysoldak/HeadTracker) - Bluetooth DIY Head Tracker, for Nano 33 BLE and XIAO BLE Sense boards.\n* [LED Cube](https://github.com/tinygo-org/things/tree/master/ledcube) - 6x32x32 LED cube, inspired by a LED cube I've seen at CCC and the SquareWave Dot cube.\n* [ledrace](https://github.com/conejoninja/ledrace) - TinyGo implementation of Open LED Race\n* [RC PWM to RGB LED](https://github.com/ysoldak/pwm-ws2812) - WS2812 LED strip color and brightness control with two RC PWM channels\n* [TinyGlobo](https://github.com/hybridgroup/tinyglobo) - A pico balloon floats into the great big world, towing a RP2040 Pico programmed with TinyGo using LoraWAN to communicate along the way.\n* [USB HID Keyboard firmware for TinyGo](https://github.com/sago35/tinygo-keyboard) - keyboard firmware for tinygo\n* [wasmVision](https://github.com/wasmvision/wasmvision) - wasmVision gets you going with computer vision using WebAssembly with processors written using TinyGo/Rust/C.\n\n\n# Awesome Libraries\n**Packages that make life easier or more awesome in TinyGo**\n* [`cbor`](https://github.com/fxamacker/cbor) - Library for encoding and decoding Concise Binary Object Representation data and Sequences (RFC8949).\n* [`cereal`](https://github.com/soypat/cereal) - All-you-need serial device tooling integrating bugst, goburrow, tarm and sers serial libraries.\n* [`float16`](https://github.com/x448/float16) - IEEE 754 half-precision floating-point format (binary16) library.\n* [`godsp`](https://github.com/goccmack/godsp) - Basic digital signal processing functions using the discrete wavelet transform (DWT).\n* [`lap`](https://github.com/soypat/lap) - Extremely lightweight linear algebra package similar to gonum.\n* [`math32`](https://github.com/chewxy/math32) - 32bit math functions in pure Go.\n* [`mathgl`](https://github.com/go-gl/mathgl) - A pure Go 3D math library.\n* [`tinystring`](https://github.com/cdvelop/tinystring) - Lightweight text manipulation library with a fluid API and no external dependencies.\n* [`tvd`](https://github.com/soypat/tvd) - Total Variation Denoising filter ideal for capturing edge transitions.\n* [`u-root`](https://github.com/u-root/u-root) - Go versions of many standard Linux tools, such as ls, cp, or shutdown among other awesome OS stuff.\n\n# Resources\n\n## Websites\n\n### TinyGo Community\n\n* [TinyGopher Worldmap](https://getethermap.org/m/tinygophers) - Locate Tinygophers all over the world!\n### Tutorials\n\n* [Blinky tutorial](https://github.com/tinygo-org/tinygo-site/blob/379c887947063e08bc9547a034b7ced68ab30628/content/getting-started/blinky.md) - A tutorial to get familiar with TinyGo basics.\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/tinygo-org%2Fawesome-tinygo/projects"}