Nov 17, live webinar: ECS to EKS without freezing the roadmap for a quarter

Replit Tightened Core and Pro: When to Move Off Replit Deployments to Your Own Kubernetes Cluster

Replit trimmed Core and Pro plan features in late October 2026. Here are the seven signals that say it is time to move a published Replit app to Kubernetes in your own cloud account, the signals that say stay, and a step-by-step migration plan for the app, the Postgres database, App Storage and Replit Auth.

Romaric Philogene
CEO & Co-founder
NOV 14, 2026 · 17 MIN
Replit Tightened Core and Pro: When to Move Off Replit Deployments to Your Own Kubernetes Cluster

Key points:

  • What changed in late October 2026: Replit removed Plan mode from Core and removed the 10 parallel agents and the 50 viewer invites from Pro, with prices unchanged at $20 and $100 a month (PricingSaaS change log for Replit, Replit pricing). The change hits the building side. Replit Deployments pricing did not go up, and dropped on 1 August 2026 (Replit docs).
  • So a plan change alone is not a reason to migrate. Move a published app off Replit Deployments when production requirements push you out: data must live in your own cloud account, a customer asks for audit evidence, you need more than one service plus workers and queues, the production database approaches the 100 GiB limit, or engineers now own the code in GitHub.
  • Stay on Replit when the app is an internal tool, a prototype or a low-traffic product built by non-engineers. Autoscale scales to zero and costs little at that size. Replit Enterprise also offers BYOC and Image Exports (Docker image plus Terraform) in early access, which is the shortest path if you already buy Enterprise (Replit BYOC docs).
  • The migration has six parts: code to Git, a Dockerfile, the production PostgreSQL (pg_dump -Fc from the production DATABASE_URL), App Storage files, Replit Auth users, and the deployment types mapped to Kubernetes objects. Auth is usually the slowest part.
  • You do not need a Kubernetes team to land on Kubernetes. Qovery deploys the app, workers, cron jobs and a managed PostgreSQL into your own AWS, GCP, Azure or Scaleway account, or an existing cluster, with git-push deployments and a preview environment per pull request. Coding agents can drive it through Qovery Agent Skills.

Qovery · Infrastructure control plane
Build with Claude Code, Deploy with Qovery
Learn more

Replit changed its Core and Pro plans again at the end of October, and my inbox filled with the same question: "Is this the moment to get our app off Replit?"

My honest answer: maybe, but not because of the plan change. The late-October cuts touched Replit Agent features. They did not touch what you pay to keep a published app running. The question to ask is whether your app has outgrown the place it was born. I have interviewed more than 200 CTOs, and the tool that got them to their first customers was rarely the tool their tenth enterprise customer accepted.

All facts were checked on 14 November 2026 against Replit's own pricing page and docs.

What exactly did Replit change in Core and Pro in late October 2026?

Replit removed Plan mode from Core, and removed "10 parallel agents" and "Invite up to 50 viewers" from Pro, during the week of 26 October 2026, with list prices unchanged. PricingSaaS, which snapshots the pricing page daily, recorded the change on 1 November 2026 (PricingSaaS).

It is the latest step in a year of repackaging. The same change log shows Core losing its explicit "2 parallel agents" line in early September, the free Starter plan disappearing from the pricing page on 11 September, and Core's monthly credit allocation moving between $20 and $25 during 2026 (PricingSaaS).

The plans as they stand today, from Replit's pricing page:

PlanPriceWhat it includes today
Core$20/month, or $18/month billed annuallyUp to 30 hours of chat and 60 projects on Free Mode, $20 toward more powerful models, unlimited workspaces
Pro$100/month, or $90/month billed annuallyEverything in Core, $100 toward the most powerful models, up to 15 collaborators, database rollback up to 28 days, premium support
EnterpriseCustomSSO, SCIM, audit logs, single-tenant and private networking options

Publishing costs are billed separately from the plan, drawn from your monthly credits and then usage-based (Replit docs: publishing costs). And those prices went down. On 1 August 2026, Autoscale compute dropped from $3.20 to $0.60 per million compute units, and requests from $1.20 to $0.40 per million (Replit docs: Aug 2026 pricing updates).

If you are angry about losing parallel agents, rethink where you build, and keep that decision separate from where you run.

When does it make sense to move off Replit Deployments, and when should you stay?

Move a published Replit app to your own Kubernetes cluster when at least two of these seven signals are true: data must live in your cloud account, an auditor or customer needs evidence you cannot produce, the app has become several services, the database is heading for 100 GiB, steady traffic makes per-request billing expensive, engineers own the code in Git, or agents need governed access to production. With none of them, stay.

The seven signals, in the order I see them in practice:

  1. Data residency in your own account. Replit lets you pick a publishing geography (North America, Europe, Asia, South America, Australia), but the infrastructure is Replit's, and the geography cannot be changed after publishing (Replit docs: geography). An enterprise contract that says "in our AWS account, in eu-west-3, inside our VPC" needs something else.
  2. Audit evidence. Security questionnaires ask who deployed what, when, with which approval, and where the logs live. On Kubernetes in your account, you own the cloud audit trail, the cluster audit log and your CI history.
  3. More than one service. Agent-built apps start as one full-stack process. Growth adds a queue worker, a webhook receiver, a cron job, a second API. Replit models these as separate deployment types; Kubernetes models them as one environment.
  4. Database size and control. Each Replit production PostgreSQL database is limited to 100 GiB on paid plans (Replit docs: database billing). You also cannot pick extensions, replicas or maintenance windows the way you can on Amazon RDS, Cloud SQL or Azure Database for PostgreSQL.
  5. Steady traffic. Autoscale bills compute units while requests are served: 18 compute units per CPU-second and 2 per GB-second of memory (Replit docs). For spiky, low traffic that is great. For a busy API that never sleeps, a fixed node you already pay for, often under committed spend or credits, wins.
  6. Engineers own the code. Once the app lives in GitHub or GitLab with pull requests, code review and CI, a platform that deploys from Git and spins up a preview environment per pull request fits the workflow better than publishing from a workspace.
  7. Agents touching production. Replit already restricts its Agent to a read replica of production (Replit docs: development and production databases). When Claude Code, Cursor or Codex start deploying, you want scoped tokens, policies and an audit log on your side.

Stay on Replit when the app is an internal tool, a demo, a landing page with a form, or a product with a few hundred users built by people who do not want to think about infrastructure. Replit is very good at that job, and a Kubernetes cluster has a fixed cost floor (see below) that a small app does not justify.

SignalStay on Replit DeploymentsReplit Enterprise BYOC or Image ExportsYour own Kubernetes, DIYYour own Kubernetes via Qovery
Data must live in your cloud accountNo, Replit infrastructureYes, early access or private previewYesYes
Region change after go-liveNot possible after publishingDepends on onboardingYes, you control itYes, you control it
Multi-service app (API, workers, cron)Separate deployments per typeDepends on configurationYes, if you build the pipelineYes, one environment
PostgreSQL over 100 GiB, extensions, replicasNot availableYour cloud servicesYes, managed DB of your choiceYes, managed DB in your account
Preview environment per pull requestDeployment previews in ReplitNot documentedYes, you build itYes, built in
Who operates itReplitReplit in your tenant, or your team for Image ExportsYour platform teamQovery manages the cluster; you own the account
Best forPrototypes, internal tools, non-engineer buildersEnterprises already on Replit EnterpriseTeams with a platform engineerTeams without a dedicated DevOps engineer

A fair note on the third column. Replit's BYOC documentation describes three options for enterprises: Full BYOC (private preview), BYOC for Published Apps (early access), and Image Exports (early access), where "Publish" produces a Docker image, a Terraform file and an SBOM that your team deploys and operates. If you already pay for Replit Enterprise, ask for Image Exports first. It is the shortest path out.

What does it really cost to run the same app on your own Kubernetes cluster?

A Kubernetes cluster has a fixed floor before your first pod: Amazon EKS charges $0.10 per cluster per hour for the control plane, about $73 a month, plus the worker nodes (AWS EKS pricing). Moving one small app off Replit rarely saves money. The economics work when several apps share one cluster, or when cloud credits and committed spend already cover the nodes.

Compare that with what Replit charges for an always-on server today (Replit docs: publishing costs):

Replit Reserved VMPrice per month
Shared 0.5 vCPU / 2 GB$15
Dedicated 1 vCPU / 4 GB$35
Dedicated 2 vCPU / 8 GB$50
Dedicated 4 vCPU / 16 GB$130

Add the production database: compute time at $0.16 per compute hour, where a database counts as active while it receives requests and for 5 minutes after the last one, and storage at $0.35 per GiB per month after the August price cut (Replit docs).

Three conclusions:

  • One app, modest traffic: Replit is usually cheaper than a dedicated cluster. Do not migrate for cost alone.
  • Five apps, or one busy app with workers: the cluster floor amortises, and you pay your cloud provider's rates, including Savings Plans, committed use discounts and startup credits.
  • The hidden cost is people. A DIY cluster needs someone to upgrade Kubernetes, patch nodes, run ingress, certificates, autoscaling and observability. That is the cost Qovery removes, and the reason to compare "DIY" and "managed" as separate columns.

Cluster versions age out. On EKS, a version past its 14-month standard support window moves to extended support at $0.60 per cluster per hour (AWS EKS pricing). Whoever runs your cluster must keep upgrading it.

What do you have to replace when you leave Replit Deployments?

You replace six things: the source of truth for code, the runtime, the production PostgreSQL, App Storage, Replit Auth, and the deployment types themselves. Write all six down before you start. The teams that stall are the ones who migrated the code and discovered on cutover day that their users sign in with Replit accounts.

Replit componentWhat it does todayReplacement on your own KubernetesEffort
Workspace code and .replit run/build commandsSource of truth, run commandGit repository plus a DockerfileLow
Autoscale DeploymentScales servers with traffic, to zero when idleKubernetes Deployment, Service, Ingress, HorizontalPodAutoscalerLow
Reserved VM Deployment (web or background worker)Always-on serverDeployment with fixed replicas and resourcesLow
Scheduled DeploymentCron expression, runs then stopsKubernetes CronJobLow
Static DeploymentFiles on a CDNObject storage plus CDN, or a container serving filesLow
Production PostgreSQLServerless Postgres, DATABASE_URL per environmentAmazon RDS, Cloud SQL, Azure Database for PostgreSQL, Scaleway Managed DatabaseMedium
App StorageFiles and media, backed by Google Cloud StorageAmazon S3, Google Cloud Storage, Azure Blob Storage, Scaleway Object StorageMedium
Replit AuthUsers sign in with their Replit accountsClerk, Auth0, WorkOS, Keycloak, Better AuthHigh
SecretsWorkspace and deployment secretsSecrets manager or platform secrets per environmentLow
Custom domainManaged in the Publishing toolDNS record to your ingress or load balancerLow

Sources: deployment types, storage and databases, Replit Auth.

One code smell to hunt for: checks on REPLIT_DEPLOYMENT. Replit sets REPLIT_DEPLOYMENT=1 in published apps (Replit docs), and agent-written code sometimes branches on it to decide "am I in production?". Replace it with your own APP_ENV variable before you move anything.

How do you migrate a Replit app to Kubernetes, step by step?

Run the migration in six steps, in this order: Git, container, database, files, auth, cutover. Each step is testable on its own, and only the last one touches live users. A typical agent-built app with one service and one database moves in a few days of focused work. Auth decides the long tail.

Step 1: Get the code into Git

Connect the project to GitHub or GitLab from the Git pane and push the main branch (Replit docs: Git pane). From now on, the repository is the source of truth, not the workspace.

Check three files before moving on: .replit (your run and build commands), the lockfile for your language, and any replit.nix or system packages the app depends on. Those become your Dockerfile.

Step 2: Write a Dockerfile

Translate the run command from .replit into a container. Two rules carry most of the work: listen on 0.0.0.0, and read the port from the PORT environment variable rather than hardcoding it.

DOCKERFILE|Node.js example: adjust to your stack
FROM node:22-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:22-slim
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app ./
EXPOSE 8080
CMD ["npm", "run", "start"]

Run it locally with docker run -e PORT=8080 -e DATABASE_URL=... -p 8080:8080. If it works on your laptop against a copy of the database, it will work on Kubernetes.

Step 3: Move the production PostgreSQL

Dump the production database with pg_dump in custom format and restore it into a managed PostgreSQL in your account. pg_dump "makes consistent exports even if the database is being used concurrently" and does not block readers or writers, and the custom format is compressed and restorable item by item with pg_restore (PostgreSQL docs).

Be careful which URL you use. Both Replit databases use a variable called DATABASE_URL, but in the workspace and Shell it points to the development database, and only the published app gets the production one (Replit docs). Copy the production connection string from the Database tool, not from your Shell.

BASH|Dump production (connection string from the Replit Database tool, production database)
pg_dump "$REPLIT_PROD_DATABASE_URL" -Fc --no-owner --no-acl -f replit-prod.dump

# Restore into the managed PostgreSQL in your cloud account
pg_restore --no-owner --no-acl -d "$NEW_DATABASE_URL" replit-prod.dump

# Sanity check: compare row counts per table on both sides
psql "$NEW_DATABASE_URL" -c "SELECT relname, n_live_tup FROM pg_stat_user_tables ORDER BY relname;"

Two details from Replit's docs:

  • Publishing applies schema with drizzle-kit, and it does not copy functions, procedures, triggers, domains or grants to production (Replit docs). If your app relies on objects created by hand, check that they exist in the dump.
  • Pick a target version at least as new as the source and run ANALYZE after the restore so the planner has fresh statistics.

Match the managed database to your cloud: Amazon RDS or Aurora on AWS, Cloud SQL on GCP, Azure Database for PostgreSQL on Azure, Scaleway Managed Database on Scaleway.

Step 4: Move App Storage files

Replit App Storage is backed by Google Cloud Storage and supports the Replit SDKs and GCS client libraries (Replit docs). Write a one-off script with the App Storage SDK that lists every object and uploads it to your bucket, keeping the same object keys so stored URLs and database references still resolve.

Then swap the client in your code from the Replit SDK to your provider's SDK (S3, GCS, Azure Blob). If your files are already on GCS and you land on GCP, this step is mostly a copy.

Step 5: Move users off Replit Auth

Replit Auth lets users sign in with their Replit accounts, with zero setup (Replit docs). That convenience is the strongest lock-in in the whole stack, because your user table is keyed to identities Replit issues.

Do this step while you are still on Replit. Replit documents a path to move an existing Replit Auth app to Clerk Auth while preserving user data (Replit docs: migrate to Clerk). Once users sign in through an identity provider you control (Clerk, Auth0, WorkOS, Keycloak or your own), the app is portable. If you skip it, every user has to sign up again on cutover day.

Step 6: Deploy on Kubernetes and cut over

Map each Replit deployment type to its Kubernetes object, deploy to a staging environment, then cut over DNS.

  • Autoscale becomes a Deployment plus a HorizontalPodAutoscaler. The HPA scales pods on CPU, memory or custom metrics (Kubernetes docs). It does not scale to zero by default, so a quiet app keeps at least one replica.
  • Reserved VM background workers become Deployments with no Service.
  • Scheduled Deployments become CronJobs. Set concurrencyPolicy: Forbid unless overlapping runs are safe, because the default allows them (Kubernetes docs).

The cutover runbook I use:

  1. Lower the DNS TTL on your custom domain to 60 seconds, 48 hours ahead.
  2. Run the full stack on Kubernetes against a restored copy of production for a few days. Fix what breaks.
  3. Announce a short write freeze. Put the Replit app in maintenance mode.
  4. Take a final pg_dump, restore, compare row counts, sync any new App Storage objects.
  5. Point DNS at the new ingress. Watch error rates and logs for an hour.
  6. Keep the Replit deployment and its database for a week as a rollback path, then shut them down.
Keep building fast. Run production in your own cloud.
Qovery deploys your app, workers, cron jobs and a managed PostgreSQL on Kubernetes in your own AWS, GCP, Azure or Scaleway account, or your existing cluster, without a dedicated DevOps engineer.

Where should the new stack run, and do you need a Kubernetes team for it?

Run it in your own cloud account, on the cloud your company already buys from: AWS, GCP, Azure or Scaleway, or an existing cluster your company runs. You do not need a Kubernetes team if a platform operates the cluster for you, and that is the gap Qovery fills.

Qovery is an Agentic DevOps platform: the control plane is ours, and the data plane, meaning your cluster, your apps and your data, stays in your cloud account. Qovery never hosts your app. Concretely, after the migration you get:

  • Git-push deployments from GitHub, GitLab or Bitbucket, with the Dockerfile from step 2.
  • A preview environment per pull request, cloned from your environment, so every agent-written change gets a full-stack URL before it merges.
  • Managed databases in your account, for example Amazon RDS through Blueprints, or a container database for previews.
  • Services, workers and cron jobs in one environment, plus Helm charts and Terraform or OpenTofu services when you need them.
  • RBAC, audit logs and OPA-based policy tokens that scope what an agent can do (Qovery blog: OPA).
  • Bring your own cluster: if you already run EKS, GKE, AKS, Kapsule, k3s or an on-premise cluster on Kubernetes 1.31 or later, install the Qovery agent on it instead of creating a new one (Qovery docs).

The Free plan covers 3 users, unlimited AI agents and one cluster of your own, which is enough to run the whole migration on a staging cluster before you commit.

If you want a broader view of the options before choosing, I compared Railway, Render and your own cloud account for scaleups, and wrote about why Lovable, Bolt and Replit apps worry CISOs. For a database-heavy migration, the same phased approach appears in our guide to moving off Convex to Postgres on Kubernetes.

How do I run this migration with Qovery from Claude Code or Cursor?

Install the Qovery Agent Skills once, and your coding agent can write the Dockerfile, provision the database and deploy the app into your own cloud account while you approve each step. The Qovery MCP Server operates what already exists and is read-only by default.

  1. Install the skills globally for Claude Code, Cursor, Codex, OpenCode and Gemini CLI. The script asks before it writes anything to your machine.
BASH
curl -fsSL https://skill.qovery.com/install.sh | bash
  1. Or scope them to the repository you just exported from Replit:
BASH
curl -fsSL https://skill.qovery.com/install.sh | bash -s -- --project
  1. Add the Qovery MCP Server to Claude Code. It opens an OAuth login in your browser and is read-only by default:
BASH
claude mcp add --transport http qovery https://mcp.qovery.com/mcp --callback-port 4242
  1. Only if you want the agent to change things through MCP, add the write-enabled server. This also requires turning on write access in the Qovery Console:
BASH
claude mcp add --transport http qovery "https://mcp.qovery.com/mcp?read_write=true" --callback-port 4242

The skills include qovery-onboard, qovery-deploy, qovery-troubleshoot, qovery-optimize, qovery-speedup, qovery-preview and qovery-terraform. Then ask in plain language: "This app came from Replit. Write a Dockerfile, deploy it with a managed PostgreSQL to my AWS account with Qovery, and create a preview environment per pull request." The agent asks you to approve every action. Swap AWS for GCP, Azure, Scaleway or your existing cluster; nothing in these commands is AWS-specific.

Run the database dump and the Replit Auth migration yourself. Those two steps touch real user data, and I want a human holding them.

Start with the AI agent quickstart or the Claude Code integration.

Frequently asked questions
Replit tightened its Core and Pro plan limits in late October 2026. Should I move off Replit Deployments?

Not because of that change alone. The late-October update removed Plan mode from Core and the 10 parallel agents and 50 viewer invites from Pro, which affects building, not hosting, and Replit's deployment prices dropped in August 2026. Move to your own Kubernetes cluster when production needs push you: data in your own cloud account, audit evidence, several services, a database heading for 100 GiB, or engineers owning the code in Git.

How do I export my production database from Replit?

Copy the production connection string from the Replit Database tool, then run pg_dump -Fc --no-owner --no-acl against it and restore with pg_restore into a managed PostgreSQL in your account. Do not use the DATABASE_URL from the workspace Shell, because it points to the development database. Compare row counts per table after the restore and run ANALYZE.

What replaces Replit Autoscale, Reserved VM and Scheduled deployments on Kubernetes?

Autoscale becomes a Deployment with a Service, an Ingress and a HorizontalPodAutoscaler. A Reserved VM becomes a Deployment with fixed replicas, without a Service if it is a background worker. A Scheduled Deployment becomes a Kubernetes CronJob, ideally with concurrencyPolicy: Forbid.

Is running my own Kubernetes cluster cheaper than Replit?

For one small app, usually not. Amazon EKS alone costs $0.10 per cluster per hour, about $73 a month, before nodes, while a dedicated 2 vCPU / 8 GB Replit Reserved VM is $50 a month. Your own cluster wins when several apps share it, traffic is steady, or cloud credits and committed spend cover the nodes.

Can I keep building with Replit Agent and deploy to my own cloud?

Yes. Connect the project to GitHub or GitLab and keep using Replit, Claude Code or Cursor to write code, while a platform deploys from the repository into your cloud account. Replit Enterprise also offers BYOC for published apps and Image Exports in early access. Otherwise, Qovery deploys from Git into your own AWS, GCP, Azure or Scaleway account.

Do I need a DevOps engineer to run a former Replit app on Kubernetes?

Not if a platform operates the cluster. Qovery creates and upgrades the cluster in your own cloud account, deploys from Git, runs workers and cron jobs, and gives every pull request a preview environment. A DIY setup with raw Kubernetes, Helm and Argo CD is the alternative when you already have a platform team.

Romaric Philogene
About the author
Romaric Philogene

Romaric founded Qovery to make Kubernetes accessible to every engineering team. He writes about platform strategy, developer experience, and the future of cloud infrastructure.

Next step

Keep building fast. Run production in your own cloud.

Qovery deploys your app, workers, cron jobs and a managed PostgreSQL on Kubernetes in your own AWS, GCP, Azure or Scaleway account, or your existing cluster, without a dedicated DevOps engineer.