Observed since 20 Oct, 17:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Artificial life through symbiogenesis — self-replicating programs emerge from random byte soups
Self-replicating programs emerge spontaneously from random byte soups through symbiogenesis.
No fitness function. No design. Just random bytes, a 7-instruction interpreter, and time.

pip install abiogenesis
from abiogenesis import Soup, compression_ratio
soup = Soup(n_tapes=512, tape_len=64, max_steps=10_000, seed=42)
for step in range(100_000):
soup.interact()
if (step + 1) % 25_000 == 0:
cr = compression_ratio(soup.get_state())
print(f"step {step + 1:>7,} compression={cr:.4f}")
step 25,000 compression=0.4892
step 50,000 compression=0.3575
step 75,000 compression=0.3044
step 100,000 compression=0.2872
Compression drops below 1.0 as structure self-organizes from noise.


The interpreter uses 7 instructions (> < + - . [ ]) on a unified code/data tape. The . instruction copies tape[DP] to tape[WP], providing the replication primitive. No fitness function — replication emerges from the physics.
Mutation rate is the sole control parameter. Four regimes discovered across 10M-interaction runs:

| Regime | Mutation Rate | Behavior |
|---|---|---|
| Crystal | 0 | Single replicator dominates, entropy collapses to 0.018 |
| Soft crystal | 1e-5 | Slow crystallization, low diversity |
| Ecology | 1e-3 | Sustained diversity, multiple replicator species coexist |
| Dissolution | 1e-1 | Too much noise, no structure persists (compression ~0.50) |
Three types of self-replicators emerge and are classified automatically:
| Type | Condition | Meaning |
|---|---|---|
| Inanimate | executed ∩ written = ∅ | Passive — copied but not self-copying |
| Viral | executed ∩ written ≠ ∅, written ⊄ executed | Parasitic — partially self-copying |
| Cellular | written ⊆ executed | Autopoietic — fully self-replicating |

Complexity builds on itself — each interaction layer adds depth to the lineage tree:

| Class / Function | Description |
|---|---|
Soup(n_tapes, tape_len, max_steps, seed, mutation_rate) | Primordial soup of byte tapes |
Experiment(config) | Full experiment runner with checkpointing |
SwarmExperiment(config) | Agent-oriented experiment with identity and provenance |
Agent(tape, name) | Named tape with UUID, lineage, interaction count |
KTermFusion(max_steps) | Concatenate-execute-split fusion engine |
CrystallizationProbe(window_size, critical_threshold) | Diversity monitor — detects monoculture onset |
DiversityProbe(window_size, critical_threshold) | Swarm-level diversity wrapper |
compression_ratio(soup) | zlib compression ratio (lower = more structure) |
shannon_entropy(soup) | Shannon entropy over tape distribution |
find_replicators(soup, min_length, min_count) | Detect and classify self-replicating subsequences |
classify_replicator(sequence) | Classify as inanimate, viral, or cellular |
execute(tape, max_steps) | Run the embodied BF interpreter |
execute_traced(tape, max_steps) | Execute with position tracking |
python examples/quickstart.py # Basic soup run
python examples/replicator_detection.py # Find and classify replicators
python examples/swarm_with_probes.py # Agent swarm with provenance
git clone https://github.com/dopexthrone/abiogenesis.git
cd abiogenesis
pip install -e ".[dev]"
pytest tests/ # 92 tests
If you use this in research, please cite:
@software{roze2026abiogenesis,
author = {Roze, Alex},
title = {Abiogenesis: Self-Replicating Programs from Random Byte Soups},
year = {2026},
url = {https://github.com/dopexthrone/abiogenesis}
}
MIT — see LICENSE.
pypistats · 51 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-15 – 2026-10-15 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-10-11 – 2026-10-11 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-10-09 – 2026-10-09 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-10-08 – 2026-10-08 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-10-07 – 2026-10-07 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-10-04 – 2026-10-04 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-30 – 2026-09-30 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-29 – 2026-09-29 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-28 – 2026-09-28 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-27 – 2026-09-27 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-26 – 2026-09-26 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-24 – 2026-09-24 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-21 – 2026-09-21 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-20 – 2026-09-20 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-18 – 2026-09-18 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-09 – 2026-09-09 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-08 – 2026-09-08 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-07 – 2026-09-07 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-06 – 2026-09-06 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-04 – 2026-09-04 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-03 – 2026-09-03 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-09-01 – 2026-09-01 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-28 – 2026-08-28 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-24 – 2026-08-24 | 9 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-23 – 2026-08-23 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-22 – 2026-08-22 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-20 – 2026-08-20 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-18 – 2026-08-18 | 24 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-17 – 2026-08-17 | 4 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-16 – 2026-08-16 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-14 – 2026-08-14 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-13 – 2026-08-13 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-09 – 2026-08-09 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-06 – 2026-08-06 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-04 – 2026-08-04 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-03 – 2026-08-03 | 4 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-31 – 2026-07-31 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-30 – 2026-07-30 | 3 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-29 – 2026-07-29 | 13 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-23 – 2026-07-23 | 5 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-21 – 2026-07-21 | 2 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-20 – 2026-07-20 | 1 | 2026-10-20T17:50:25.6229959Z |
| 2026-07-18 – 2026-07-18 | 1 | 2026-10-20T17:50:25.6229959Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 19 Feb 2026 | 3 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 17:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:1cd1293aa61f86575c194905856e860f3e0b133279d7b7a81623d2a5020632bc