Skip to content

Repository files navigation

See AI context: https://penguins-eggs.net/llms.txt

🥚 penguins-eggs

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.

donate

🏗 penguins-eggs

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.

🚀 Getting Started

The primary CLI command is eggs (e.g. eggs remaster, eggs produce, eggs sysinstall, eggs destroy). The binary is available as both eggs and coa. See the Quick Start for the full command usage.

Prerequisites

  • A Linux system (Debian-based, Arch-based, Fedora-based or Manjaro-based).
  • gcc and make (for oa).
  • golang 1.25+ (for coa).

Build Everything

From this root directory, simply run:

make

This will compile both binaries:

  • ./oa/oa (The Engine)
  • ./coa/coa (The Orchestrator)

TIP: Actually you can get native packages, simply using make clean package


📜 Philosophy

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.

coaoa

Star History

This project collects stars, look to the sky... contribute!

Star History Chart


Created with passion by Piero Proietti.

blog

About

The idea is that every system should have its own way of being remastered. Every distro is different, yet they share many common roots; here, we want to see if a universal approach is reasonably possible.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages