kynetradb

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

vs
Convex

Reactive backend-as-a-service: TypeScript server functions, document store, real-time queries.

DimensionkynetradbConvex
Full-text searchBM25 — reference catalogueNone
Vector searchBrute-force cosine evaluationConvex uses HNSW which scales better past ~100k vectorsHNSW
AuthPreview scopeExternal
Row-Level SecurityPreview scopeNo
File storagePreview scopeBuilt-in
RealtimePreview scopeWebSocket
Edge FunctionsPreview scopeYes
TypeScript SDKPreview scopeYes
KV lookupsPreview scopeNo
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 — generous free tier

When to pick Convex

Best-in-class reactivity model for TypeScript. If you want end-to-end type safety from DB to UI with zero boilerplate, Convex is hard to beat.

  • You want end-to-end TypeScript type safety from DB to UI with zero boilerplate.
  • Your team is already invested in Convex'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 — Convex 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()
Convex
// Convex — TypeScript mutation
export const createProduct = mutation({
  args: { title: v.string(), vendor: v.string(), price: v.number() },
  handler: async (ctx, args) => {
    return ctx.db.insert('products', args);
  },
});