Comparison

Convex vs Pithy

Convex is the most interesting backend platform of the last few years, and the reactivity is not a marketing word — a query is a live subscription, and that changes how you write the front end. Pithy has no equivalent and will not pretend to. What it has instead is that nothing about it is Convex-shaped: the database is SQLite, the runtime is a Worker, and both are yours.

Choose Convex

When your app is a live document everyone is looking at.

Collaborative editors, dashboards that update themselves, multiplayer cursors, anything where a stale screen is a bug. Convex makes reactivity the default rather than something you bolt on with websockets, and the end-to-end TypeScript story is genuinely excellent.

Choose Pithy

When you would rather own the primitives than live inside a platform.

D1, R2, Vectorize, Workers and Durable Objects, provisioned into your Cloudflare account and addressable without us. The database is SQLite and the functions are Hono routes, so nothing you learn is specific to a vendor and nothing you build needs their runtime to run.

Where they overlap

The table stakes.

If a feature is standard for a modern backend, assume both have it. We are not going to dress one up as a differentiator.

Both are TypeScript-first with real types across the boundary, and neither should claim that as a differentiator in 2026.

Convex has scheduled functions and crons; the kit has Cloudflare Workflows and cron triggers.

Store and serve files, with metadata. Table stakes both sides.

Both embed content and search it by meaning, both built in.

Convex has built-in auth plus Clerk, Auth0 and WorkOS integrations; the kit has passwordless auth as a capability.

Convex runs a local backend; Pithy runs the whole stack on Miniflare.

The difference underneath

One gives you a better database. The other gives you the account it runs in.

Convex's bet is that the database should push. Queries are reactive by construction, the client subscribes rather than polls, and mutations are transactions the platform serializes for you. That is a genuinely better programming model for a whole class of app, and it is the reason to choose it.

The bet costs you the primitive. Your functions run in Convex's runtime against Convex's document store, and the reactivity is a property of that pairing rather than something you could reassemble elsewhere. The open-source backend under an FSL Apache-2.0 license makes self-hosting a real option — and that same license is why the kit's own audit package is FSL, so this is not a criticism so much as a shared position.

Pithy composes onto primitives that already existed and that Cloudflare sells to everyone: SQLite in D1, objects in R2, a Worker per request. Nothing about them is ours, which is exactly why removing us leaves a working application rather than an export job.

Feature by feature

What each one actually gives you.

FeatureConvexPithy

Runtime & data

Reactive queries pushed to the client

Convex: the core of the product, and very good

Pithy: not offered; a Durable Object is the closest thing and it is a different tool

Yes No
Transactional mutations

Convex: serialized by the platform

Pithy: D1 batches are transactions; correctness is enforced by constraints rather than by a runtime

YesPartial
Relational SQL

Convex: a document store with a relational data model on top

Pithy: D1 is SQLite, queried with SQL

No Yes
Full-text search

Convex: built in

Pithy: not offered

Yes No
Vector search

Pithy: Workers AI embeds, Vectorize indexes, D1 keeps the text

Yes Yes
Scheduled and recurring functions

Pithy: cron triggers and Cloudflare Workflows for durable multi-step work

Yes Yes
Authoritative server-held session state

Convex: the database is the shared state

Pithy: a Durable Object per session, which is what turn-based games need

Partial Yes

Identity

Auth included

Convex: built in, plus Clerk, Auth0 and WorkOS integrations

Pithy: passwordless: magic link, email OTP, Google and Apple

Yes Yes
Mobile-first bearer tokens

Pithy: a short-lived JWT verified locally against published JWKS

Yes Yes
Users in a database you query directly

Convex: in the Convex document store

Pithy: in the D1 your Worker already queries

Partial Yes

Money

Payments in the platform

Convex: components and integrations; the rails are yours to wire

Pithy: Apple, Google, Stripe, Paddle and Lemon Squeezy on one entitlement

No Yes
One entitlement across every rail

Pithy: gating code names the key, never the SKU

No Yes
Per-user balance ledger

Pithy: atomic, idempotent, overdraft-safe by CHECK constraint

No Yes

hyi187

Authoritative turn-based sessions

Convex: you could build it on the reactive store

Pithy: a Durable Object with hidden per-player state and an alarm-driven deadline

Partial Yes
Matchmaking

Pithy: room codes, invites, a friend graph and a skill-bucketed queue

No Yes
Skill rating

Pithy: MMR per pool, which the open queue buckets on

No Yes
Leaderboards with closing windows

Pithy: daily through all-time, joinable against your own tables

No Yes
Play closed-test roster and its clock

Pithy: the fourteen-day Google Play requirement, tracked

No Yes

Trust & ownership

Runs in an account you already own

Convex: Convex Cloud, or self-hosted if you operate it

Pithy: provisioned into your Cloudflare account

No Yes
Self-hostable

Convex: the open-source backend, FSL Apache-2.0, converting to Apache-2.0 after two years

Pithy: MIT, and there is nothing of ours to host

Yes Yes
Audit trail across the backend

Pithy: a queryable trail attributed to the actor, including the dashboard

No Yes
Encrypted secret storage with rotation

Convex: environment variables

Pithy: a registry with two backends, per environment, with at-rest rotation

Partial Yes
Humanity check as middleware

Pithy: Turnstile, stacked on any route's real strategy

No Yes
No per-seat pricing

Convex: seats on Professional and above, plus usage

Pithy: no seat dimension; Cloudflare bills what runs

No Yes
No charges for egress

Convex: bandwidth is a billed dimension

Pithy: R2 does not charge egress

No Yes

Operations & DX

Schema migrations

Convex: schema validation, with data changes as your own migration functions

Pithy: one ordered registry per database, run per environment, with tested rollbacks

Partial Yes
A preview environment per branch

Convex: preview deployments

Pithy: a worktree, a port block and ephemeral Cloudflare resources, torn down afterwards

Yes Yes
Front end scaffolded into the backend

Convex: you bring your own

Pithy: `pithy ui add react` — one origin, one build, one deploy

No Yes
A polished platform console

Convex: polished, and the data browser is excellent

Pithy: Cloudflare's own, and it is very good — the console the account already uses for Workers, D1, R2 and the logs

Yes Yes
Panes for users, money and the trail

Convex: a data browser over whatever you modeled; no pane knows what a subscription is

Pithy: users, entitlements, purchases, subscriptions, support and the trail — and a user can be comped, revoked or signed out everywhere

Partial Yes
Everything drivable by an agent

Pithy: every command takes flags, requires no prompt and speaks `--json`

Partial Yes

The saffron tick marks where Pithy leads — not that the other column is absent. Every claim about Convex was checked against their own documentation on 2026-08-25; both products change, and this page is a snapshot rather than a maintained contract.

Where Pithy pulls ahead

The parts Convex does not have.

01

The primitives are not ours.

D1 is SQLite, R2 is object storage, a Worker is a request handler. Cloudflare sells all three to everyone, and none of them needs Pithy to work. Removing the kit leaves a running application; leaving a platform whose reactivity is the product means rewriting the part that made it worth choosing.

02

Money is in the kit, on five rails.

Apple, Google, Stripe, Paddle and Lemon Squeezy resolving to one cross-rail entitlement, with every purchase row in your own database. On Convex that is an integration you build, and the buy-on-iOS-be-entitled-on-web case is entirely yours.

03

A game backend, not a database.

Authoritative sessions with hidden per-player state, matchmaking, skill rating, leaderboards, a correct ledger — and the Play closed-test clock nobody warns you about. Convex could host all of it; none of it is written for you.

04

No seat pricing.

Convex bills per developer on its paid tiers. Cloudflare bills what your Worker runs. For a team that grows faster than its traffic, those two curves diverge quickly.

05

Egress is not billed.

Bandwidth is a Convex billing dimension; R2 does not charge egress. For anything serving media or user uploads, that single line dominates the comparison at scale.

06

Secrets, audit and a humanity check are capabilities.

Per-environment encrypted secrets with at-rest rotation, a queryable audit trail attributed to the actor, and Turnstile as stackable middleware. On Convex the first is environment variables and the other two are yours to build.

07

SQL, and the skills you already have.

A relational data model over a document store is not the same as a relational database. D1 is SQLite: the queries, the constraints and the people who can write them all already exist.

Where Convex wins

Sometimes it is the better pick.

Reactivity is a better model, where it fits.

A query that stays live is not sugar over polling — it removes a whole category of state-synchronisation bug. If your product is collaborative, this is the strongest argument on the page and it is theirs.

The developer experience is exceptional.

End-to-end types, a data browser that is genuinely pleasant, and a local backend that behaves like the real one. The kit is good here; Convex is better.

Transactions you do not have to think about.

Mutations are serialized by the platform. Pithy gets correctness from database constraints, which works — but it asks you to know why the constraint is there.

Full-text search built in.

Convex has it; the kit does not, and semantic search is not a substitute for typo-tolerant keyword search.

One thing to learn, not six.

Convex is a single coherent product. A kit of capabilities composing onto five Cloudflare primitives is more surface, and more to hold in your head on day one.

Self-hosting is genuinely supported.

The open-source backend is the same code as the cloud, under a license that converts to Apache-2.0 after two years. That is a better ownership story than most of this category offers.

Cost

Seats plus usage, against usage alone.

Convex prices per developer seat on its paid tiers and then bills usage on top — compute, storage, database I/O, search and bandwidth. Cloudflare has no seat dimension at all: it bills requests, CPU time, rows read and written, and storage, and R2 does not charge egress. Which is cheaper depends entirely on whether your team or your traffic grows faster.

ConvexPithy
ModelPer-developer seats plus usageUsage only, on your own Cloudflare account
Team growthEach developer adds costNo per-seat dimension
ComputeFunction calls and action compute hoursRequests and CPU time
StorageDatabase, file and search index storageD1 storage and R2 storage
BandwidthEgress is billedR2 does not charge egress
Who bills youConvexCloudflare, directly — there is no bill from us

Both vendors set and change their own prices, and these dimensions were read on 2026-08-25. Convex's pricing page and Cloudflare's Model your own shape before believing either of us.

What it takes to move.

The data is the easy half. A Convex document store with a relational model maps onto SQLite tables more cleanly than most document stores do, and the schema you already declared is most of the work already done.

The hard half is reactivity. Every place a component subscribed to a live query becomes something you fetch, and something that decides when to fetch it again. If your app leaned on that, you are not migrating a backend — you are rewriting the front end's relationship with it, and you should price that honestly before starting.

If you were using Convex mostly as a typed database with scheduled functions, the move is small. If you were using it as a reactive platform, it is not.

The honest version.

Convex is a better product than this page can talk you out of, for the apps it is built for. If a stale screen is a bug in your product, choose it. The case for the kit is for everything else: an app that needs payments, games infrastructure, secrets and an audit trail more than it needs live queries — and a team that would rather own Cloudflare primitives than the best version of somebody else's platform.

Get started All comparisons