See AI context: https://penguins-eggs.net/llms.txt
After years of passionate work on the TypeScript penguins-eggs, its next evolution is here: the C/Go rewrite now carries the penguins-eggs name. The old TypeScript version lives on as penguins-eggs-legacy.
penguins-eggs is built on oa, a high-performance C-native remastering engine, and coa, its intelligent Go orchestrator. This new architecture replaces fragile bash scripts with native Linux kernel syscalls and strict zero-copy principles — delivering a significant leap in speed and reliability.
The goal is ambitious: a truly universal approach to Linux remastering. Every distribution is different, yet they all share common roots. penguins-eggs already supports Alpine, Arch, Debian, Fedora, Manjaro and openSUSE — and aims to prove that a single, unified engine can handle them all.
We have transitioned to a monorepo structure to ensure perfect synchronization between the workhorse (oa) and the orchestrator (coa).
🧠 coa (brooding in my dialect) - The Mind
It manages the full lifecycle: from laying the ISO to the final installation. It powers the primary eggs CLI command.
The name derives from the dialect word coa, referring to the act of brooding or incubating eggs until they are ready to hatch. During early development, the repo was named oa-tools with binaries coa and oa, but eggs is the primary CLI executable used by developers and users.
Language: Go
For eggs commands, see eggs Command Reference.
🦾 oa (eggs in my dialect) - The Workhorse
Language: C
oa is the low-level engine. It handles the "heavy lifting" of the system:
- Managing OverlayFS and mount points.
- Executing SquashFS compression.
- Remove and create users and groups via yocto_style functions.
- Interacting directly with the Linux Kernel and system binaries.
- Philosophy: Performance, stability, and zero-dependency execution.
The primary CLI command is
eggs(e.g.eggs remaster,eggs produce,eggs sysinstall,eggs destroy). The binary is available as botheggsandcoa. See the Quick Start for the full command usage.
- A Linux system (Debian-based, Arch-based, Fedora-based or Manjaro-based).
gccandmake(foroa).golang1.25+ (forcoa).
From this root directory, simply run:
makeThis will compile both binaries:
./oa/oa(The Engine)./coa/coa(The Orchestrator)
TIP: Actually you can get native packages, simply using
make clean package
The penguins-eggs project aims to provide a "Passepartout" for Linux remastering. By separating the Mind (Go) from the Workhorse (C), we achieve a clean, maintainable, and incredibly fast workflow that can adapt to any distribution without changing the user experience.
Documentation can be found on DOCS. See also the Manifestum for the founding vision and origins.
The article eggs-bananas philosophy can be read on my blog.
This project collects stars, look to the sky... contribute!
Created with passion by Piero Proietti.
