TL;DR
- Choose Convex if you want a polished pure-TS experience, you’ll stay on their cloud (or accept their FSL-licensed self-host), and you don’t need game shards or facets.
- Choose Pylon if you want a single-binary self-host, FOSS license, native faceted search, or in-process functions that share a transaction with your writes.
Same shape
Both ship:- Reactive queries that auto-update the UI when data changes
- TypeScript-first server functions (mutation / query / action)
- Schema as code
- Real-time WebSocket sync
- Built-in auth + file storage
- Self-host options
- React, React Native, and Next.js SDKs
Where they differ
Process model
Pylon ships as one Rust binary. Convex’s self-hosted product can run from Docker or a prebuilt backend binary, with the dashboard and CLI included. For a hobby project on a $5 VPS, Pylon installs in 30 seconds with no Docker. For a production deployment, both work; the operational story is different.
License
Convex’s license bars you from offering a competing managed Convex service for the first 2 years after each release. For 99% of users this is irrelevant; it matters if you’re building a BaaS-on-top-of-a-BaaS. Pylon’s MIT/Apache means you can do anything.
Search
Convex has full-text search — keyword + prefix matching. It does not have native facets — you’d build them with regular queries on top. Pylon ships SQLite FTS5 + roaring-bitmap facets out of the box.useSearch("Post", { facets: ["tags", "authorId"] }) returns hits + live facetCounts in one call. For an Algolia-style faceted UI without paying Algolia, Pylon is the cleaner story.
Game shards
Convex has no concept of authoritative tick-based game state. If you’re building a Slack-like app, you don’t need it. If you’re building a multiplayer game or a Figma-style cursor-presence app, Pylon’sShard<S: SimState> primitive is a real thing Convex doesn’t replicate. One caveat to be clear about: that shard simulation is authored in Rust (the pylon_realtime crate), with a useShard React hook to connect from the client — there’s no TypeScript API for the server-side shard logic today.
Pricing
Pylon Cloud pricing is based on a platform plan plus machine compute and included quotas. Convex’s pricing page combines hosted usage, team seats, and higher-tier minimums.
Editor / Studio
Both have web-based inspectors. Pylon’s runs against your local binary by default; Convex’s hosted dashboard is the default for cloud projects, and the self-hosted product includes its own dashboard.
CRDTs
Pylon integrates Loro for collaborative text/lists/maps/trees — true CRDTs with conflict-free convergence. Convex has reactive queries that automatically reconcile updates, but does not ship a CRDT library; for collaborative editing you’d integrate Yjs or Loro yourself.Where Convex is better
- Pure-TS dev loop — Convex has invested heavily in DX polish. Type inference flows end-to-end without codegen. Pylon requires
pylon codegen(one CLI call); Convex’s TypeScript flow is a bit tighter. - Larger team behind it — well-funded YC company, more docs, more examples.
- Scheduled functions — Convex has clean durable primitives for scheduled jobs. Pylon has a durable scheduler (
ctx.scheduler.runAfter) and background jobs too, but Convex’s scheduler UI is more polished. (Pylon’s multi-step durable@pylonsync/workflowspackage is still early / not yet published.) - Convex Vector Search — first-class vector search; Pylon has the
vector_searchplugin but Convex’s is more featureful.
Where Pylon is better
- Small footprint — install the pylon binary + Bun on a VPS, or
pylon deploy. No Docker daemon. - Faceted search — first-class with live counts. Convex requires custom queries.
- Game shards —
Shard<S: SimState>for tick-based authority (authored in Rust;useShardhook on the client). - Open license — MIT/Apache, not FSL.
- Plugin ecosystem — 20+ built-in plugins (TOTP, audit log, webhooks, MCP, etc.) you flip on in the manifest.
- Self-host on day one — Convex’s self-host is recent and the OSS bundle hasn’t reached the polish of their hosted offering yet.
Migrating from Convex
Most of the dev surface is 1:1. The biggest delta is the codegen step (Pylon) vs. inline TS types (Convex) — one extra CLI call.