single binary, no daemons
Engine, wire protocols, admin UI, telemetry, Wasm runtime — all link into one executable. Laptop, Pi, bare VM — no compose file, no sidecars.
a single binary, two wire protocols, twenty research tracks, one author.
SkeinDB is a pre-1.0 database engine I use to study real systems design. It speaks MySQL broadly and PostgreSQL partially on the wire, ships with its own admin panel built in, and carries twenty research tracks — from MVCC reclamation to sandboxed Wasm extensions — so you can study real systems without losing the thread.
The five-minute version. What & why.
Most production database engines hide their interesting choices behind layers of operations sprawl: separate sidecars for the admin panel, separate processes for replication, separate teams for everything else. SkeinDB compresses that down to one binary, two wire protocols, and a control surface you can read in an afternoon.
It exists so I — and anyone reading the source — can study real database behavior without a docker-compose file. The twenty research tracks aren't marketing checkboxes; they're each instrumented, benchmarked, and discussed in companion notes. Wasm extensions let third parties experiment without rebuilding the engine.
One binary, drawn out. Each box is replaceable, each is instrumented.
Six things that make it different from another rust DB toy.
Engine, wire protocols, admin UI, telemetry, Wasm runtime — all link into one executable. Laptop, Pi, bare VM — no compose file, no sidecars.
Protocol shim sniffs the handshake and routes accordingly. Your existing ORM, your existing CLI, your existing dashboards — nothing on the client knows.
R01–R20 cover learned indexes, adaptive execution, privacy, replay, schema evolution and energy-aware maintenance. Nineteen have evidence-backed tests; Wasm query operators are still a prototype.
Not a separate service. Same binary, same Axum router, same auth, same logs, same lifecycle. Bind to the port you want.
User-defined functions in a capability-restricted Wasm sandbox. No arbitrary FS or net — extension authors get a typed handle to the row stream.
Group-commit WAL, fsync barriers, deterministic recovery, startup verification pass. You opt out of safety, not in.
Measured in CI on two live SkeinDB processes, September 2026 (v0.3.40). Raw reports: eval/reports. Throughput and latency benchmarks are not yet published.
It feels like any other DB. That's the point.
Point your existing tooling at SkeinDB — mysql://, postgres://, doesn't matter. The wire shim picks up the handshake, the dispatcher routes the parsed statement to the same planner, you get the same row stream back.
This is what makes it useful as a teaching engine: the surface is familiar, but you can pop the hood any time and read what just happened in /admin/explain or /admin/trace.
1use skeindb::{Server, Config, Wire}; 2 3// one binary. two protocols. no sidecars. 4#[tokio::main] 5async fn main() -> Result<()> { 6 let cfg = Config::load("./skeindb.toml")?; 7 8 Server::builder() 9 .wire(Wire::Mysql) // 3306 10 .wire(Wire::Postgres) // 5432 11 .admin("127.0.0.1:9001") // embedded UI 12 .track("mvcc.reclaim_v2") // 1 of 14 13 .extension("./udf/cosine.wasm") 14 .durability(Durability::FsyncEach) 15 .build(cfg)? 16 .run() 17 .await 18} 19 20// $ ./skeindb 21// ◆ wire: mysql:3306, postgres:5432 22// ◆ admin: http://127.0.0.1:9001 23// ◆ illustrative output 24// ◆ ready
Twenty research tracks, R01–R20. Status as recorded in the repository’s TRUE_STATUS_MATRIX: hardened means covered by evidence-backed tests, not production-complete.
Six quarters. Honest about what's shipped vs shipping.
Separate research thread from the same workstation.
Computational Knightian Uncertainty belongs to my cyber-risk quantification research line. It is included here as adjacent reading from the broader workstation, not as a foundation or companion paper for SkeinDB.
▸ read on IJRCCite as — copy the BibTeX block. Also indexed on Scholar.
@article{nguyen2026cku, title = {Computational Knightian Uncertainty: Undecidability and the Limits of Cyber Risk Quantification in Software-Intensive Firms}, author = {Nguyen, Mich\'el}, journal= {Intl. J. of Research in Computing}, year = {2026}, month = {jan}, url = {https://www.ijrcom.org/.../192}, }
The four questions I get most often. Honest answers.
Pre-1.0. I run it for my own services. I would not run it as a system of record for someone else's payments. Stable tracks are reliable; beta and draft tracks change shape without warning. 1.0 is targeted for Q4 2026 with a written stability commitment.
Because the goal isn't a faster Postgres — it's a database you can read end-to-end in a weekend. Forks inherit thirty years of incidental complexity. SkeinDB is built so the planner, executor, and storage layer each fit in one head.
Yes, and please do. The engine handbook is being written specifically for that case. Reach out — I'm happy to walk through a track with anyone teaching from it.