Embedded Linux — without tears
Native builds. Modern languages first-class. AI that actually understands the system. One tool from your laptop to production — no SDKs, no cross-compile rituals, no rebuild-the-world for a config tweak.
Building for the edge shouldn't feel like 2008.
Most embedded Linux toolchains were designed for an era of slow ARM hardware, scarce CI, and frozen SDKs. They still work — they're just out of step with today's technology.
Cross-compile gymnastics
Sysroot management, host contamination, mismatched pkg-config. Time spent fighting toolchains, not shipping features.
SDK drift
OS team builds an SDK. App team uses it. Six months later, "works on my SDK version" becomes a JIRA epic.
Stack traces from generated shell
A failure ten layers deep in machine-generated bash, and the actual fix is in a recipe you didn't write.
Modern languages are second-class
Go, Rust, Python wheels — bolted on after the fact, when they should be where the work happens now.
One tool. Every layer. Real speed.
[yoe] is a single Go binary that handles the entire build flow — from fetching sources, to sandboxed compilation, to bootable disk images. Three interfaces, same engine: AI conversation, an interactive TUI, and a traditional CLI.
No cross-compilation
Build ARM and RISC-V on a Mac, on real hardware, or in cloud CI. QEMU user-mode emulation transparently runs foreign-arch containers — same binary, native pipeline, no toolchain ceremony.
Cargo, Go modules, pip — as-is
Modern languages already solved dependency resolution, caching, and reproducibility. [yoe] uses what they ship instead of reinventing it. Even pre-built PyPI wheels just work.
AI as a first-class interface
Starlark units, queryable dependency graphs, structured logs. An assistant can create units from a URL, diagnose a failed build, audit CVEs, and trace why a package is in your image.
Same tool, system to app
System engineers and application developers run the same binary against the same config. New hire clones the repo, types yoe, ships.
Cached at the unit level
Every unit produces a content-addressed apk. Most developers never rebuild — they pull. Local, team, and global cache layers, no global lock.
Per-unit container, bwrap-isolated
Each unit runs in its own Docker container with a bubblewrap sandbox. Toolchain pinning per-unit; no host pollution; no leaks between builds.
From zero to bootable image in minutes.
One Go binary, Docker, and Git is all you need. No global state, no hidden caches, no SDK to install. The first build assembles a Docker toolchain container, fetches default unit modules, and produces a bootable QEMU image.
For ARM64, register QEMU user-mode once with
yoe container binfmt, then add
--machine qemu-arm64. The build runs inside a real ARM64
container, transparently emulated by your host kernel.
# Download the binary (Linux x86_64)
curl -L https://github.com/YoeDistro/yoe/releases/latest/download/yoe-Linux-x86_64 -o yoe
chmod +x yoe && mv yoe ~/bin/
# Create a project, build, run
yoe init yoe-test
cd yoe-test
yoe build base-image
yoe run base-image
The pieces finally lined up.
A decade ago, this combination wasn't realistic. Three things changed at once.
ARM & RISC-V build at full speed
Modern dev boards and cloud instances (AWS Graviton, Hetzner CAX) run native arm64 builds at full clock. QEMU user-mode covers the rest. The cross-toolchain isn't necessary anymore — it's just inertia.
Languages bring their own tools
Cargo, Go modules, pip, npm, Zig — they already handle resolution, caching, lockfiles, and reproducibility. A build system in 2026 should compose with these, not reimplement them.
An assistant can carry the load
The hardest part of embedded Linux isn't writing recipes — it's knowing which knobs to turn and why. Structured Starlark and a queryable graph let an AI do the legwork instead of asking the developer to memorize a build system's quirks.
Ship modern edge products faster.
Build for ARM, RISC-V, and x86 with the same tool. No cross-compile, no SDK handoff, no rebuild-on-config-change. Pre-1.0 and moving fast — try it and tell us where it breaks.
Questions, feedback, or commercial support?
We'd like to hear from you — about a board you're targeting, a unit you can't get to build, or a contract you'd like help with.
info@yoebuild.org →