Features

Client-driven field selection over REST — SQL-native, signed transport, browser-ready SDK.

Client shapes the response

JSON or QL queries travel in X-Mesh-Query headers. @meshql/client encodes and signs them — in Node or the browser.

JoinPlan drives your SQL

plan.fields and plan.joins contain only what the client requested — fetch less, ship less.

Flat rows → nested JSON

Return SQL rows with aliased columns. MeshQL's shaper builds the nested response automatically.

List queries

Pagination, filters, and ordering via $list in the signed payload — not URL query strings.

Request integrity

@meshql/integrity — HMAC-signed queries, login tokens, and tamper detection on every read.

Access control

@meshql/access — field-level, row-level, and entity rules applied in the query pipeline.

Native uploads

@meshql/upload — multipart files with contentHash verification. Local, S3, or R2 storage.

ORM adapters (v0.6.0)

@meshql/prisma, @meshql/drizzle, and @meshql/kysely — one catch-all resolver per stack. You keep your existing DB client.

Drop into your stack

Express, Fastify, Hono on Node, Bun, or Deno. Raw SQL builders plus Prisma, Drizzle, and Kysely.

HTTP routes

GET  /mesh/:entity              List — signed query in headers
GET  /mesh/:entity/:id          Single resource
POST /mesh                      Complex query in body
POST /mesh/auth                 Login (integrity) → signing token
POST /mesh/:entity/:id/:field   Multipart file upload
POST /mesh/:entity              Multipart upload (create)

Full reference: Protocol specs · HTTP adapters · ORM adapters · Showcase · Prisma example