Ecosystem · 🧬 Protocol (engine — you are here) · 🔮 Registry (the public gene pool)
"The Creator must deconstruct herself to reshape all things." — Audrey · 001X · 2026
⚗️ Experimental research project. It's deliberately provocative — "a digital primordial virus" — so know exactly what it does before you run it. Read Is it safe? first.
What your agent gains from a single file:
- 🔍 a code-audit reflex — an AST security scan (a dangerous-call denylist + layered integrity/lineage checks)
- 🧠 cross-session state — persistent context on disk, so it carries forward instead of starting cold
- 🌐 an opt-in "gene" network — discover peers and fetch/verify pre-packaged capability modules ("genes") other agents publish
- ⚡ What It Does
- 🤔 Why This Exists
- 🔒 Is It Safe?
- 🎬 See It in Action
- 🚀 Quick Start
- 🧬 Architecture
- 🔒 Defense in Depth
- 🍄 Autonomous Spore Network
- 🔧 Developer Reference
- 📚 Further Documentation
- 🤝 Contributing
- 📜 Iron Rules
- 📜 License
Progenitor implants a self-bootstrapping engine into any AI coding agent. Once ingested, the agent gains:
| Capability | What You Get | Maturity |
|---|---|---|
| 🧬 Scoped Execution (Gene Contract v2) | A gene declares purity/grants; pure genes run under an AST allowlist with no I/O and return an advisory result; effectful genes need per-capability host grants |
✅ working |
| 🔐 Web-of-Trust | Content-addressed + signed index verified against a local trust keyring; per-creator gene signatures upgrade trust_state; provenance + reputation surfaced |
✅ working |
| 🤝 Voluntary Adoption | discover → inspect → host decides → cache — the engine never auto-infects or auto-runs a fetched gene |
✅ working |
| 🔍 Code Audit | AST dangerous-call denylist + layered audit (integrity · lineage · GPG signature) | ✅ working |
| 🧠 Persistent State | Cross-session state on disk (counters, logs, lineage) — carries context forward | ✅ working |
| 🌐 Gene Network | Discover peers (UDP/LAN) + fetch & SHA-256-verify pre-packaged capability genes | ✅ working |
| 🍄 Spore Propagation | One consent → opt-in share via file / UDP / IPFS | ✅ working |
| 📈 Lifecycle Phases | Usage-tracked phase labels (mutation→adaptation→evolution) | |
| 🤖 Absorb-from-knowledge | Turn raw text/docs into a runnable capability | 🚧 not implemented (needs an LLM bridge) |
Honest maturity note. The three pillars above — scoped execution, web-of-trust, and voluntary adoption (the corrected "trusted propagation" direction, see docs/VISION.md) — are landed and unit-tested, but new and not yet battle-proven at scale. Security screening, on-disk state, and peer/spore transport are real and tested. "Evolution" is a usage-driven phase label, not code generation or ML; "memory" is checksummed state persistence — see docs/GLOSSARY.md for metaphor ↔ mechanism. Turning arbitrary knowledge into executable capability remains not implemented.
Most AI agents start every session from zero — same mistakes, no memory, no shared learning. Progenitor gives an agent a persistent, self-improving core, and a way to inherit skills other agents have already proven instead of re-deriving them every time.
Honest answer, not marketing — it asks you to pipe a thing called a "virus" into python3, so you deserve the real picture:
- One readable file, Python standard library only. You can audit
INGEST_ME_TO_EVOLVE_pgn-core.pgn(and thehatchery/engine.pysource) top to bottom before running — no hidden dependencies. - What it touches: it writes state under
~/.progenitor/, and makes outbound network calls to fetch genes from GitHub / IPFS gateways. A small background thread wakes about once an hour to self-checkpoint ("pulse"). - Gene execution is screened, then isolated for stability — not hard-sandboxed.
Incoming genes pass an integrity / lineage / GPG-signature check plus an AST
dangerous-call denylist (hardened against the common
eval/getattr/__subclasses__escape tricks), then run in a separate process with memory/time limits (TelomereGuard).⚠️ Be clear-eyed: that subprocess still runs with your privileges, and a denylist is a speed bump, not a security boundary — a determined gene could still find a gap. Treat screening as defense-in-depth, only enable gene-sharing from sources you trust, and run untrusted genes in a throwaway VM. - Peer-to-peer is opt-in and off by default. LAN discovery and "spore" sharing require a one-time consent; nothing is broadcast or shared until you grant it.
- If you're cautious, run it in a throwaway VM or container — sound advice for any self-modifying agent tooling.
Reproducible — run it yourself (standard library only, no network):
python3 examples/demo.pyThe lysosome gate rejects a hostile gene before it executes, and the seed self-audits on activation:
== Lysosome gate: dangerous-pattern scan (no side effects) ==
benign gene -> ALLOWED
os.system('rm -rf /') gene -> BLOCKED — 溶酶体隔离阻断: ['os.system']
== Seed activation: ingest -> catalyze (writes ~/.progenitor/) ==
state: alive
L1 形体完整: PASS
L2 血脉纯正: PASS
L3 罗塞塔石碑: PASS
L4 溶酶体隔离: PASS
The denylist (os.system, eval, exec, subprocess, …) is enforced before any
gene runs — that's the pre-screening referenced in Is it safe?.
Requirements: Python 3.10+. That's it — no pip install, no third-party dependencies.
curl -sL https://raw.githubusercontent.com/Audrey-cn/progenitor-protocol/main/INGEST_ME_TO_EVOLVE_pgn-core.pgn | python3You should see 🧬 Progenitor activated. State is written under ~/.progenitor/.
It's one readable, dependency-free file — read it before you run it.
curl -sL https://raw.githubusercontent.com/Audrey-cn/progenitor-protocol/main/INGEST_ME_TO_EVOLVE_pgn-core.pgn -o progenitor.pgn
less progenitor.pgn # audit the YAML shell + the payload
python3 progenitor.pgn # activategit clone https://github.com/Audrey-cn/progenitor-protocol.git
cd progenitor-protocol
# verify the seed activates (prints: alive)
python3 -c "import sys; sys.path.insert(0,'hatchery'); from engine import ingest; print(ingest('INGEST_ME_TO_EVOLVE_pgn-core.pgn')['catalyze']()['state'])"
# rebuild the .pgn seed from source, and run the test suite
python3 hatchery/incubator.py
python3 -m pytest tests/ -qGenes live in the companion Registry — a content-addressed, CI-gatekept gene pool. An activated agent resolves a capability name → SHA-256 content hash → verified payload; see the Registry README for the gene API and how to contribute one.
- Call
progenitor.pulse()after each conversation round (checkpoints state, advances lifecycle phase) - Call
progenitor.process_reflex(user_input)for semantic keyword → capability dispatch - State persists across restarts; a background thread self-checkpoints about once an hour
flowchart TD
E["engine.py"] --> I["incubator.py"]
M["metadata.yaml"] --> I["incubator.py"]
I -->|"compile + bundle"| SEED[".pgn seed · one self-contained file"]
SEED -->|ingest| CR{"Crucible audit:<br/>integrity · lineage · code-scan · signature"}
CR -->|reject| Q["quarantine / apoptosis"]
CR -->|pass| ENG["Progenitor engine · activated"]
ENG --> ST["cross-session state<br/>~/.progenitor/"]
ENG --> GN["gene network<br/>resolve → fetch → verify"]
ENG --> SP["spores · opt-in<br/>file · UDP · IPFS"]
REG[("Registry · public gene pool")] -. "fetch + verify" .-> GN
| File | Role | Description |
|---|---|---|
hatchery/engine.py |
🧠 RNA Core | The full Progenitor engine — every gene locus, crucible layer, and autonomic pulse lives here |
hatchery/metadata.yaml |
🛡️ Protein Shell | Configuration DNA: gene locus definitions, security framework, founder inscriptions, and semantic vocabulary |
hatchery/incubator.py |
🔧 Seed Compiler | Compresses the engine + metadata, wraps them in a bootstrap shell, and crystallizes the final .pgn seed |
cd hatchery
# Edit engine.py or metadata.yaml to your liking
python3 incubator.py # Outputs: ../INGEST_ME_TO_EVOLVE_pgn-core.pgn
⚠️ The sole deliverable is the.pgnfile. The agent consuming the seed never sees the hatchery source — only the self-extracting payload within the.pgnvector.
Two distinct layered checks guard the system — one at runtime (when an agent ingests a gene) and one in CI (when a gene is submitted to the registry).
Runtime gene audit (engine.crucible_audit + Crucible):
| Check | What it does | Default |
|---|---|---|
| Integrity | SHA-256 content-address (filename == hash of bytes) | enforced |
| Lineage | must carry the PGN@ bloodline prefix |
enforced |
| Creator | ALLOWED_CREATORS allowlist |
open (empty unless PROGENITOR_ALLOWED_CREATORS is set) |
| Code scan | AST dangerous-call denylist (os.system/eval/exec/subprocess/… + getattr/__subclasses__/__builtins__ escape gadgets) |
enforced |
| Signature | GPG verification | optional (enforced only with PROGENITOR_SIGNATURE_MODE=strict + signer fingerprints) |
Gene execution is then refused unless you opt in (PROGENITOR_ALLOW_GENE_EXEC=1) — the
denylist is a pre-filter, not a security boundary (see Is it safe?).
Registry Gatekeeper CI (.github/workflows/gatekeeper.py) runs an independent check on
every submitted gene: L0 rate-limit · L1 lineage · L2 content-address · L3 creator (open) ·
L4 quality · L5 security scan (via policy/security_rules.json).
Once the user grants spore consent (one-time), every innovation auto-disseminates:
flowchart LR
A["Agent A<br/>new gene · consent granted"] -->|"UDP beacon :9999"| B["Agent B · same LAN"]
B -->|"phagocytize_from_peer"| A
A -. "file spore" .-> FS["~/.progenitor/spores/"]
A -. "IPFS (if kubo)" .-> IPFS["IPFS network"]
No manual uploads. No configuration. File spores work even without network — same-machine agents auto-detect each other.
# Download the seed vector
curl -sL https://raw.githubusercontent.com/Audrey-cn/progenitor-protocol/main/INGEST_ME_TO_EVOLVE_pgn-core.pgn -o INGEST_ME_TO_EVOLVE_pgn-core.pgn
# Test ingestion (engine source lives in hatchery/)
cd hatchery && python3 -c "from engine import ingest; r=ingest('../INGEST_ME_TO_EVOLVE_pgn-core.pgn'); print(r['catalyze']()['state'])"
# Peer discovery (LAN agents, engine source lives in hatchery/)
cd hatchery && python3 -c "from engine import discover_peers; print(discover_peers())"
# Build your own .pgn seed from the trinity source files
cd hatchery && python3 incubator.py| Topic | Description |
|---|---|
| Hatchery G017 Self-Replicate Gene | How G017 enables autonomous hatchery reconstitution via Plan A (GitHub pull) and Plan B (embedded payload extraction) |
| Activation Path Lv.0→Lv.4 | The gamified onboarding funnel — each stage asks once, then never bothers again |
| AGENTS.md | Agent Operation Manual — the core directives for Progenitor agents |
| Vision | The north star — corrected direction, the three pillars, and the Gene Contract v2 design |
| Roadmap | Honest status (done / partial / not-started) + prioritized next steps |
| Engineering Review | Evidence-based review — capability maturity, findings, and direction |
| Glossary | Metaphor ↔ mechanism — what each biological term actually does (honest spec) |
| Changelog | Version history and release notes |
- Ingest the seed using the Quick Start command above
- Innovate — let the engine track your usage patterns
- Share — grant spore consent to auto-disseminate your innovations
- Fork the repository
- Modify
hatchery/engine.pyorhatchery/metadata.yaml - Build a new seed:
cd hatchery && python3 incubator.py - Test the seed in a sandbox environment
- Submit a pull request with your
.pgnseed attached
⚠️ All external genes must pass through the L1→L5 Crucible before integration.
- Zero Dependencies — Standard library only
- Bio-Cybernetic Nomenclature —
phagocytizenotdownload - Defense in Depth — Every external byte is hostile
This project is released under the MIT License.
See CHANGELOG.md for version history and release notes.
Engraved by Progenitor Protocol · Audrey · 001X · SHA-256 Locked