kynetradb

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

vs
Supabase

Open-source Firebase alternative built on Postgres with auth, storage, realtime, and edge functions.

DimensionkynetradbSupabase
Full-text searchBM25 — reference cataloguetrigram
Vector searchBrute-force cosine evaluationSupabase uses HNSW which scales better past ~100k vectorsHNSW
AuthPreview scopeBuilt-in
Row-Level SecurityPreview scopePostgres RLS
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 scopeYes
Single binaryPreview scopeNo
LicensePreview terms — request a scoped evaluationApache-2.0
Deploy targets19 target profiles4 listed target profiles
Free tierPreview access by requestyes — 500 MB database, 1 GB storage

When to pick Supabase

Supabase is the benchmark for open-source BaaS developer experience, with deeper ecosystem adoption, SQL joins via Postgres, and mature fuzzy search. If your team is SQL-native or already invested in Supabase's ecosystem, Supabase is the established choice.

  • Your team is SQL-native and needs relational joins.
  • Your team is already invested in Supabase'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 want a single binary with no runtime dependencies — no container fleet to operate.

Compatibility is scoped per preview; public parity is not claimed.. These are documentation-accurate shapes, not runnable end-to-end examples.

kynetradb
// KynetraDB reference API shape — illustrative, not a migration guarantee
import { createClient } from '@kynetra/client'

const kdb = createClient('https://api.myapp.com', PUBLISHABLE_KEY)

// Example query shape retained from the original research catalogue
const { data, error } = await kdb
  .from('posts')
  .select('id, title, author(name)')
  .eq('published', true)
  .order('created_at', { ascending: false })
  .range(0, 19)

await kdb.auth.signInWithPassword({ email, password })

kdb.channel('live')
  .on('postgres_changes', { event: 'INSERT', table: 'messages' }, payload => {
    console.log(payload.new)
  })
  .subscribe()
Supabase
// Supabase — @supabase/supabase-js
import { createClient } from '@supabase/supabase-js'

const supabase = createClient('https://xxxx.supabase.co', ANON_KEY)

const { data, error } = await supabase
  .from('posts')
  .select('id, title, author(name)')
  .eq('published', true)
  .order('created_at', { ascending: false })
  .range(0, 19)

await supabase.auth.signInWithPassword({ email, password })

supabase.channel('live')
  .on('postgres_changes', { event: 'INSERT', table: 'messages' }, payload => {
    console.log(payload.new)
  })
  .subscribe()