release · pre-alpha

v0.1.0

Phase 0 complete — the MySQL + Vitest wedge and the baby CLI, proven end-to-end against real MySQL.

🗓 July 21, 2026 · v0.1.0 · Apache-2.0 · live on npm

01 · what shipped

The whole wedge, end to end.

A pure core with pluggable seams, real-engine adapters that never emulate, and two delivery vehicles: the Vitest integration and the baby CLI.

engine the test wedge
  • One real mysql:8.4 per run; a seeded mysqldump baseline built once
  • A fresh, isolated database per Vitest worker — proven under real parallelism
  • Zero test-code changes; your app reads DATABASE_URL like production
  • A real Express + Drizzle example app, green in CI
cli the agent surface
  • Five commands — doctor · wake · home · reset · sleep — all speak --json
  • A persistent seeded MySQL, rediscovered across commands by label
  • baby reset — pristine baseline in place, same URL (the undo loop)
  • Password recovered from docker inspect, never written to a file
@babystack/core
Config, lifecycle, the EngineAdapter / Lease / Pool seams + injected Clock / CommandRunner ports. Pure — no I/O.
@babystack/docker
The generic Docker muscle: provision, authenticated wait-ready, idempotent dispose, label-scoped GC.
@babystack/mysql
Real mysql:8.4 — a seeded mysqldump baseline, then a fresh leased database per worker.
@babystack/vitest
globalSetup + setupFiles. Zero test-code changes; a private database per worker, in parallel.
@babystack/cli
The baby binary (operator + agent surface): doctor · wake · home · reset · sleep, all --json.
02 · safety — the trust cliff

A cache that serves stale seed is worse than no cache.

Correctness before speed. Phase 0 ships the guarantees a fresh-database tool has to earn before anyone can trust it.

integrity

Checksum-verified baselines

The dump's sha256 is verified before every load, and written atomically — a torn or corrupt cache fails loud, never loads silently-wrong seed state.

no leaks

Secret redaction

Credentials, key=value secrets, AWS keys, and the minted password are scrubbed from every adapter error before it can reach a log.

boundary

Credential boundary

Tests and agents only ever get disposable connection URLs. The minted password lives only in Docker — recovered via docker inspect, never written to a file.

03 · honest speed

No "instant" claims.

MySQL has no in-server template — so babystack never markets a single-digit-millisecond clone. Speed comes from per-worker databases + baseline reuse (a pre-warmed pool + async reset land next). The first honest measure: ~7s cold, end-to-end.

04 · try it

Run it from source today.

Published on npm as of v0.1.0. With Docker running, the runnable proof is a real Express + Drizzle + MySQL app whose tests hit fresh, seeded, isolated real MySQL — with zero babystack imports.

# clone + install (pnpm)
git clone https://github.com/babystack/babystack && cd babystack
pnpm install

# with Docker running — the example app's suite against real MySQL:
pnpm --filter users-api test
05 · what's next

After Phase 0.

0.9

Warm-pool speed

A pre-warmed container pool + async reset — fast lease acquisition, with measured numbers and method (the honest-speed rule).

breadth

More engines

Redis, then MinIO/S3, DynamoDB Local, ElasticMQ — the same core lifecycle, each behind the EngineAdapter conformance suite. Pull-driven.

launch

Publish to npm

The @babystack/* packages, so pnpm add -D @babystack/vitest just works. Held until the wedge is ready to go wide.

06 · release history

Every release, newest first.

The latest tags — full notes, diffs, and assets live on GitHub.

v0.1.0 Phase 0 — the MySQL + Vitest wedge + the baby CLI. The pure core, real-engine adapters, the Vitest integration, and the CLI (doctor · wake · home · reset · sleep) — proven end-to-end against real MySQL. 2026-07-21 · v0.1.0 · Apache-2.0

All tags and full changelogs: releases on GitHub ↗.