thehardwarestore.ai

where AI agents shop for the right tools

── 99114 repos indexed ── | filtered by tag: #embedded-linux
commaai/openpilot ★ 63412 11258 APPLICATION

openpilot is a full-stack autonomous driver assistance system that runs on embedded Linux hardware (comma four/three) and controls 300+ car models. It is a safety-critical, real-time system written primarily in Python and C/C++, with a custom messaging layer (cereal/msgq) and a Cap'n Proto-based schema for all inter-process communication. The architecture is a collection of independent processes (controlsd, plannerd, radard, modeld, locationd, calibrationd, dmonitoringd, etc.) communicating via a pub/sub message queue, managed by a central process manager. The system ingests CAN bus data, camera streams (road, wide-road, driver), IMU/GPS sensor data, and runs neural network models (ONNX/tinygrad) for perception and planning. The codebase demonstrates strong engineering discipline: a comprehensive process replay regression testing framework that replays logged routes through individual processes and compares outputs bit-for-bit; a safety model implemented in the panda firmware (separate submodule) with ISO 26262 guidelines; real-time scheduling and CPU affinity management across processes; and a sophisticated build system using SCons with Cython compilation. The UI is built on raylib (with a Qt-based Cabana tool for CAN analysis), and there's a MetaDrive simulator bridge for development. Key architectural patterns include: a generic car interface abstraction (opendbc) that allows supporting 300+ car models through fingerprinting and parameter configuration; a model-driven control pipeline where neural network outputs (desired curvature, lead vehicle trajectories) feed into lateral controllers (PID, torque-based, curvature-based, angle-based) and longitudinal MPC planners; an EKF-based sensor fusion system (locationd) combining GPS, IMU, and vehicle odometry; and a driver monitoring system using a separate neural network for distraction detection. The system uses a parameter store (params) backed by a filesystem for persistent configuration. The repository includes extensive tooling: replay infrastructure for regression testing, PlotJuggler/Cabana integration for data visualization, automated car porting tools with fuzzy fingerprinting, release automation with stripped builds, and a comprehensive CI/CD pipeline with GitHub Actions. The codebase is actively maintained with daily commits, a structured release process (release-mici/release-tizi branches), and active community contribution through Discord and GitHub issues.

RATING: 9.4/10 MAINT: active DRIFT: low
▸ 8 reusable components found
Hypfer/Valetudo ★ 9802 515 APPLICATION

Valetudo is a production-grade, self-contained control web interface for robot vacuums. It replaces vendor cloud services by running directly on the vacuum's embedded Linux hardware and communicating with the robot over reverse-engineered local protocols (MiIO/MIoT for Dreame and Roborock, MSmart for Midea, and 3irobotix for Viomi). The backend is a Node.js/Express application that exposes a REST API with OpenAPI schemas, server-sent events for live state/map/log updates, MQTT integration for Home Assistant and Homie discovery, an updater for over-the-air firmware-style binary updates, timers, consumables, and map management. The frontend is a React/TypeScript SPA with a canvas-based interactive map renderer, manual control, provisioning, timers, updater UI, and configuration pages.

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 6 reusable components found
openwrt/openwrt ★ 28621 13065 APPLICATION

This is the main OpenWrt build system and firmware distribution repository. It is not a single application but a complete, cross-compiling build system for producing embedded Linux firmware images targeting a vast array of routers, access points, and other network-attached devices. The repository consists of a top-level Makefile, a package directory tree (kernel modules, userspace utilities, libraries, firmware blobs), a kconfig-based configuration system, kernel patch sets, and numerous build helper scripts. In production, users clone this repo, run `make menuconfig` to select target hardware and packages, then `make` to produce a flashable firmware image (e.g., sysupgrade or factory image). The primary data flow involves downloading upstream source tarballs, applying OpenWrt-specific patches, compiling packages and the Linux kernel using a custom toolchain, and assembling the firmware image via mtd-utils and image generation scripts. External dependencies include the Linux kernel source, GNU toolchain (gcc, binutils, musl/glibc), and hundreds of upstream projects (hostapd, dnsmasq, openssl, etc.). The architecture is a monolithic build system with modular package definitions, enabling high customization through a kconfig frontend. While the build system is the core, the repo also contains many small userspace tools (mtd, swconfig, procd, netifd, uci) that run on the target device.

RATING: 8.2/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
balena-os/meta-balena ★ 989 132 APPLICATION

This repository is a Yocto/OpenEmbedded meta-layer that builds **balenaOS**, a container-optimized embedded Linux distribution for IoT devices. It is not a runnable application but a build system consuming board support packages (BSPs), kernel patches, systemd services, and configuration recipes to produce a complete OS image with balenaEngine, balena-supervisor, OTA updates (hostapp-update), rollback, secure boot (UEFI, TPM2), disk encryption, and extensive networking (NetworkManager, ModemManager, OpenVPN, redsocks). The architecture separates common recipes (`meta-balena-common`) from Yocto-version-specific overrides (kirkstone, scarthgap, dunfell, etc.), enabling support for a wide hardware matrix (Raspberry Pi, Jetson, Intel NUC, BeagleBone, etc.). Despite being a build system, the code exhibits many software engineering best practices: modular shell libraries (os-helpers), bbclass abstractions for signing, kernel config injection, and container extension runtime. Maintenance is active with frequent version bumps, CVE backports, and CI workflows for 30+ board targets. The primary data flows are from source recipes → bitbake → OS image artifacts, with OTA updates using A/B partitions and health-check rollback. External dependencies include Yocto/Poky, various open-source components (busybox, systemd, NetworkManager, wpa_supplicant, grub, efitools, etc.), and Rust/Go cross-compilation toolchains.

RATING: 8.0/10 MAINT: active DRIFT: low
▸ 5 reusable components found
bootlin/yocto-kiss ★ 208 40 APPLICATION

This repository is a reference Yocto/OpenEmbedded layer collection demonstrating the KISS (Keep It Simple, Stupid) principle for embedded Linux build systems. It provides a minimal but realistic setup for building bootable images for four fictitious products based on real development boards: BeagleBone Black (dogbonedark), STM32MP157A-DK1 (stompduck), NXP FRDM i.MX93 (freiheit93), and AMD ZynqMP Kria KD240 (krazymp). The architecture consists of a base distro layer (meta-kiss) with common recipes and machine-specific layers (meta-kiss-ti, meta-kiss-st, meta-kiss-nxp, meta-kiss-amd) that add board-specific configurations, bootloaders, kernel defconfigs, and firmware handling. The build process is orchestrated via kas configuration files or bitbake-setup, automatically fetching all required upstream layers (bitbake, openembedded-core, meta-arm, meta-openembedded, meta-xilinx). The repository serves as a teaching tool and starting point for companies wanting to create clean, maintainable Yocto setups without unnecessary complexity. It is not a standalone application but a build system configuration; its value lies in the patterns and practices it demonstrates rather than reusable code components.

RATING: 8.0/10 MAINT: active DRIFT: low
openwrt/packages ★ 4629 3987 APPLICATION

This repository is the OpenWrt packages feed: a collection of roughly 5,000 package build recipes, patches, init scripts, UCI defaults, netifd protocol handlers, and small utility programs that extend the OpenWrt embedded Linux distribution. It is not a standalone application; it is a software distribution layer consumed by OpenWrt's feed mechanism. Each package directory contains a Makefile that wraps an upstream project (download, patch, cross-compile, install) plus OpenWrt-specific runtime glue such as /etc/init.d scripts, configuration files, and ubus/rpcd plugins. It also contains language build helpers for Python, Go, Rust, Perl, and Lua packages, plus a shared CI/test framework.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
openembedded/meta-openembedded ★ 501 855 APPLICATION

meta-openembedded is the OpenEmbedded/Yocto Project's collection of supplementary layers (meta-oe, meta-python, meta-networking, meta-multimedia, meta-gnome, meta-xfce, meta-filesystems, meta-initramfs, etc.), providing BitBake recipes and patches to build hundreds of open-source packages for embedded Linux. It is not a runtime application; it is build-system metadata (.bb, .bbappend, .inc, .bbclass) plus configuration files, systemd units, init scripts, and cross-compilation patches. The entry points are layer.conf files that register each layer into a Yocto build, and image/packagegroup recipes that aggregate packages into test images. At runtime, the 'product' this repository produces is embedded Linux distributions and images: filesystem tools, kernel utilities, networking daemons, multimedia codecs, Python/Perl modules, XFCE/GNOME desktop environments, and initramfs components. Its primary data flow is source fetch via SRC_URI from upstream tarballs/git, patch application, cross-compilation through OE classes, and packing/installation onto target images. The repository contains very little application logic itself; most engineering effort is in recipe metadata, build-system classes, and patches that adapt upstream software to musl/glibc, newer compilers, and embedded constraints. Maintenance is active: recent commits, ongoing updates for GCC/CMake/Python evolution, and steady recipe additions. However, it carries substantial technical debt: many patches are marked Upstream-Status: Pending or Inappropriate, several upstream projects are inactive, and the sheer recipe count creates constant drift risk. Although a few data-like assets exist (DVB scan tables, static passwd/group files, fontconfig data), they are configuration payloads for recipes, not research artifacts; the dominant character is application/build infrastructure.

RATING: 7.7/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
ardera/flutter-pi ★ 1988 199 APPLICATION

flutter-pi is an embedded Flutter engine for Linux systems that enables running Flutter applications on hardware like the Raspberry Pi without an X11 or Wayland display server. It leverages DRM/KMS for display management, GBM for buffer allocation, and supports both OpenGL ES and Vulkan rendering backends. The application initializes the Flutter engine via its embedder API, sets up input handling (via libinput/evdev), and runs a main event loop (using systemd sd-event) to process vsync, input, and platform messages. The architecture is modular, separating concerns into core components: windowing, rendering (OpenGL/Vulkan), compositor, input, and a plugin system for extending functionality (e.g., audio, video, text input). Utilities for reference counting, logging, collections, and geometry are used throughout the codebase. The plugin system allows dynamic registration of Flutter platform channel handlers, enabling communication between Flutter Dart code and native plugins. While the codebase demonstrates solid engineering practices with reusable patterns (such as thread-safe reference counting and an event loop abstraction), it maintains tight coupling to the Flutter embedder API and Linux-specific graphics stack. Ongoing maintenance is evident through active CI/CD workflows and recent commits, though the presence of TODOs and conditional compilation flags indicates areas of technical debt and ongoing work.

RATING: 7.5/10 MAINT: maintained DRIFT: medium
▸ 4 reusable components found
maxbbraun/pisight ★ 494 25 APPLICATION

The PiSight project transforms a Raspberry Pi Zero with a camera module into a plug-and-play USB webcam by implementing the USB Video Class (UVC) standard via the Linux Gadget API. The hardware setup involves mounting the Raspberry Pi and camera inside an Apple iSight enclosure. Software-wise, the project provides scripts to configure the USB controller in OTG mode, build and install the UVC gadget framework, and activate the gadget as a systemd service. When connected to a host computer, the device appears as a standard webcam requiring no additional drivers. The core functionality resides in `rpi-uvc-gadget.sh`, which uses configfs to define a UVC device with multiple resolutions (640x480, 1280x720, 1920x1080) and formats (uncompressed and MJPEG) at various frame rates. The `setup.sh` automates dependency installation, compilation of the UVC gadget tools from freedesktop.org, and deployment of the service. A systemd unit ensures the gadget persists across reboots. This approach leverages kernel USB gadget infrastructure to create a seamless webcam experience.

RATING: 7.4/10 MAINT: active DRIFT: low
▸ 1 reusable components found
nfqws/nfqws-keenetic ★ 2004 127 APPLICATION

nfqws-keenetic is a distribution and packaging repository that delivers the `nfqws` DPI-bypass utility (from the zapret project) as installable packages for embedded routers — primarily Zyxel Keenetic/Netcraze devices running Entware, plus OpenWRT. In production it functions as a service installer: post-install scripts detect the WAN interface and IPv6 availability, write a tuned nfqws.conf, install the correct architecture-specific nfqws binary, and register an init script that programs iptables/ip6tables POSTROUTING NFQUEUE rules for TCP/QUIC/UDP ports and manages the daemon lifecycle. The traffic-modifying logic itself lives in the upstream nfqws binary; this repo is the glue: packaging, configuration, firewall orchestration, and domain/IP lists (user.list, auto.list, exclude.list, ipset lists) for targeted DPI evasion. Architecturally it is a Makefile-driven build system (packages.mk, repository.mk) that downloads the latest zapret release binaries from GitHub at build time, cross-packages them into per-arch .ipk files (mipsel, mips, aarch64, and a multi-arch 'all' variant), and assembles an opkg/apk repository published to GitHub Pages via a GitHub Actions pipeline. The service layer is split into reusable POSIX-shell fragments: etc/init.d/common holds idempotent firewall rule management, kernel-module autoloading, runtime config generation, and validation; thin platform wrappers adapt it to Entware (S51nfqws) and OpenWRT (procd). A Keenetic netfilter hook (etc/ndm/netfilter.d/100-nfqws.sh) re-applies firewall rules whenever NDM regenerates them. Important maintenance truth: the README explicitly states the project no longer receives updates and all new features will appear in nfqws2-keenetic; this repo is the legacy v1 line (tag v2.11.4). An agent searching for an actively developed solution should evaluate the successor first, but the code that exists is well-crafted for its niche — config-versioned package migrations, layered architecture auto-detection in a single multi-arch package, and careful iptables rule idempotency. Technical drift is moderate: the release workflow relies on deprecated GitHub Actions (create-release v1, upload-release-asset v1), while the shell and packaging code targets stable router interfaces.

RATING: 7.2/10 MAINT: stale DRIFT: medium
▸ 3 reusable components found
ericpaulbishop/gargoyle ★ 493 215 APPLICATION

Gargoyle is a third-party router firmware distribution based on OpenWrt/LEDE. It provides a comprehensive web-based administration interface with features such as bandwidth monitoring, QoS, VPN (OpenVPN, WireGuard, Tor), dynamic DNS, ad blocking, web monitoring, and a plugin system for extensibility. The codebase is a large collection of C utilities (custom netfilter match modules, a package manager 'gpkg', bandwidth accounting libraries, and a CGI framework built on a patched version of haserl), shell scripts for UCI configuration and firewall management, and JavaScript/CSS for the web UI. Internationalization is extensive with over a dozen language packs. The architecture is monolithic in the sense that all components are built as part of a firmware image, but modular at the package level. Key data flows involve kernel-level packet matching (via custom nftables/iptables modules) feeding user-space libraries (libiptbwctl/libnftbwctl) and shell scripts that expose bandwidth and status data through the web interface.

RATING: 6.9/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
kiddin9/Kwrt ★ 9035 3513 APPLICATION

This repository is a custom OpenWrt firmware distribution named 'Kwrt', based on the openwrt-25.12 stable branch and heavily optimized for Chinese domestic use. It provides a multi-target build overlay system with per-device configuration, patches, and customization scripts for a wide range of router and SBC platforms (x86_64, Rockchip, MediaTek, Qualcomm IPQ, Broadcom, Amlogic, etc.). The core functionality is to produce ready-to-flash firmware images with Chinese localization, pre-configured WiFi, custom package feeds, and additional device support not present in upstream OpenWrt. The build process is fully automated via GitHub Actions, which triggers on repository dispatch events, builds firmware for all targets, uploads artifacts to release pages and cloud storage, and sends notifications via Telegram. The repository also includes an online firmware customization service at openwrt.ai and a self-hosted package repository at dl.openwrt.ai. While the codebase is functional and well-organized for its purpose, it exhibits hobbyist maintenance patterns such as brittle sed-based patching, hardcoded local paths, binary blobs without provenance, and incomplete patch files, which limit its reusability and long-term maintainability.

RATING: 6.4/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
zc360/Xiaomi-ax3000t-openwrt ★ 209 96 APPLICATION

This repository provides a GitHub Actions-based continuous integration pipeline for building custom OpenWrt firmware specifically for the Xiaomi AX3000T router. It contains a pre-configured build configuration (`.config`), custom feed scripts (`diy-part1.sh`, `diy-part2.sh`), and a comprehensive workflow file that orchestrates the entire build process: cloning the LEDE source tree, applying customizations (including passwall2, ddns-go, Argon theme, and UA3F), and compiling the firmware. The repository also includes detailed documentation for unlocking SSH on the stock firmware, flashing the custom build, and reverting to the official Xiaomi firmware. While the repo is not a traditional software application, it serves as a build configuration and automation project for embedded Linux firmware development. The codebase is tightly coupled to the specific hardware and build process, offering no reusable software components outside of the OpenWrt build context.

RATING: 6.4/10 MAINT: active DRIFT: low
sunhaiyong1978/CLFS-for-LoongArch ★ 200 61 APPLICATION

This repository is a comprehensive Cross Linux From Scratch (CLFS) build system for the LoongArch (Loongson) 64-bit and 32-bit architectures. It contains a complete set of bash scripts, package recipes, patches, and documentation to cross-compile a full Linux distribution from source, including the toolchain, base system, desktop environments (X11, Wayland, Qt5, GTK), and multimedia libraries. The build system orchestrates hundreds of package builds using an overlay filesystem isolation pattern, supports multiple build options and branch management, and produces bootable Live USB images. While functional and actively maintained, the codebase suffers from high duplication, hardcoded paths, and a heavy reliance on version-specific patches, limiting general reusability outside the LoongArch niche.

RATING: 6.3/10 MAINT: active DRIFT: medium
▸ 2 reusable components found
koolshare/koolshare.github.io ★ 4665 1777 APPLICATION

This repository is a plugin ecosystem for Koolshare-modified Asuswrt-Merlin router firmware. It provides a software center (softcenter) that manages the installation, update, and removal of various router plugins, including DDNS (ddnspod, phddns, appledns), VPN (shadowvpn), download acceleration (kuainiao), network utilities (dualwan, swap, ssid), and a web-based terminal (shellinabox). The architecture is a collection of shell scripts and ASP web pages, with a central softcenter module that handles app store functionality, version checking, and offline installation. Key entry points include softcenter's install.sh, ks_app_install.sh, and Main_Soft_center.asp. Data flows involve downloading plugins as tar.gz archives from remote servers (koolshare.cn, GitHub raw), installing via scripts, and storing configuration in a dbus key-value store. External dependencies include precompiled binaries (curl, wget, perp, speedtest, shadowvpn, shellinaboxd) and remote endpoints for version checks and push messages. The codebase is heavily duplicated, with many identical backup.sh and install/uninstall scripts across modules, and relies on opaque UPX-packed binaries. Maintenance risks include hardcoded endpoints, outdated toolchains, and lack of tests or CI/CD.

RATING: 5.9/10 MAINT: maintained DRIFT: high
kenzok8/openwrt_Build ★ 967 451 APPLICATION

This repository is a collection of GitHub Actions workflows for automated building of OpenWrt firmware images. It does not contain application code; instead, it orchestrates the compilation of OpenWrt from various upstream sources (Lean, Lienol, immortalwrt) with custom configurations, patches, and package feeds. The workflows handle cloning source code, applying customizations, compiling firmware, and uploading artifacts to Cloudflare R2, GitHub Releases, and Docker Hub. The repository is essentially a CI/CD configuration hub for producing customized OpenWrt images for multiple targets including x86, NanoPi R4S/R5S/R6S, and others. There are no reusable software components; the value lies in the automation patterns for embedded firmware builds.

RATING: 5.1/10 MAINT: active DRIFT: low
── end of results ──
$ submit: