A directory of known servers and clients speaking the http-sql 0.0.1 draft. The list is bootstrap-thin; PRs welcome.
| Implementation | Form | Backend | Notes |
|---|---|---|---|
| examples/reference-server.ts | TypeScript handler | swap in your own DB | Dependency-free reference; the wire format with nothing else attached. |
| examples/cloudflare-worker-to-d1 | Cloudflare Worker (Hono) | Cloudflare D1 | Drop-in http-sql endpoint for an existing D1 database. Auth via bearer token. Fails check V-1: the D1 binding has no lossless 64-bit integer mode (workerd#4195). |
| examples/cloudflare-durable-object | Cloudflare Worker + Durable Object (Hono) | SQLite-backed DO storage | Each tenant is its own real SQLite at the edge. The flagship dogfood for "SQLite on both sides." Fails check V-1 for the same reason as the D1 example: SqlStorageValue has no BigInt. |
| Implementation | Form | Notes |
|---|---|---|
| examples/reference-client.ts | TypeScript class, ~40 lines | Uses platform fetch. No dependencies. |
smugglr http-sql profile |
Rust / WASM | Shipped. Profile::http_sql in rafters-studio/smugglr; emits single-statement request bodies. |
The combinations above let you enter at whichever end matches what you already have:
- You have a SQL backend, want a sync-friendly HTTP surface in front of it. Use cloudflare-worker-to-d1 as the template, swap D1 for your backend. Now any http-sql client can sync against it.
- You want per-tenant SQLite at the edge with no infrastructure. Use cloudflare-durable-object. Each tenant becomes its own DO with its own SQLite. Pair with smugglr in the browser for "SQLite on both sides, content-hash diff between them."
- You're writing a sync engine, ORM, or CLI that wants to target many backends. Implement the wire format once (the reference client is ~40 lines). Every server that follows it becomes a target.
- Implement the 0.0.1 draft (or run the checks yourself).
- Open a PR adding a row to the table above.
- Include: name, form (Worker / Node / library), backend (D1 / Turso / Postgres / DO / etc), and one-line notes.
Passing is self-reported. The community calls out failures via issues.