# Exodus by elim.io > Exodus and your coding agent audit your app, show its cost today and on Google Cloud Run, and move it there step by step, or plan a new product for it. Free. ## Pages - [Stairway to Cloud Run · Exodus by elim.io](https://exodus.elim.io/index.md): Exodus and your coding agent audit your app, show its cost today and on Google Cloud Run, and move it there step by step, or plan a new product for it. Free. - [Google Cloud Run guides · Exodus by elim.io](https://exodus.elim.io/blog.md): Guides to Google Cloud Run in plain numbers: what it is, what it costs, what breaks, and how to move an app from Heroku, Railway, Render or Fly. - [Privacy Policy · Exodus by elim.io](https://exodus.elim.io/privacy.md): What personal data Exodus collects, why, who handles it, where it is kept, for how long, and your rights. Exodus never receives your source code. - [Terms of Use · Exodus by elim.io](https://exodus.elim.io/terms.md): The terms of the free Exodus service: your agent changes your code and you decide what ships, your Google Cloud bill is yours, the CLI is Apache-2.0. - [About Exodus · Exodus by elim.io](https://exodus.elim.io/about.md): Exodus is free: with your coding agent it audits an app, compares its cost today and on Google Cloud Run, and moves it there. Made by elim.io. ## Example - [See a sample report](https://exodus.elim.io/demo): a real Exodus report, read only and without sign-in: what an app costs today and on Google Cloud Run, what has to change and in what order, with the first steps of its plan done ## Topics - [Cloud Run basics](https://exodus.elim.io/blog/topic/basics.md): What Cloud Run is, the three shapes code takes there, regions, concurrency, buildpacks or a Dockerfile, and a Google Cloud project for a small team. - [Cloud Run compared with other platforms](https://exodus.elim.io/blog/topic/compare.md): Cloud Run next to a VPS, DigitalOcean, Netlify and AWS, and the databases a Cloud Run app can use, with prices and what each choice leaves out. - [Databases and data on Cloud Run](https://exodus.elim.io/blog/topic/data.md): Cloud SQL, Firestore and Postgres for a Cloud Run app: choosing one, connecting, pooling, migrations, backups, files in Cloud Storage and Redis. - [From a server to Cloud Run](https://exodus.elim.io/blog/topic/from-a-server.md): Moving an app from a VPS, a Compute Engine VM or a Docker Compose setup to Cloud Run: what each process becomes, the commands and both bills. - [From AWS to Cloud Run](https://exodus.elim.io/blog/topic/from-aws.md): Moving from AWS Lambda, App Runner, ECS on Fargate or a small AWS web app to Cloud Run: what each service becomes, the commands and both bills. - [From Fly.io to Cloud Run](https://exodus.elim.io/blog/topic/from-fly.md): Moving an app from Fly.io to Cloud Run: machines, volumes, Postgres and secrets mapped to Google Cloud, the order of the move and both bills. - [From Heroku to Cloud Run](https://exodus.elim.io/blog/topic/from-heroku.md): Moving a Heroku app to Cloud Run: dynos, add-ons, Postgres, Redis and the scheduler mapped to Google Cloud, the commands and both bills. - [From Railway to Cloud Run](https://exodus.elim.io/blog/topic/from-railway.md): Moving a Railway project to Cloud Run: services, databases, cron and variables mapped to Google Cloud, the order of the move and both bills. - [From Render to Cloud Run](https://exodus.elim.io/blog/topic/from-render.md): Moving a Render app to Cloud Run: web services, workers, cron jobs and Postgres mapped to Google Cloud, the order of the move and both bills. - [From Vercel to Cloud Run](https://exodus.elim.io/blog/topic/from-vercel.md): Moving a Next.js app from Vercel to Cloud Run: the standalone build, images, caching, cron and environment variables, and both bills. - [Planning a new product on Cloud Run](https://exodus.elim.io/blog/topic/new-product.md): Planning a new product on Cloud Run before the first line of code: SaaS tenants, an AI agent backend, Stripe webhooks and the bill as it grows. - [Running an app on Cloud Run](https://exodus.elim.io/blog/topic/operations.md): Running a Cloud Run app: IAM, secrets, deploys from GitHub, domains, logs and alerts, revisions and rollbacks, backups, budgets, cutover day. - [Patterns that break on Cloud Run](https://exodus.elim.io/blog/topic/patterns.md): What breaks when an app moves to Cloud Run and what replaces it: workers, cron, work after the response, files, sessions, WebSockets, Redis. - [Cloud Run performance and cold starts](https://exodus.elim.io/blog/topic/performance.md): How fast Cloud Run starts and serves: cold starts measured, minimum instances, startup CPU boost, concurrency, connection pools, GPUs, Rust. - [What Cloud Run costs](https://exodus.elim.io/blog/topic/pricing.md): What Cloud Run costs, line by line: the free tier, request or instance billing, egress, Cloud SQL, regions, budgets and the first bill. - [Your stack on Cloud Run](https://exodus.elim.io/blog/topic/stacks.md): Getting Node, Python, Rails, Go and Rust apps into a Cloud Run container: buildpacks or a Dockerfile, the build, the start and each stack's traps. ## Guides ### Basics - [Buildpacks or a Dockerfile: how to get your code into a Cloud Run container](https://exodus.elim.io/blog/buildpacks-or-a-dockerfile.md): One command builds your Cloud Run container with Google's buildpacks or your own Dockerfile. What each does, what it costs, who patches the OS, what breaks, and the commands for both. - [Choosing a Cloud Run region: latency, price tiers and what each region has](https://exodus.elim.io/blog/choosing-a-cloud-run-region.md): A Cloud Run service lives in the region of its first deploy. What that decides (latency, a 20 to 40% price gap, nearby products, where data stays), how to measure it, and how to move later. - [Cloud Run services, jobs and worker pools: which shape your code takes](https://exodus.elim.io/blog/cloud-run-services-jobs-and-worker-pools.md): Cloud Run runs a container as a service, a job, a worker pool or a Preview singleton. What each is, how it bills, the commands, and which one each part of a PaaS app becomes. - [Concurrency on Cloud Run: how many requests one instance takes](https://exodus.elim.io/blog/concurrency-on-cloud-run.md): One setting decides how many requests share a Cloud Run instance. What it limits, how the autoscaler reads it, why your web server decides the real number, and its effect on the bill and database. - [Setting up a Google Cloud project for a small team](https://exodus.elim.io/blog/setting-up-a-google-cloud-project-for-a-small-team.md): The first hour on Google Cloud in order: organization, billing account, a project per environment, budget and cap, APIs, group roles, keyless service accounts, contacts. Costs and traps. - [What Cloud Run is, for someone who has never used it](https://exodus.elim.io/blog/what-cloud-run-is.md): Cloud Run runs your container and bills for the seconds it works. What it runs, its three shapes, how it bills, what changes in your code, cold starts, what it does not do, a first deploy. ### Compare - [Cloud Run or a VPS: which one costs less](https://exodus.elim.io/blog/cloud-run-or-a-vps.md): A VPS bills the month; Cloud Run bills the seconds your code runs. Worked prices for a small app, a busy one and a steady one, and what each price leaves out: database, egress, disk, your time. - [Moving a Netlify site to Firebase Hosting and Cloud Run](https://exodus.elim.io/blog/netlify-to-cloud-run.md): A Netlify site moves to Firebase Hosting for files and one Cloud Run service for code. An adapter for unchanged functions, _redirects as firebase.json, schedules, secrets, the domain, both bills. - [Moving an app from DigitalOcean App Platform to Cloud Run](https://exodus.elim.io/blog/digitalocean-app-platform-to-cloud-run.md): App Platform bills each container all month with a traffic allowance; Cloud Run bills while requests run. What each part of the app spec becomes, the commands, and the bill on both sides. ### Data - [Backups and point-in-time recovery on Cloud SQL: the defaults, getting a table back, and settings to check on day one](https://exodus.elim.io/blog/backups-and-point-in-time-recovery-on-cloud-sql.md): What a new Cloud SQL instance backs up by default, the four settings to change, how a restore and a point-in-time clone work, a copy that outlives the instance, and what it costs. - [Cloud SQL, Firestore or a serverless Postgres: choosing the database for a Cloud Run app](https://exodus.elim.io/blog/cloud-sql-firestore-or-serverless-postgres.md): The database sets the floor of a Cloud Run bill: Cloud SQL from $9.37 a month, Firestore per document, or a serverless Postgres on another cloud. Costs, connections and code for each. - [Connecting Cloud Run to Cloud SQL: the /cloudsql socket, connectors, private IP and the errors of the first deploy](https://exodus.elim.io/blog/connecting-cloud-run-to-cloud-sql.md): Three ways from Cloud Run to Cloud SQL: the /cloudsql socket, a connector library, or a private IP. The commands, the connection string, the cost, and the errors of the first deploy. - [Connection pooling on Cloud Run: sizing the pool, Cloud SQL's 25 connections, PgBouncer or Managed Connection Pooling](https://exodus.elim.io/blog/connection-pooling-on-cloud-run.md): Each Cloud Run instance opens its own pool, and the smallest Cloud SQL machine takes 25 connections. How to size pools per framework, and when to use Managed Connection Pooling or PgBouncer. - [Moving a Postgres database to Cloud SQL without losing data: rehearse, compare, freeze, copy](https://exodus.elim.io/blog/moving-a-postgres-database-without-losing-data.md): A dump and restore moves a small Postgres in minutes and loses rows written meanwhile unless writes stop. The order that keeps a way back, Cloud SQL's flags, proving both sides match. ### From a server - [Moving a Docker Compose app to Cloud Run](https://exodus.elim.io/blog/docker-compose-to-cloud-run.md): gcloud run compose up puts a whole compose.yaml in one Cloud Run instance, fine for a demo and wrong for production. How to split it into a service, a worker pool, Cloud SQL and Cloud Storage. - [Moving from a Compute Engine VM to Cloud Run](https://exodus.elim.io/blog/compute-engine-vm-to-cloud-run.md): An app on Compute Engine is already on Google Cloud; only the machines go. What changes for the image, account, network and disks, a weighted switch behind one load balancer, and when a VM is cheaper. - [Moving from a VPS to Cloud Run](https://exodus.elim.io/blog/a-vps-to-cloud-run.md): A VPS runs nginx, the app, Postgres, cron and uploads on one machine. What each piece becomes on Cloud Run, the commands, what breaks, and why the bill usually goes up while the work goes down. ### From AWS - [Moving a small web app from AWS to Cloud Run](https://exodus.elim.io/blog/from-aws-to-cloud-run.md): App Runner takes no new customers, Lambda needs an adapter and Fargate bills all month. What each AWS piece becomes on Google Cloud, a small app's cost on each side, and the move in six steps. - [Moving from AWS Lambda or App Runner to Cloud Run](https://exodus.elim.io/blog/aws-lambda-to-cloud-run.md): Lambda bills each request; Cloud Run bills an instance that takes many at once, and App Runner closed to new customers in April 2026. What each piece becomes, with commands and both bills. - [Moving from ECS on Fargate to Cloud Run](https://exodus.elim.io/blog/ecs-fargate-to-cloud-run.md): Fargate bills tasks every second behind an hourly load balancer; Cloud Run runs the same image and scales to zero. What each part of a task definition becomes, the commands, and both bills. ### From Fly - [Moving an app from Fly.io to Cloud Run](https://exodus.elim.io/blog/fly-to-cloud-run.md): Fly.io runs your Dockerfile on VMs you size and count; Cloud Run runs the same image and counts for you. What each part of fly.toml becomes, secrets, volumes, Postgres, the domain, and both bills. ### From Heroku - [Moving from Heroku to Cloud Run](https://exodus.elim.io/blog/heroku-to-cloud-run.md): What each part of a Heroku app becomes on Google Cloud, the order of the move, the commands for each part, what it costs on both sides, what breaks, and the same map for Railway, Render and Fly. ### From Railway - [Moving from Railway or Render to Cloud Run](https://exodus.elim.io/blog/railway-or-render-to-cloud-run.md): Railway and Render projects map to Google Cloud piece by piece. What each part becomes, the commands, the cost on each side, the order of the move, and when staying is the better answer. ### From Vercel - [Moving a Next.js app from Vercel to Cloud Run](https://exodus.elim.io/blog/vercel-to-cloud-run.md): Vercel builds, caches, schedules and previews a Next.js app; on Cloud Run each is a piece you set up once. When the move pays, the container, secrets, cron, previews, the domain, and both bills. ### New product - [A SaaS architecture on Cloud Run: tenants, sign-in, data, domains, and the bill as it grows](https://exodus.elim.io/blog/a-saas-architecture-on-cloud-run.md): A SaaS product on Cloud Run: one service and one database, a tenant id on every row under Postgres row security, sign-in, customer domains, and the bill at 5, 50 and 500 customers. - [An AI agent backend on Cloud Run: the loop, the stream, the state, and the bill](https://exodus.elim.io/blog/an-ai-agent-backend-on-cloud-run.md): An AI agent's backend on Cloud Run: the model-and-tools loop as a streaming service, sessions in Firestore, keyless access, tools as MCP servers, and why tokens are most of the bill. - [Planning a new product for Cloud Run before you write it](https://exodus.elim.io/blog/planning-a-new-product-for-cloud-run.md): The decisions to make before writing a product for Cloud Run: where state lives, the database, background work, payments, live updates, the region, and the bill at launch, in a year and busy. ### Operations - [Custom domains and HTTPS on Cloud Run: domain mapping, a load balancer or Firebase Hosting, DNS and the certificate](https://exodus.elim.io/blog/custom-domains-and-https-on-cloud-run.md): Your own domain on Cloud Run through domain mapping, a load balancer or Firebase Hosting: the cost, DNS records, certificate wait and limits of each, and the traps in DNS caches, CAA and proxies. - [Deploying to Cloud Run from GitHub without keys: Workload Identity Federation step by step](https://exodus.elim.io/blog/deploying-from-github-without-keys.md): GitHub Actions can deploy to Cloud Run with a per-run token instead of a JSON key. The pool, provider, deployer account, roles and workflow of Workload Identity Federation, and the errors you meet. - [IAM for a Cloud Run app: who may call it, what it may touch, who may deploy it](https://exodus.elim.io/blog/iam-for-a-cloud-run-app.md): IAM decides who may call a Cloud Run service, what its code may touch and who may deploy it. The roles, public or private, service-to-service calls, an account per service, and deploy rights. - [Logs, metrics and alerts for a Cloud Run app: what you get for free and the three alerts to set up](https://exodus.elim.io/blog/logs-metrics-and-alerts-for-a-cloud-run-app.md): Cloud Run sends requests, logs and metrics to Google Cloud with no setup. The log format Google reads, where to look, three alerting policies as files, and what each part costs. - [Revisions, traffic splitting and rollbacks on Cloud Run: release to 5% first, go back with one command](https://exodus.elim.io/blog/revisions-traffic-splitting-and-rollbacks.md): Every Cloud Run deploy makes a revision that never changes. Rollbacks without a rebuild, a release to 5% first, tagged test URLs, the trap that leaves a deploy at 0%, and what a rollback misses. - [Secrets on Cloud Run: Secret Manager as variables or files, who can read them, and rotating a key without an outage](https://exodus.elim.io/blog/secrets-on-cloud-run.md): Secret Manager hands secrets to Cloud Run as variables, files or through a client. How each behaves on change, who needs which role, why build arguments leak, rotating a key in five steps. - [The cutover day checklist: moving traffic to Cloud Run with the old app as the way back](https://exodus.elim.io/blog/the-cutover-day-checklist.md): The day traffic moves to Cloud Run, step by step from a week before to a week after: the DNS TTL, freeze, copy, compare and switch, checks from outside, the way back, and the overlap's cost. ### Patterns - [Background workers on Cloud Run: Cloud Tasks or a worker pool](https://exodus.elim.io/blog/background-workers-with-cloud-tasks.md): A worker waiting on a Redis queue stalls or bills all day on Cloud Run. How to turn each job into a Cloud Tasks request, with retries, rate limits, costs, and when a worker pool fits better. - [Cron and timers on Cloud Run: Cloud Scheduler and jobs](https://exodus.elim.io/blog/cron-and-timers-with-cloud-scheduler.md): In-process timers do not fire on an idle Cloud Run app and fire twice on two instances. How to move each to Cloud Scheduler: endpoint or job, service account, run-once handlers, time zones, cost. - [Database migrations on Cloud Run: run them as a job, before the deploy](https://exodus.elim.io/blog/database-migrations-as-cloud-run-jobs.md): Cloud Run has no release phase. How to run migrations as a Cloud Run job with the new image before the deploy, write migrations the old revision survives, and pay about a tenth of a cent a run. - [Do you still need Redis on Cloud Run? Each job it does, what replaces it, and what it costs if it stays](https://exodus.elim.io/blog/do-you-still-need-redis-on-cloud-run.md): A PaaS Redis collects sessions, cache, queue, rate limits and locks; on Cloud Run it is Memorystore billed every hour. How to move each job to Postgres or Cloud Tasks, and when Redis stays. - [Files and uploads on Cloud Run: from disk to a Cloud Storage bucket](https://exodus.elim.io/blog/files-and-uploads-with-cloud-storage.md): A Cloud Run instance's disk is memory and dies with the instance. How to move uploads to Cloud Storage with signed URLs, serve downloads, move existing files, and what it costs. - [Health checks on Cloud Run: startup, liveness and readiness probes, and what the default one misses](https://exodus.elim.io/blog/health-checks-and-startup-probes.md): Every Cloud Run service gets one TCP check you never set. What it misses, how startup, liveness and readiness probes work, the endpoint behind them, reading results in logs, and the cost. - [Long requests on Cloud Run: every timeout in the chain, and where long work goes](https://exodus.elim.io/blog/long-requests-and-timeouts.md): A Cloud Run request ends at 5 minutes, 60 at most, and other clocks sit on the way. Which one ends a request, how to find slow ones, and when to raise, stream, or hand the work to a task or job. - [Sessions on Cloud Run without Redis: signed cookies and the database you have](https://exodus.elim.io/blog/sessions-without-redis.md): In-memory sessions log people out on Cloud Run. How to use signed cookies with keys in Secret Manager, log out everywhere with one column, when a database table fits, and when Redis is worth it. - [Stripe webhooks on Cloud Run: verify, record, queue, answer, and never charge twice](https://exodus.elim.io/blog/stripe-webhooks-on-cloud-run.md): Stripe webhooks on Cloud Run: verify the signature, record the event id, queue a named Cloud Task, answer 200; a private worker does each event once. The traps, catching up after an outage, the cost. - [The patterns that break on Cloud Run, and their replacements](https://exodus.elim.io/blog/patterns-that-break-on-cloud-run.md): Queue workers, work after the response, timers, files on disk, in-memory sessions and open connections: why each breaks on Cloud Run, how to find it, what replaces it and what that costs. - [WebSockets and server-sent events on Cloud Run: timeouts, reconnects, fan-out and the bill](https://exodus.elim.io/blog/websockets-and-sse-on-cloud-run.md): On Cloud Run every open WebSocket or SSE connection is a request: it ends at the timeout, keeps its instance billed, and sees one instance. Timeouts, reconnects, fan-out through Postgres, the cost. - [Work after the response on Cloud Run: why it stalls and the four ways out](https://exodus.elim.io/blog/work-after-the-response.md): Code that runs after the response gets almost no CPU on a request-billed Cloud Run service. How to find it, and when to finish it in the request, use Cloud Tasks or Pub/Sub, or pay per instance. ### Performance - [GPUs on Cloud Run: running your own model, what it costs, and where the start goes](https://exodus.elim.io/blog/gpus-on-cloud-run.md): Cloud Run attaches an NVIDIA L4 or RTX PRO 6000 to an instance and scales it to zero. What a deploy needs, a sample model image we built and timed, where the cold start goes, and the cost. - [How fast Cloud Run wakes up: cold starts, measured](https://exodus.elim.io/blog/cloud-run-cold-start-measured.md): An idle Cloud Run app stops, and the next visitor waits for a start. What a study across eight platforms measured, what 703 of our own starts took, and how to measure and shorten yours. - [Minimum instances and startup CPU boost: what a cold start costs, and what it costs to skip it](https://exodus.elim.io/blog/min-instances-and-startup-cpu-boost.md): Startup CPU boost makes every start faster for a fraction of a cent; a minimum instance skips the wait for about $8 to $10 a month. How each works, how to measure first, the costs and the traps. ### Pricing - [Budget alerts and the billing export](https://exodus.elim.io/blog/budget-alerts-and-the-billing-export.md): Google Cloud has no spending limit unless you set one. How budgets and alerts work, what a Pub/Sub budget message can do, spend caps, and the BigQuery billing export read with three queries. - [Egress on Google Cloud, explained](https://exodus.elim.io/blog/egress-on-google-cloud-explained.md): Google Cloud egress: free in, free inside a region, $0.02 to $0.08 per GiB between regions, about $0.105 to users in Europe and North America. When a load balancer or CDN lowers the bill. - [Reading your first Google Cloud bill](https://exodus.elim.io/blog/reading-your-first-google-cloud-bill.md): A first Google Cloud bill is a statement that arrives after the charge, with many $0.00 lines. How it is built, when you are charged, how to check a line yourself, and what credits are. - [Request-based or instance-based billing on Cloud Run: which one to pick](https://exodus.elim.io/blog/request-based-or-instance-based-billing.md): A Cloud Run service bills only while it handles requests, or for every second an instance lives. What each charges for, what the CPU does between requests, where costs cross, and how to switch. - [The Cloud Run free tier, explained: what is free, how far it goes, what ends it](https://exodus.elim.io/blog/the-cloud-run-free-tier-explained.md): Cloud Run gives each billing account $4.32 of CPU, $0.90 of memory and 2 million requests a month. What that buys, who shares it, what quietly uses it up, and how to read what is left. - [The smallest Cloud SQL instances and what they cost](https://exodus.elim.io/blog/cloud-sql-smallest-instances-and-what-they-cost.md): Cloud SQL's cheapest machines, from $7.67 to $184.69 a month, priced with storage, backups, HA and the charges people miss. Which to choose, how to create it, how to read its cost. - [What Cloud Run costs at 100 thousand, 1 million, 10 million and 100 million requests a month](https://exodus.elim.io/blog/cloud-run-costs-worked-examples-by-traffic.md): One web app priced line by line at 100 thousand to 100 million requests a month: Cloud Run, database, egress, logs, images, every assumption written down, and how to check the prices yourself. - [What Cloud Run costs, with worked examples](https://exodus.elim.io/blog/what-cloud-run-costs.md): Google's list prices for Cloud Run and the services around it, the free tier, a small app priced line by line, the case where Cloud Run costs more, and how to check every price yourself. ### Stacks - [Node, Python, Rails and Go on Cloud Run: the container and the traps of each stack](https://exodus.elim.io/blog/node-python-rails-and-go-on-cloud-run.md): The container each of Node, Python, Rails and Go needs on Cloud Run, and the traps we reproduced: dropped requests on shutdown, one-at-a-time gunicorn, port 80, and Go's CPU count. - [Rust on Cloud Run: the container, the build, the first second, and the bill](https://exodus.elim.io/blog/rust-on-cloud-run.md): How we run Rust on Cloud Run: $PORT and SIGTERM, a two-stage Dockerfile for an 11 MB image, where to compile, why 256 MiB means the first generation, start times, and three setups' bills. ## Optional - [All guides in full](https://exodus.elim.io/llms-full.txt): every guide on this site as one Markdown file, newest first, with its dates and sources. - [Guides feed](https://exodus.elim.io/blog/rss.xml): RSS 2.0, every guide with its summary, tags and publication date. - [Sitemap](https://exodus.elim.io/sitemap.xml): every HTML page with its last change date.