DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
Postgres-native TypeScript ORM. Single-query nested relations via json_agg. Streaming cursors, typed errors, edge runtime support. One runtime dependency.
翻訳待ち
Loading the full README.
Read the full README ↗A Postgres ORM written from scratch. One dependency.
Turbine compiles typed queries straight to SQL. There is no query engine, no WASM, and nothing between your code and Postgres except pg: dependencies is literally one line. Nested relations resolve in one statement. The client is small enough for a Worker or a Lambda cold start, sits next to hand-written pg in the benchmarks, ships an 11-tool read-only MCP server so coding agents can work your schema safely, and includes the operational tooling (index advice, migration guards, PII projection) that usually lives in a paid cloud tier. MIT, and the engine seam is documented if you want to fork it.
npm install turbine-orm
Turbine is pre-1.0 (0.x). Which surfaces hold steady across minors, which are Experimental, and what has to be true before 1.0: STABILITY.md.
Docs: turbineorm.dev · Quick Start · Why Turbine · API Reference · Relations · AI Agents · Benchmarks · Errors
Contents: Why Turbine · Benchmarks · Quick Start · Queries · Built for agents · Safety tooling · Postgres features · Serverless and edge · Database engines · From scratch, and forkable · Comparison · Limitations · Requirements · Contributing
Six reasons, each with the mechanism that makes it true:
dependencies is { "pg": "^8.15.0" }. No engine binary, no WASM compiler, no adapter packages in lockstep. The optional engines (SQLite, MySQL, SQL Server, PowDB, all tiered Experimental in STABILITY.md) are peer dependencies or Node builtins you install only if you use them.with clause compiles to correlated json_agg subqueries, so users with posts with comments is one round trip, typed end to end: users[0].posts[0].comments[0].author.name autocompletes with no annotation.npx turbine skill installs a query-writing skill whose every claim is executed against a live database before release; npx turbine mcp exposes eleven read-only MCP tools, including a relation graph and a join-path finder that returns the with clause to write. Every tool runs inside BEGIN READ ONLY, and PII-tagged columns are redacted before rows reach a model.update/delete with an empty where throws. Columns tagged pii: true are excluded from the emitted SQL's projections. turbine doctor reports missing FK indexes offline, no account, no telemetry.Measured 2026-10-15 against turbine-orm 0.92.0, versus Drizzle 0.45.3 (relational queries) and Prisma 7.10.0 (@prisma/adapter-pg, relationJoins on), with a hand-written pg control arm. Run by the repository's benchmarks.yml workflow on a dedicated machine: AMD Ryzen 9 7950X host, 4-vCPU 16 GB Firecracker VM, client and PostgreSQL 17 (Docker) on the same VM over a Unix socket. PostgreSQL 17.11, Node v24.18.0, pg 8.23.1 under every arm. Same schema, same data (1K users, 10K posts, 50K comments), same pool config. Each figure is the median over 200 rounds with arm order rotated per round, taken as the median of 3 full runs.
| Scenario | Turbine 0.92.0 | Drizzle 0.45.3 | Prisma 7.10.0 | raw pg |
|---|---|---|---|---|
| findMany, 100 users | 0.208 ms | 0.310 ms | 0.352 ms | 0.201 ms |
| findMany, 50 users + posts | 1.075 ms | 1.485 ms | 2.955 ms | 0.854 ms |
| findMany, 10 users + posts + comments | 0.620 ms | 0.884 ms | 2.270 ms | n/a |
| findUnique by primary key | 0.090 ms | 0.149 ms | 0.179 ms | 0.075 ms |
| findUnique, user + posts + comments | 0.246 ms | 0.460 ms | 0.599 ms | n/a |
| count, all users | 0.079 ms | 0.114 ms | 0.169 ms | 0.078 ms |
| stream 50,000 comments, per row (tie) | 55.02 ms | 55.13 ms | 82.84 ms | 57.03 ms |
| atomic increment | 0.164 ms | 0.182 ms | 0.259 ms | 0.135 ms |
| pipeline, 5-query batch | 0.343 ms | 0.701 ms | 0.784 ms | 0.360 ms |
| hot findUnique, rotating ids | 0.078 ms | 0.145 ms | 0.158 ms | 0.070 ms |
What that run says:
This is the beginning of the README. Read the rest at the original. Read the full README ↗