Declare an entity once. Pylon derives the table, the access rules, the API, and the typed React client from it, so a schema change fails at compile time instead of in production.
Entities and fields in TypeScript. Pylon creates the tables and migrates on save.
db.useQuery opens a subscription. Every write pushes a diff — no polling, no refetch.
db.useQuery("Order")liveAccess rules sit next to the schema. Every read and write is checked; default deny.
Magic link, 25+ OAuth providers, OIDC, and API keys.
Presigned uploads to local disk or any S3-compatible bucket.
Cursors, typing, and who is online over the same server.
Full-text queries with live facet counts, updated in the same transaction as your writes.
Start on a single SQLite file. Point DATABASE_URL at Postgres and nothing above the driver changes.
Queries and policies run on the server for first paint, then the same typed client hydrates and subscribes.
Queries, mutations, and actions in TypeScript files, validated and called through the typed client.
Joins and derived data. The server tracks what it read and re-runs when those rows change.
runAfter, runAt, and cancel. Delays and retries run in the same process — no separate worker.
Browse tables, inspect live queries, and tail logs at /studio. Admin-gated in production.
Pick what you need. Every piece shares one schema and one runtime.
Explore the product →Pylon keeps rules, commands, generated types, local data, and logs inside the workflow. Your agent can scaffold, run, debug, and deploy without guessing which console owns the next step.
New apps include AGENTS.md, and the Pylon skill installs with npx skills add pylonsync/pylon. The agent reads the conventions before it edits code.
npm create @pylonsync/pylon scaffolds the app. pylon dev runs it locally. pylon deploy ships it to Cloud.
pylon codegen builds the client from your schema and functions. Bad entity names, missing fields, and wrong arguments fail at compile time.
The agent can inspect tables, live queries, and logs in /studio while pylon dev runs. Debugging happens against current data.
Declare an entity and its access policy. Pylon creates the table, REST and realtime API, row-level checks, and typed React client. That keeps resolvers, an ORM layer, and a separate backend service out of your stack.
// one entity → a synced table + typed clientconst Order = entity("Order", { customer: field.string(), total: field.float(), paid: field.boolean().default(false),}); // access rules next to the schema — deny by defaultpolicy({ entity: "Order", allowRead: "auth.userId != null", allowInsert: "auth.userId == data.ownerId",}); // the React side — live, typed, no fetchconst { data } = db.useQuery("Order");Install the Smallware GitHub App once. Pushes to the default branch deploy; pull requests get previews that disappear after merge.
git push origin main triggers a deploy.your-app.smallware.run.pylon deployUse the CLI for CI, locked-down environments, or a manual release. It reaches the same Cloud runtime as the GitHub flow.
Every app sits behind a global edge network. Resize machines, add replicas and regions, or expand storage from the same dashboard, without pre-provisioning or per-seat pricing.

Cloudflare's edge provides CDN caching, TLS, and DDoS protection worldwide with no extra configuration.
Add RAM up to 64 GB, choose performance CPUs, and expand the volume without redeploying.
Run up to 32 load-balanced replicas per region.
Deploy in US, EU, APAC, and South America regions.
Grow storage live when the app needs room.
Bundled SQLite by default; co-located managed Postgres is in private beta.
Scale to zero when idle, or keep a project always warm.
Bring your domain; Pylon handles TLS.
Configure org-level SSO from the dashboard.
Activity log, one-click volume restore.
Everything else is in the docs.
SQLite by default — one file, nothing to provision. Set DATABASE_URL to a Postgres connection string and the same schema and application code target Postgres instead. On Cloud, bundled SQLite is the default and co-located managed Postgres is in private beta.
No. The runtime is a single open-source binary — run it on your own box or container platform with a volume for SQLite, or point it at your own Postgres. Cloud is the managed path, not a requirement, and it runs the same binary.
Your schema is TypeScript. In development Pylon diffs it and applies the change on save, so the tables follow the file. On deploy the schema is applied as part of the release, before traffic cuts over.
Two ways into the same runtime. Install the GitHub App and pushes to your default branch deploy, with pull requests getting preview environments. Or run pylon deploy from your machine or CI when you want a manual release.
A typed React client with server-side rendering, and a Swift SDK for mobile. Every entity also gets a REST and realtime API, so anything that can speak HTTP or WebSocket can read and write subject to the same policies.
Magic-link email, 25+ OAuth providers, generic OIDC discovery, guest sessions, and API keys. Whatever the caller signed in with, policies read the same auth.userId, so access rules do not change per provider.
Yes — ctx.scheduler.runAfter, runAt, and cancel schedule follow-up work, and delays and retries run in the same process as the rest of your app. There is no separate queue or worker to deploy.
It is a SQLite file or an ordinary Postgres database, with no proprietary storage layer in between. Take a dump and it opens in any client. What you would rewrite on the way out is the SDK calls, not the data.
The framework is free to self-host. Smallware runs it for you — connect GitHub or deploy from the CLI.