Open source · MIT licensed

The full-stack framework for realtime apps.

Render your React frontend and your backend from one high-performance server. Schema, live queries, auth, server functions, jobs, search, and SSR — one binary. SQLite or Postgres. Deploy to your own VPS or to Pylon Cloud.

db.useQuery("Order")live
Revenue
$48,920
Orders
1,284
Live clients
47
OrderCustomerTotalStatus
ord_9f2aAcme Inc.$1,240paid
ord_7c41Globex$880paid
ord_5b88Initech$2,100pending
ord_3d10Umbrella$640paid
ord_1a07Hooli$1,920pending
Change log
  • db.insert Order+1
  • policy.checkok
  • stream.diff→ 5

One db.useQuery — server-pushed on every write

The model

Your whole stack, in TypeScript.

Declare an entity and a policy. Pylon gives you a migrated table, a REST + realtime API, row-level access control, and a typed client — no resolvers, no ORM, no second service. Read it on the React side with one live db.useQuery.

app.ts
// one entity → a synced table + typed client
const Order = entity("Order", {
customer: field.string(),
total: field.float(),
paid: field.boolean().default(false),
});
 
// access rules next to the schema — deny by default
policy({ entity: "Order",
allowRead: "auth.userId != null",
allowInsert: "auth.userId == data.ownerId",
});
 
// the React side — live, typed, no fetch
const { data } = db.useQuery("Order");
What you get

One framework, twelve primitives.

The pieces you usually wire together yourself ship as one system, in one binary. Use what you need; the rest stays out of your way.

Typed schema

Declare entities with field.string/int/float/boolean/datetime/richtext/id and composite indexes in TypeScript. Migrations apply on save.

Live queries

db.useQuery is a WebSocket subscription. Pylon walks the change log on every write and pushes the diff. No polling, no cache invalidation.

Reactive server queries

Write a query() that joins or derives. db.useReactiveQuery subscribes once — the server tracks what it read and re-pushes when any dependency changes.

Server functions

Queries, mutations, and actions in TypeScript with v.* validators. Filename is the RPC name. Call from React with a typed client.

Row-level policies

Access rules as expressions (auth.userId == data.authorId) that live next to the schema. Evaluated in the hot path of every read and write; deny-by-default.

Auth, included

Magic-link email, 25+ OAuth providers, generic OIDC discovery, guest sessions, API keys. All built in.

SQLite or Postgres

SQLite is the default — one file, zero setup. Set DATABASE_URL=postgres://… and the same schema targets Postgres. Nothing else changes.

Admin studio

Browse tables, inspect live queries, tail logs, and run ad-hoc mutations at /studio. Admin-gated in prod.

File uploads

Presigned uploads out of the box. Files land on local disk or any S3-compatible bucket (R2, Backblaze, MinIO) via one env var.

Faceted search

Add search: to an entity, get full-text + live facet counts + sort across millions of rows. Maintained in the same transaction as your writes, always consistent.

Scheduled & deferred work

Run a function later with ctx.scheduler.runAfter / runAt / cancel — delays, retries, and follow-up jobs scheduled from any mutation, in the same process.

Rooms & presence

WebSocket rooms with live presence over the same server — broadcast ephemeral state (cursors, typing, who's online) without a separate realtime service.

Pylon Cloud

Two ways to deploy.

Connect GitHub

Install the Pylon Cloud GitHub App. Every push to the default branch deploys. Pull requests get a preview environment that tears down on merge.

  1. 1.Create a project and connect a repo.
  2. 2.git push origin main triggers a deploy.
  3. 3.Live at your-app.pyln.dev.

pylon deploy

For air-gapped builds, CI without GitHub, or manual cuts. Same end state as the GitHub flow.

my-app — pylon deploy
$ pylon login
$ pylon deploy --target cloud
✓ Build · 12s
✓ Schema synced
✓ Cutover · 0 errors
→ https://acme.pyln.dev
Pylon Cloud

Scale from the dashboard.

Resize RAM, add replicas, expand regions, grow your volume — all in a click. No pre-provisioning, no per-seat tax.

Pylon Cloud dashboard — project overview with deployments, machine status, and live metrics

Resize on demand

Bump RAM up to 64 GB, swap performance CPUs, expand your volume — live, without redeploying.

Replicas

Run multiple copies per region, load-balanced at the edge. Up to 32 per region on Pro.

Global regions

Deploy in the US, EU, APAC, and South America via Fly's worldwide fleet.

Up to 500 GB volume

Resize live without redeploy.

Postgres option

Provision Postgres (via PlanetScale) alongside SQLite, co-located with your region.

Autostop on idle

Free tier sleeps when idle. Paid projects stay warm.

Custom domains + TLS

Bring your own domain, we handle the cert.

SSO — OIDC + SAML

Configure org-level SSO from the dashboard.

Audit log + snapshots

Activity log, one-click volume restore.

Simple pricing.

Start free. Upgrade when you need more. Heavy usage bills as overages — no surprise per-seat fees.

Hobby
$0/ forever

One project for weekend builds and your first users.

  • 1 project, 1 organization
  • Shared 1 GB RAM · 3 GB volume
  • 100k requests / month
  • Single region, autostop on idle
  • SQLite, magic-link auth
Pro
$20/ org / month

Production apps with room to grow. Resize machines, add replicas, expand regions.

  • Unlimited projects per org
  • Resize up to 64 GB · 32 replicas / region · 500 GB volume
  • 5M requests / month included
  • Multi-region, always-warm
  • Custom domains, SSO, audit log, snapshots
Enterprise
Custom

Bespoke quotas, single-tenant, BYOC. For larger teams.

  • Custom quotas + dedicated infra
  • Single-tenant or BYOC (AWS, GCP)
  • Custom regions on request
  • SLA + on-call escalation
  • Migration assistance, security review

Pro is $20/org/month. Bigger machines, more replicas, and larger volumes are billed at the underlying Fly rate for what you run. Or self-host the open-source framework anywhere — Pylon is one binary.

Connect a repo. Your backend is live.

Hobby is free with no card. Pro is $20 per org per month.