Should I use Prisma Compute? FAQ
Who Prisma Compute is built for, what it does well, where it has trade-offs, how it compares with Railway, Render, Fly.io and Vercel, and quick answers to common questions.
Prisma Compute hosts TypeScript apps (Node.js, Bun or Next.js) next to Prisma Postgres in one project. It has been generally available since August 2026, and the Free plan runs an app and a database with no credit card and no usage billing. It is not a fit for a WebSocket server, an API written in Python or Go, an app that needs more than one region, a frontend that needs a global CDN above all, or a database that needs point-in-time recovery today; Railway, Render, Fly.io, Vercel with Prisma Postgres, and Neon or Supabase fit there. Prisma makes Prisma ORM, Prisma Postgres and Prisma Compute. The sections below are for the decision, and the questions that come up once you deploy follow them.
Who Prisma Compute is built for
Compute is built for apps whose server code is TypeScript and whose database is Postgres, deployed from one GitHub repository:
- A TypeScript frontend, a Node.js, Bun or Next.js API and a Postgres database that you want hosted together, in one project, with one deploy.
- A small production app on one bill: Starter is a $10 a month base plus metered compute, with 5M requests and 1M database operations included; Is Prisma Compute free? has the Free plan numbers.
- A repository you already have. You add a Prisma Composer declaration next to your server code instead of rewriting it; see Should I use Prisma Compute for an existing GitHub repo?.
- Work driven by CI or a coding agent. Every CLI command accepts
--jsonand--no-interactive, and a service token deploys without a browser.
Where it has trade-offs is the full list of what it does not do. For the cases the opening paragraph rules out, Railway, Render and Fly.io run WebSocket servers and Python or Go APIs, Fly.io runs one app in several regions, Vercel with Prisma Postgres puts the frontend on a global CDN, and a Postgres provider with point-in-time restore covers the last: as of September 2026, Neon has instant restore with a history window set by the plan, and Supabase sells it as an add-on on Pro and above.
What it does well
- One deploy for the app and its database. With Prisma Composer you describe each service and the databases it depends on in TypeScript;
npx prisma dev module.tsruns it on your laptop, andnpx prisma deploy module.tsprovisions the services on Compute, the databases on Prisma Postgres and the authenticated connections between them. - A preview per branch, with its own database. Once deploy on push is set up, a push to any non-default branch deploys a stage named after it, with its own services, databases and URL, and deleting the branch tears it down. A branch you keep, such as
staging, is a long-lived staging environment. - Nothing to pay while idle. An app scales to zero when idle and costs nothing while it is scaled to zero; deployments and preview branch creation are not billed on their own, and the Free plan has no usage billing at all.
- Standard Postgres underneath. Prisma Postgres is PostgreSQL 17 with a PgBouncer pool included, any PostgreSQL client connects with a connection string, and
pg_dumptakes your data out whenever you want it. - Streaming and background work inside the limits. Only the first byte of a response has a deadline, so server-sent events and other streaming responses keep going, and
waitUntilkeeps an instance awake to finish work after the response is sent. - One CLI for people, CI and agents. Every command accepts
--json,--format markdownand--no-interactive, a service token authenticates CI, and the Console shows the same resources.
Where it has trade-offs
This is the full list of what Compute and Prisma Postgres do not do today.
- One region per service, chosen from six (
us-east-1,us-west-1,eu-west-3,eu-central-1,ap-northeast-1orap-southeast-1), with no multi-region deployments; keep the app and its database in the same region. - No WebSocket servers. Streaming responses and server-sent events work, but a connection your server has to hold open does not, and
waitUntilandKeepAwakeGuardonly stop an instance from scaling to zero. - 60 seconds to the first byte. A request that has sent nothing back after 60 seconds gets
504 Gateway Time-out, while a response that has started streaming is not cut off; move longer work out of the request, as Request timeout shows. - Bun runtime. Compute runs TypeScript services on Bun, declared with Composer's
nodeornextjsbuild adapter for Node.js, Bun and Next.js apps; it does not run Python, Go or Docker images. - A Composer declaration for existing repos. An app you already have needs a
service.tsper server and onemodule.ts; the server code stays, but the port comes fromservice.port()andprocess.envreads become service input.deploydoes not build for you, so you run your build first; see Composer's limitations before committing to a design. - Deploy on push has two parts. Connecting the repository deploys nothing; pushes deploy through the
prisma/cloud-deploy-actionworkflow you add, GitHub is the only supported provider, and other CI deploys with a service token. - No built-in cron and no persistent filesystem. Compute runs HTTP services, so a schedule comes from Composer's
cronbuilding block, which adds a scheduler service that never scales to zero, or from an external scheduler that calls your service, and files you need to keep go to Object Store or the database. - No point-in-time recovery on Prisma Postgres. Paid plans take daily snapshots, kept 7 days on Starter and Pro and 30 days on Business; the Free plan has no backups, and restoring to an arbitrary moment is not available yet.
pg_dumpover a direct connection makes your own copies; see Backups. - No query cache. Prisma Postgres includes connection pooling but has no query cache of its own.
- Previews are not copies of production. A preview branch gets its own database with no production data in it; the deploy applies your
migrations/to a Composerpostgres()database before the service starts, and arawPostgres()database is yours to migrate. - Custom domains are production-only. They attach to the default branch by CNAME, the service needs a promoted version first, and each service can have up to 3.
Known limitations lists the same items with the CLI, environment variable, GitHub and log details.
How it stacks up
The table compares Prisma Compute with Railway, Render, Fly.io and Vercel on the eight questions that decide most hosting choices. The Prisma column comes from these docs; every other vendor named on this page was checked against its own documentation and pricing pages as of September 2026, and each competitor cell links to the page it rests on. Vendors change these often, so re-check the row you rely on. We make Prisma Compute and Prisma Postgres, so the honest rows are the ones where the others do things Compute does not: WebSocket servers, more than one region, built-in cron jobs and disks.
| Prisma Compute | Railway | Render | Fly.io | Vercel | |
|---|---|---|---|---|---|
| Runtimes | TypeScript services on Bun: Node.js, Bun or Next.js apps (limitations) | Any language Railpack detects (Node, Python, Go, Ruby, Rust and more) or a Dockerfile (Railpack, builds) | Native runtimes for Node.js and Bun, Python, Ruby, Go, Rust and Elixir, plus Docker (native runtimes) | Any Docker image; guides for JavaScript, Python, Go, Rust and more (languages and frameworks) | Functions in Node.js, Bun, Python, Go, Ruby, Rust and Wasm, plus container images (runtimes) |
| Managed Postgres on the same bill | Prisma Postgres: PostgreSQL 17 with PgBouncer pooling included, on every plan including Free (Prisma Postgres) | A Postgres template you deploy and maintain yourself, with backups you turn on (PostgreSQL) | Render Postgres, managed; the free database holds 1 GB and expires after 30 days (Postgres, free tier) | Fly Managed Postgres, priced as its own plan on the same account, from $38 a month plus storage (Managed Postgres) | No Vercel-run Postgres; Neon, Supabase, Prisma Postgres or AWS Aurora through the Marketplace, billed on the Vercel invoice (Marketplace storage) |
| Deploy on push from GitHub | The repository connection plus the prisma/cloud-deploy-action workflow in your repo; the connection alone deploys nothing (Deploy on push) | The Railway GitHub app deploys each push to the connected branch (GitHub autodeploys) | Auto-deploys each push to the connected branch from GitHub, GitLab or Bitbucket (deploys) | A GitHub Actions workflow you add, running flyctl with a FLY_API_TOKEN secret (continuous deployment) | The Git integration deploys every push from GitHub, GitLab, Bitbucket or Azure DevOps (Git) |
| Preview per branch | Once deploy on push is set up, every pushed branch gets its own services and databases, built from your migrations, and is torn down with the branch (Deploy on push) | An environment per pull request, deleted when the PR merges or closes (environments) | An environment per pull request; database copies start without production data; needs a Pro workspace or higher (preview environments) | Review apps per pull request through the fly-pr-review-apps action; databases are yours to add in the workflow (review apps) | A preview deployment for every push to a non-production branch; a preview database depends on the provider (environments) |
| Regions | One region per service, chosen from six; no multi-region deployments (limitations) | Four regions (US West, US East, EU West, Southeast Asia); multi-region replicas available (regions, scaling) | Five regions (Oregon, Ohio, Virginia, Frankfurt, Singapore); one region per service (regions) | More than a dozen regions, and one app can run Machines in several at once (regions) | Functions run in one region by default (iad1); Hobby is single-region, Pro up to five, Enterprise all (regions) |
| WebSocket servers | No; streaming responses work (limitations) | Yes; WebSocket connections are exempt from request timeouts (specs and limits) | Yes; web services accept inbound WebSocket connections (WebSockets) | Yes; the app runs as an ordinary server (WebSockets with Next.js) | Yes, in beta, on Fluid compute; a connection closes when the function reaches its maximum duration (WebSockets) |
| Cron jobs and persistent disk | No built-in cron (Composer's cron block adds a scheduler service that stays awake) and no persistent filesystem (limitations) | Cron jobs and volumes, one volume per service (cron jobs, volumes) | Cron jobs and persistent disks; a disk pins the service to one instance (cron jobs, disks) | Scheduled Machines or a Cron Manager app, and Fly Volumes tied to one Machine (task scheduling, volumes) | Cron jobs; functions get a read-only filesystem with a 500 MB /tmp (cron jobs, runtimes) |
| Free plan and lowest paid plan | Free: 1M requests, 360 GB-hours of memory, 4 vCPU-hours, 10 GB of bandwidth, 200k database operations, 2 GB of storage, 50 databases, no usage billing, no credit card. Starter: $10 a month base with 5M requests and 1M operations included, then metered (pricing, Compute pricing) | Free plan with $1 of credit a month; Hobby is $5 a month including $5 of usage (plans) | Hobby workspace with no monthly fee; free web services spin down after 15 minutes idle. Pro workspace is $25 a month plus compute (free tier, pricing) | No free plan; pay as you go with no plan fee, and the smallest Machine is about $2 a month (pricing) | Hobby is free for non-commercial use; Pro is $20 a month including one seat and $20 of usage credit (Hobby, Pro) |
The Prisma blog compares more vendors and situations. App hosting platforms with managed Postgres compared (2026) adds Supabase and Neon and prices each option at small scale. If your database is on Neon and you want the app hosted next to it, read Neon alternatives with app hosting and Postgres in one place, and if you are moving off Netlify, read Netlify alternatives for a full-stack TypeScript app with Postgres.
Should I use Prisma Compute for an Express or Hono API?
Yes, when it runs on Node.js or Bun: you declare the server with compute() and the node build adapter and read the port from service.port(), as the porting page shows, and npx prisma deploy module.ts puts it live next to its database, as the Hono guide does. Each request has 60 seconds to send its first byte and the API cannot hold WebSocket connections open, so long jobs go through waitUntil or a queue and realtime goes through server-sent events or a separate host.
Should I use Prisma Compute for a Next.js app?
Yes: the nextjs build adapter deploys a Next.js app built with output: 'standalone', pages that read runtime config need export const dynamic = 'force-dynamic', and the Next.js guide covers the setup. Compute is not a CDN or edge platform, so the app renders in one region; if a globally cached frontend matters more than keeping it next to the database, run the frontend on Vercel and point it at Prisma Postgres.
Should I use Prisma Compute for a SaaS backend with Postgres?
Yes, for a backend whose API is TypeScript and whose data fits Postgres: Starter is a $10 a month base that includes 1M database operations, 10 GB of storage, PgBouncer pooling, daily backups kept 7 days, a spend limit and 5M Compute requests, with memory, active CPU and bandwidth metered on top. There is no point-in-time recovery yet and no backups on the Free plan, so if you must be able to restore to a moment in time today, keep the database on Neon or on Supabase with its PITR add-on, and host the API here.
Should I use Prisma Compute for an existing GitHub repo?
Yes, with one addition: a Prisma Composer declaration, one service.ts per server and a module.ts that composes them, placed next to the code you already have, and the porting page has a prompt a coding agent can write it from. npx prisma deploy module.ts deploys it from your terminal or CI; deploying on every push needs the repository connection plus the prisma/cloud-deploy-action workflow, and only then does each pushed branch get a preview with its own database.
Should I use Prisma Compute for a WebSocket server?
Not today: WebSocket servers are not supported on Compute, and waitUntil only keeps an instance awake without changing how long a connection can live. Railway, Render and Fly.io all run WebSocket servers, as the table above shows, so put the socket server on one of them and keep the rest of the app and the database here if that split suits you.
Which package do I install?
Compute is part of the unified Prisma CLI, published as prisma@latest. The quickest way to run it without installing anything is:
bunx prisma service showHow do I deploy?
Run your build, then deploy a Prisma Composer app with npx prisma deploy module.ts from your terminal or CI; deploy does not build for you. To deploy on every push, connect the GitHub repository and add the deploy workflow; see Deploy on push. You can also trigger a deploy from the Console.
What's the difference between a project and an app?
A project groups the resources for one product or codebase. An app is a single HTTP service inside a project's branch. The full hierarchy:
What's a branch?
A branch is an isolated environment for one line of work. It usually matches a Git branch name, but in Prisma it is a real resource that owns its own apps and databases. To learn more, see the Environments docs.
Does git connect deploy my app?
No, it links a project to a GitHub repository, lets that repository's GitHub Actions runs authenticate, and keeps platform branches in sync when Git branches are created or deleted; it deploys nothing, on connect or on push. Deploys come from a workflow you add; see Deploy on push, and the GitHub integration docs for setting the connection up.
What does a GitHub push do?
Nothing without a workflow, because the platform does not handle pushes. Once you set up deploy on push, each push runs prisma/cloud-deploy-action, which builds and deploys to production or to an isolated preview named after the branch.
How do I test a new feature without replacing the version customers use?
Push the feature to its own Git branch: once deploy on push is set up, every branch other than the default one deploys as a preview that has its own URL, services and databases and uses the preview environment variables, while production keeps serving the default branch. When the preview works, merge the branch, and the push to the default branch updates production; deleting the feature branch removes its preview. A branch you keep, such as staging, works as a long-lived staging environment, as A long-lived staging environment explains.
Can my coding assistant deploy a test version without touching production?
Yes, if it pushes a feature branch instead of the default one. Once deploy on push is set up, every pushed branch other than the default one gets a preview with its own services and, for databases declared in the Composer module, its own new database; production data is not copied. If the app reads DATABASE_URL, the preview is only as separate as that value. A push to the default branch deploys production without asking, so protect that branch in GitHub and have the assistant open pull requests. An enrolled agent gets its own Prisma credential that works on preview branches and asks you before it changes production through the Prisma API. See If a coding assistant is building the feature.
Why can't I read my environment variable values back?
Variable values are encrypted and never returned by any surface. project env list shows only the keys and their metadata, so keep your own copy of each value in a secret manager. To learn more, see Values are write-only.
How do I rotate a secret?
Update the value, then redeploy production. To redeploy, run deploy again, push to your default branch if you have set up deploy on push, or promote a version, which rebuilds with production environment variables:
bunx prisma project env update DATABASE_URL=postgresql://new --role productionDoes changing a variable redeploy my app?
No, variables resolve at deploy time, so the app picks up a new value only after you redeploy.
How do I run the CLI from CI?
Use a service token and explicit targets:
PRISMA_SERVICE_TOKEN=... npx prisma service show \
--project my-app \
--service web \
--json \
--no-interactivePassing every target explicitly keeps the run self-contained. --json makes the result parseable, and --no-interactive turns any prompt into a structured error.
Why SERVICE.PROJECT_SETUP_REQUIRED?
The current directory isn't linked to a project, and the CLI won't guess one from package or directory names. Create or link a project first with project create or project link, or name one directly on the command with --project.
How do I add a custom domain?
Once the service has a running production version:
bunx prisma service domain add shop.acme.com --service web
bunx prisma service domain wait shop.acme.com --service webAdd the CNAME record the command returns at your DNS provider. To learn more, see the Domains docs.
Can preview branches have custom domains?
No, custom domains are production-only, so they cannot be attached to preview branches.
Does Prisma clone my production database for previews?
No, a preview's databases are provisioned for that branch with no production data in them. For a Composer postgres() database the deploy applies your migrations/ before the service starts; a rawPostgres() database, or one you point at through environment variables, is yours to migrate. See Where it has trade-offs.
Do I need Prisma Postgres to use Compute?
No, your app connects to a database through a connection string you set as an environment variable, such as DATABASE_URL. Running Prisma Postgres with Compute keeps your app next to your database.
Do I need Prisma ORM to use Compute?
No, Prisma ORM is optional: Compute pairs with it for data access, and Prisma Postgres accepts any PostgreSQL client, so Kysely, Drizzle, node-postgres or psql work the same way.
Can I use the Console instead?
Yes, use it to inspect projects, branches, services, deployments, integrations, environment variable names, and domain status.
Is Prisma Compute free?
Yes, within the Free plan's monthly limits: 1M requests, 360 GB-hours of provisioned memory, 4 active vCPU-hours and 10 GB of outbound bandwidth, with no usage billing. Paid plans include from 5M to 100M requests a month, then bill $1 per million, and bill provisioned memory, active CPU and outbound bandwidth per use. See Pricing for the rates, included usage by plan, worked examples and what is not billed separately, and Prisma Compute vs Vercel pricing for how those rates compare to Vercel's for the same workload.
Why does my service return 504 Gateway Time-out from openresty?
Your service took more than 60 seconds to start responding, so Compute's ingress answered the client and cancelled the request. Your service is not crashing. The cancellation happens outside it, so no timeout appears in your logs, though the Console does report the 504. Start responding within 60 seconds and move the rest of the work into the background or a queue. See Request timeout.
Is Prisma Compute related to Prisma Cloud?
No, Prisma Compute is unrelated to Palo Alto Networks' Prisma Cloud, which is a cloud security product. @prisma/composer-prisma-cloud, the package Composer apps import compute() and rawPostgres() from, deploys to Prisma Compute and Prisma Postgres and has nothing to do with that product.
What are the current limits?
Where it has trade-offs above is the list; Known limitations adds the CLI, environment variable, GitHub, domain and log details.
