mothergod
A general-purpose lossless compressor in Rust, built for compression
ratio rather than speed, and meant to be judged on bits per byte
against zstd -19 and xz -9e.
Pre-alpha: no release, no packaged binary, no version
tag. The container format (FORMAT_VERSION 3)
carries Stored and
Lz: optimal-parse LZ over an adaptive, context-mixing
range coder. That format is frozen, and the project's rules forbid
ever dropping decode support for a version 2 or 3 frame, so a frame
written today stays readable (format spec). Everything around it still moves: the API, the CLI,
and the ratio below. Do not use this for data you care about yet.
What this is
A context-mixing LZ hybrid: a filter bank feeds an optimal-parse LZ with in-DP repeat offsets, which feeds an adaptive arithmetic coder with gradient-mixed experts. Ratio came first, so judge it on bits per byte; the speed section below says what that order cost. Every design decision traces to a recorded experiment in the research journal, rejections included.
Measured
Aggregate bits per byte on the two named corpora, lower is better.
Canterbury is 11 files and 2.8 MB, Silesia is 12 files and 212 MB;
both are pinned by URL and SHA-256, fetched at measurement time and
never committed. Measured 2026-09-01 against gzip 1.12,
Zstandard 1.5.7 and XZ Utils 5.4.5, at the
flags in the header row.
| corpus | mothergod | gzip -9 | zstd -19 | xz -9e |
|---|---|---|---|---|
| Canterbury | 1.374 | 2.081 | 1.470 | 1.403 |
| Silesia | 2.061 | 2.553 | 1.997 | 1.829 |
Read it honestly: mothergod beats both zstd -19 and
xz -9e in aggregate on Canterbury, and loses to both in
aggregate on Silesia. Per file, against whichever of the two is
stronger on that file, it wins 5 of 11 on Canterbury and 1 of 12 on
Silesia. Closing Silesia is the current milestone. The per-file
tables, the throughput columns, and the one command that regenerates
each report are in
docs/benchmarks/canterbury.md and
silesia.md.
Speed
Slow, and that is the honest headline. mothergod's codec has no internal parallelism; the reports measure it one thread per file, several files at once, on one CI machine (AMD EPYC 9V74, 4 logical cores), more threads than cores, so the rate is a lower bound on what an isolated single-file run would show. On that same run, mothergod encoded Canterbury at 0.133 MB/s and decoded it at 4.422 MB/s; it encoded Silesia at 0.059 MB/s and decoded it at 1.879 MB/s. Silesia's 212 MB took about an hour to compress and under two minutes to read back. Encoding carries the optimal parse, so it runs roughly thirty times slower than decoding.
One caveat the reports state themselves: these are single-run figures from one machine, not a cross-machine claim. One more worth adding: an aggregate is total bytes over total time, so it is not a typical file. Per-file decode rates in those reports run from 0.3 to 39 MB/s. Speed is measured on every benchmark run and becomes a target of its own at the speed-tiers milestone on the roadmap; nothing before then is tuned for it.
Who builds it
Day-to-day development is done by Claude agents running on GitHub Actions: triage, implementation, adversarial code review, research, releases. Slowly, in public, like a real team would. A human operator holds the veto and the keys. That is the second experiment in this repository, and the table above is the first one's report card. How it works: agents/GOVERNANCE.md, and the seats are listed on the agents page.
Principles
- Lossless is sacred: the decoder never panics on any input, adversarial or not.
- Every benchmark claim names its corpus; a ratio without a corpus is not a claim.
- Every experiment, accepted or rejected, is recorded: rejections are knowledge too.
- Verification is independent of the proposer: agents never grade their own work.