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.

Dimension kynetradb Cloudflare D1
Full-text search BM25 (parallel, 1.07 ms @ 100k) trigram
Vector search Brute-force cosine (2.21 ms @ 100k, no HNSW yet) None
Auth Built-in (bcrypt + JWT, 3 roles) External
File storage Built-in (local + S3-compatible, SigV4) External (S3/GCS/etc.)
Realtime SSE (topic + kind filters) None
KV lookups Yes (point lookup by ID) Yes
Document filter Yes (JSON predicates) Yes
LLM runtime Yes (Anthropic + OpenAI + Ollama) No
Outbound DB sync Yes (12 sinks: Postgres, DynamoDB, BQ, Firestore, CF, Mongo, Redis, Pinecone) No
Self-host Yes (single binary) No (managed only)
Single binary Yes No
License Apache-2.0 SaaS-only
Deploy targets 18 (1-click) 0 (1-click)
Free tier Yes — Apache-2.0, self-host free yes — 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 need BM25 full-text + vector similarity + auth + files + realtime in one process — no external services.
  • You want to deploy to 18 targets (including 5 Indian providers) from one Dockerfile.
  • You need outbound sync to 12 databases (Postgres, DynamoDB, BigQuery, Firestore, Cloudflare, MongoDB, Redis, Pinecone) with zero extra code.
  • You want an agentic admin with 10 typed LLM-driven actions and a persisted audit trail.
  • You want Apache-2.0 with a self-host path that doesn't require an ops team.
  • You need to run on your own infra — Cloudflare D1 is managed-only.
  • You want a single binary with no runtime dependencies.

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

kynetradb
# kynetradb — insert via HTTP
curl -X POST https://your.host/v1/entities \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "product",
    "attrs": {
      "title": "Aurora Espresso",
      "vendor": "Aurora",
      "price": 2200
    }
  }'
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();