Target: master / main · © Interchained LLC × Claude
One engine, three products, one version — live across npm, PyPI, and crates.io with full macOS + Linux + Windows native addons.
TL;DR
NEDB now ships as three version-aligned distributions built from a single repo and published on a single tag:
| Product | What it is | npm |
pip |
cargo |
|---|---|---|---|---|
| nedb-engine | The flagship — the complete engine | nedb-engine |
nedb-engine |
nedb-engine |
| crypto-database | Verifiable v2/v3 — content-addressed Merkle DAG, AS OF / TRACE time-travel, BLAKE2b tamper-evidence |
crypto-database |
cryptodb |
crypto-database |
| aof-db | Fast / lightweight — append-only op-log, minimal footprint | aof-db |
aof-db |
aof-db |
All three are at 2.4.468 on every registry. crypto-database publishes its Python wheel as cryptodb (the crypto-database name is held by a third party on PyPI).
Install
# npm (native addon: macOS arm64/x64 · Linux x64 · Windows x64)
npm install nedb-engine # npm install crypto-database # npm install aof-db
# PyPI
pip install nedb-engine # pip install cryptodb # pip install aof-db
# crates.io
cargo add nedb-engine # cargo add crypto-database # cargo add aof-dbWhat's new in this line
- Three real, independently-built distributions. Not relabels — each ships its own native
.node, wheel, and crate under its own name, built from forks submoduled underdistributions/. The centralcodemagic.yamlbuilds all six macOS wheels andrelease-distros.ymlpublishes the distros; the forks carry no CI of their own. - Distro npm packages now bundle macOS native addons. The publish step waits for Codemagic's
<distro>.darwin-arm64/-x64.nodeand assembles them alongside the Linux/Windows builds beforenpm publish— socrypto-databaseandaof-dbinstall natively on all four platform targets, not just Linux/Windows. - One-command releases.
scripts/release.py "vFROM" "vTO"bumps the flagship and both forks, repoints submodules, opens + merges the release PRs, and tags — firing CI/CD across all three products. Idempotent and safe to re-run. - Version realignment. Everything resolves to 2.4.468 by default on every registry.
Verified live
npm nedb-engine 2.4.468 (latest) crypto-database 2.4.468 (latest) aof-db 2.4.468 (latest)
PyPI nedb-engine 2.4.468 cryptodb 2.4.468 aof-db 2.4.468
crates.io nedb-engine 2.4.468 crypto-database 2.4.468 aof-db 2.4.468
Distro npm tarballs confirmed to contain all four native addons, e.g. crypto-database@2.4.468:
crypto-database.darwin-arm64.node · crypto-database.darwin-x64.node · crypto-database.linux-x64-gnu.node · crypto-database.win32-x64-msvc.node (identical four-platform set for aof-db).
Under the hood (fixes that brought it green)
- Engine-version alignment. The engine crate (
rust/nedb-v2, packagenedb-engine) had been stranded at2.4.3while each distribution's wrapper crate required^2.4.x, so cargo couldn't resolve and the napi/Codemagic builds failed. Every version-bearing line — engine, wrappers, clients, and the maturin project — is now aligned. release-distrosstartup_failure. Threeif:conditions used double-quoted"refs/tags/"; GitHub Actions expressions require single quotes, so the workflow was valid YAML but an invalid workflow (no jobs, no logs). Restored to'refs/tags/'.- Codemagic distro paths. After the distribution rename, the macOS build steps were updated to
distributions/crypto-database/distributions/aof-db.
Releasing (for maintainers)
python3 scripts/release.py "vFROM" "vTO"
# e.g.
python3 scripts/release.py "v2.4.68" "v2.4.468"Both args require the leading v. The tool is idempotent — repos already at TO are skipped (no empty PRs), an existing tag is left in place, and it always proceeds through the remaining steps. It never force-pushes master and never commits to it directly. Requires GITHUB_TOKEN (repo + workflow).
Known follow-ups
- Per-distribution defaults. The three engines are currently identical; the next step is divergent defaults at the wrapper seam (
crypto-database→ verifiable v2/v3 on;aof-db→ fast append-only) so each behaves as its name promises with no flags. nedbd-v2server-binary naming. The bundled daemon binary is uploaded un-suffixed to the shared release; per-distro naming would prevent a distro shipping another product'snedbd-v2.- Release-tool pre-flight. Add an npm/PyPI/crates name-availability (and "too-similar") check to
scripts/release.pybefore a tag is spent.