SkimmerDB vs turbopuffer
Same foundation: namespaces in object storage, a cache in front, idle data almost free. The differences are around it. SkimmerDB limits keys to namespaces, indexes exact substrings and regex, runs SQL and serves agents over MCP. turbopuffer has deeper full-text options, sparse vectors, hosted reranking and more SDKs.
Side by side
From turbopuffer’s docs, read October 23, 2026, and ours. Where their docs say nothing, so do we.
| turbopuffer | SkimmerDB | |
|---|---|---|
| Architecture | Object storage as the state, NVMe and memory cache on compute | The same idea: object storage is the only full copy, servers are caches |
| Namespaces | Yes; their docs advise keeping them as small as you can without routinely querying several | Yes; one per tenant, user or agent, made by the first write |
| Keys limited to a namespace | Not described in their docs; their permissions guide stores user or group ids on documents and filters by them | Yes: a key can be limited to names or prefixes, read or write; others answer 404 |
| Vector search | ANN with filters, dense and sparse vectors | IVF + RaBitQ, filters and text narrow first; dense vectors only |
| Full text | BM25 with tokenizers, stemming, phrase matching (ContainsAllTokens), k1/b/k3 tunable | BM25 (k1 1.2, b 0.75), no stemming or phrase queries yet |
| Hybrid | multi_query with server-side RRF, or a reranking model | rank: "bm25" with a vector: server-side RRF in one query; no hosted reranker |
| Regex | A Regex filter on attributes with regex enabled; “requires exhaustive evaluation; not recommended for large namespaces” | A trigram index answers substrings and RE2 regex over the text, newest first, with exact counts |
| Aggregation and SQL | aggregate_by Count and Sum, with group_by | SQL: GROUP BY, joins across namespaces, windows, CTEs, exports as Parquet |
| Agents | No MCP server in their docs | A remote MCP server with OAuth, scoped to the user’s namespaces |
| SDKs | Python, TypeScript, Go, Java, Ruby, C# | Python and TypeScript, plus the REST API and OpenAPI document |
| Plans | Launch: $16/month minimum, no free plan | Free plan (no card); then a $10/month minimum that usage counts against |
Choose turbopuffer when
- Full text is the product. Stemming, phrase matching and tokenizer choice matter more than exact substrings.
- You rerank. A hosted reranking model in the same call.
- Your stack is Go, Java, Ruby or C#. They ship SDKs for each.
- Sparse vectors. SPLADE-style retrieval alongside dense.
Choose SkimmerDB when
- Each tenant’s key should reach only theirs. The boundary is in the credential, not a filter every query must carry.
- Agents search for exact things. Error codes, ids, stack traces and regex, indexed and counted exactly.
- You want SQL on the same data. Group, join across namespaces, export Parquet.
- You want to start free. No card, then a $10 minimum.
One workload, both bills
20M documents of 2 KB with 1,024-dimension vectors over 1,000 tenants, 10% rewritten a month, 10M queries a month (a fifth of SkimmerDB’s cold). List prices; where turbopuffer’s rules are ambiguous we take the cheaper reading (the full batch discount on every write). Change the numbers in the calculator.
| Month | Lines | |
|---|---|---|
| SkimmerDB | $22.00 | Storage $12.95 (130 GB as stored) · Writes $3.05 (12.2 GB written) · Queries $5.00 · Cold reads $1.00 (~2M object-store reads) |
| turbopuffer | $65.23 | Storage $40.23 (122 GB logical) · Writes $12.19 (12.2 GB, 50% batch discount) · Queries $12.80 (1.28 GB billed a query) |
Not included: turbopuffer bills data returned by queries at a rate its pricing page doesn’t give; SkimmerDB’s hosted embedding is optional and billed separately. Real bills depend on compression, cache hits and query shapes.
What turbopuffer’s docs say
Read October 23, 2026. Check them again before you decide; they change.
| Page | What it says |
|---|---|
| Introduction | “turbopuffer is a fast, object-storage native search engine”; vector search with filters, BM25 full-text, regex with trigram indexes, hybrid search. |
| Hybrid search | “turbopuffer also provides server-side rank fusion via RRF”, through multi_query, or reranking with a model. |
| Query | Regex “currently requires exhaustive evaluation”; aggregate_by Count and Sum with group_by; consistency strong by default; top_k at most 10,000. |
| Permissions | “turbopuffer doesn’t provide built-in mechanisms for row/document-level RBAC”; store user_id or group_ids on documents and filter by them. |
| Performance | Namespaces “as small as they can be without having to routinely query more than one at a time”. |
| Pricing | Launch $16/month minimum; storage up to $0.33/GB-month; each query billed for the namespace it searches, at least 1.28 GB. |
Questions
Is SkimmerDB a turbopuffer alternative?
For many workloads, yes: both store namespaces in object storage and search them with vectors, BM25 and filters. SkimmerDB adds keys limited to namespaces, indexed substring and regex search, SQL and an MCP server; turbopuffer has more full-text options (stemming, phrases, tokenizers), sparse vectors, hosted reranking and more SDKs.
Can I limit a turbopuffer API key to one namespace?
Their docs, read October 23, 2026, don’t describe namespace-scoped keys; their permissions guide recommends storing user or group ids on documents and filtering by them. In SkimmerDB a key can be limited to namespaces by name or prefix, and every other namespace answers 404 to it.
Which is faster?
We haven’t run turbopuffer, so this page makes no speed claim. Our own numbers, with their method, are on the benchmarks page.
How is querying billed differently?
turbopuffer bills a query by the size of the namespace it searches (at least 1.28 GB, discounted past 32 GB). SkimmerDB charges $0.50 per million queries whatever the size, plus a cold query’s object-store reads at $0.50 per million.
How do I move from turbopuffer?
Export documents as NDJSON, CSV or Parquet and import them per namespace, or write them in batches of up to 10,000. Ids, attributes (as metadata) and vectors map directly; one embedding model per namespace.
Try it with your own documents
Free up to 1 GB stored and 100k queries a month. No card to start.