kynetradb

One Rust binary: BM25 search + vector + KV + document + auth + files + realtime + agentic admin.

vs
Cloudflare D1

SQLite at the edge via Cloudflare Workers — read replicas globally, zero server management.

DimensionkynetradbCloudflare D1
Full-text searchBM25 — reference cataloguetrigram
Vector searchBrute-force cosine evaluationNone
AuthPreview scopeExternal
Row-Level SecurityPreview scopeNo
File storagePreview scopeExternal (S3/GCS/etc.)
RealtimePreview scopeNone
Edge FunctionsPreview scopeNo
TypeScript SDKPreview scopeNo official client SDK
KV lookupsPreview scopeYes
Document filterPreview scopeYes
LLM runtimePreview scopeNo
Outbound DB syncPreview scopeNo
Self-hostPreview scopeNo (managed only)
Single binaryPreview scopeNo
LicensePreview terms — request a scoped evaluationSaaS-only
Deploy targets19 target profiles0 listed target profiles
Free tierPreview access by requestyes — 5 GB, 25M rows read/day

When to pick Cloudflare D1

Genuinely global SQLite with zero cold starts for Workers. Write-path still routes through a single primary; kynetra ships an outbound D1 sink for mirroring.

  • You need globally distributed SQLite reads with per-tenant database isolation.
  • Your team is already invested in Cloudflare D1's SDK and ecosystem.

When to pick kynetradb

  • You want a comparison-led conversation about BM25 full-text, vector evaluation, and data-plane trade-offs.
  • You need a product-specific implementation scope rather than a generic migration claim.
  • You want to assess 19 hosting target profiles, including 5 Indian providers.
  • You want a scoped preview conversation about the data, deployment, and operating boundary.
  • You need to run on your own infra — Cloudflare D1 is managed-only.
  • You want a single binary with no runtime dependencies — no container fleet to operate.

Insert a product record. These are documentation-accurate shapes, not runnable end-to-end examples.

kynetradb
// kynetradb — @kynetra/client TypeScript SDK
import { createClient } from '@kynetra/client'
const kdb = createClient('https://your.host', PUBLISHABLE_KEY)

const { data, error } = await kdb
  .from('products')
  .insert({ title: 'Aurora Espresso', vendor: 'Aurora', price: 2200 })
  .select()
Cloudflare D1
// Cloudflare D1 — Workers binding
const result = await env.DB.prepare(
  'INSERT INTO products (title, vendor, price) VALUES (?, ?, ?)'
).bind('Aurora Espresso', 'Aurora', 2200).run();