# Stairway to Cloud Run · 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.

<https://exodus.elim.io/>

## Stairway to Cloud Run

Free, with your coding agent

Exodus and your coding agent audit your app, show what it costs today and on Google Cloud Run, and move it there step by step. Or plan a new product for Cloud Run from scratch.

- [Sign up for free](https://app.exodus.elim.io/login)

The Exodus app showing Report 1 of lumen-api: it can move to Cloud Run after 4 changes, $48.00 a month on Railway against $10.83 on Cloud Run. Around it, Claude Code's terminal after the audit, the bill before and after, and the service running on Cloud Run.

## Launch or move your app to Google Cloud, fast

- **Move an app** Google Cloud Run; From Heroku, Railway, Render, Fly.io, Vercel or your own server. You see the bill there and on Cloud Run, and what changes on the way.; lumen-api, a month; $48.00; $10.83; after 4 changes
- **Design the architecture of a new app** Tell your agent the idea. Exodus designs how it runs on Cloud Run: the services, the database, the stack and the bill at launch.; You; A booking app for yoga studios: class schedules, Stripe payments, email reminders.; Exodus; Rust; React; Firestore; Stripe; Cloud Run service; Firestore; Cloud Scheduler; $0.60; a month at launch, an estimate

Hand one prompt to your coding agent. Exodus gives it the stairs to Cloud Run, on Google's own infrastructure, whether the app runs today or is still an idea.

## You install once, your agent does the rest

- **Install once** Run it in your terminal, once per machine.; curl -fsSL exodus.elim.io/install | sh; Copy; Once per machine
- **Give this to your agent** Sign in with Google, copy the prompt into your agent, and it audits the app on your machine.; Auditing lumen-api: 41 of 120 files
- **Check the report, then move** Check the bill and the changes, and the agent moves the app.; Move lumen-api after 4 changes; $48.00; $10.83; Move to Cloud Run

## Cloud Run has its own approach, and Exodus knows it

lumen-api

- **As it runs today** $48.00; Railway's bill, one total; On Railway: the web, worker and clock processes run every hour beside Postgres, Redis and a volume. The bill gives one total, so no part has a price of its own.
- **Designed for Cloud Run** $10.83; $37.17 a month less than today; Rebuilt for Cloud Run, each part runs only when there is work, and Redis is no longer needed.

lumen-api, a month

$48.00

- **web** Axum web process; Always on, on Railway; Cloud Run service; Billed per request, scales to zero; $0.00
- **worker** worker process; Waits on Redis, always on; Cloud Tasks; One request per job; $0.00
- **clock** clock process; 3 timers, always on; Cloud Scheduler; Starts a job on time; $0.00
- **Redis** The job queue and the sessions; Signed cookies; Sessions travel with the browser; $0.00
- **uploads** Files on Railway's disk; A volume on the service; Cloud Storage bucket; Uploads go straight from the browser; $0.02
- **Postgres** PostgreSQL; On Railway; Cloud SQL; The same instance, unchanged; $9.37

On Cloud Run, traffic out is $1.44 a month; builds and secrets fit the free tier.

The four changes Exodus found in lumen-api

- **A worker waits on a Redis queue** src/bin/worker.rs:14; Cloud Tasks; Cloud Run gives a copy CPU only while it answers a request, so a tokio loop waiting on Redis stalls, or under instance billing is paid for all month.; Each job becomes a POST to /tasks/<name>, an axum route on the same service, and the queue takes over retries and rate limits.; $0.00 on Cloud Run
- **Timers in a clock process** src/bin/clock.rs:12; Cloud Scheduler; Copies stop when idle and several can run at once, so a timer inside one fires late, never, or twice.; Cloud Scheduler starts a Cloud Run job at the same three times.; $0.00 on Cloud Run
- **Sessions kept in Redis** src/app.rs:27; Signed cookies; Once the queue leaves, sessions are Redis's only job, and Memorystore bills every hour, busy or not.; axum-extra's SignedCookieJar signs the session into a cookie, with its key in Secret Manager.; $0.00 on Cloud Run: Redis goes
- **Uploads written to local disk** src/routes/upload.rs:41; A Cloud Storage bucket; A copy's disk lives in its memory and is gone when the copy stops, and other copies never see it.; The browser puts the file straight into the bucket through a signed URL, and the service keeps only its key.; $0.02 on Cloud Run

Today is lumen-api's Railway bill as the sample report shows it, one total. Cloud Run is the report's estimate at Google's list prices in Belgium as of October 2026, for 1,200 visitors a day.

## Exodus maps the whole move, and your agent makes it

- **Verdict** You can move lumen-api to Cloud Run after 4 changes.; **Railway today** $48.00; **On Cloud Run** $10.83; **Saved a year** $446.04
- **Cost** Visitors a day; 1,200; **Belgium** $10.83; **London** $12.32; **Iowa** $10.81; **Singapore** $12.70; The next 12 months, +5% a month
- **What to change** **A worker waits on a Redis queue** src/bin/worker.rs:14; Must change; **Timers in a clock process** src/bin/clock.rs:12; Must change; **Uploads written to local disk** src/routes/upload.rs:41; Must change; **Sessions kept in Redis** src/app.rs:27; Bills idle
- **Plan** 4 of 9 done; **Dockerfile and a health route**; **Cron to Cloud Scheduler**; **Uploads to a bucket**; **Worker to Cloud Tasks**; **Sessions to signed cookies** Next

- **Private until you share it.** A link opens it read-only, and you can take the link back.
- **Markdown and JSON.** For your team, your agent or the repository.
- **Every version kept.** A new report says what changed since the last one.

## Works with the agent and the language you already use

- **Any agent** Exodus is a command line your agent runs, so it works with the one you already use. It brings the instructions each agent reads.
- **Any code** Anything that runs in a container runs on Cloud Run. Exodus picks the build for your stack: Google's buildpacks or a Dockerfile on the right base image.
- **Our process and experience** Exodus is built in Rust, the CLI included. Its knowledge base is the guides on our blog: your agent runs exodus ask and gets the passage that answers it, with the link to the guide, instead of guessing.; exodus ask "why does my tokio worker stall on Cloud Run?"; 1. Background workers on Cloud Run - Why a queue worker breaks on Cloud Run; A worker loop is not a request, so between requests its CPU is throttled to almost nothing and jobs sit in Redis.; https://exodus.elim.io/blog/background-workers-with-cloud-tasks

## Cloud Run is Google's managed platform: you bring the code, Google runs the rest

Google is a Leader in the 2026 Gartner® Magic Quadrant™ for Cloud-Native Application Platforms, for the third year in a row.; https://cloud.google.com/blog/products/application-development/2026-gartner-mq-for-cloud-native-application-platforms; Gartner, Magic Quadrant for Cloud-Native Application Platforms, 3 August 2026; the recognition is for Google's platforms. Gartner does not endorse any vendor or product. GARTNER and MAGIC QUADRANT are trademarks of Gartner, Inc.

- **language in a container** Any; Go, Node.js, Python, Java, .NET, Ruby and PHP deploy straight from source.
- **copies, by itself** 0 to 1,000; It adds copies when traffic comes and removes them when it goes.
- **regions** 43; Each with a 99.95% uptime commitment in writing.
- **billing step** 100 ms; You pay for the time code runs. 2 million requests a month are free.

**Who runs what. On a server of your own you keep every layer but the hardware. On Cloud Run you keep your code and its container, and Google runs the rest.** **Your own server** a VPS or a VM; Billed every hour; , busy or idle; **Cloud Run** a managed platform; Billed only while it works; , in 100 ms steps; **Your code**; **Its container**; **Scaling** Resize the server when traffic grows; Your job; **HTTPS and load balancing** Renew certificates, run a load balancer; Your job; **Restarts after a crash** Notice it is down and restart it; Your job; **OS and security patches** Patch the system, then reboot; Your job; **Servers and data centers** Rented from the host; Host; Google runs all of this

## On Cloud Run an app usually costs less and is built to scale

### Hosting platforms
| | Cloud Run | Heroku | Railway | Render | Fly.io |
|---|---|---|---|---|---|
| You pay for | Seconds your app is working | Every hour a dyno is up | CPU and memory used, plus a plan fee | Every hour an instance is up | Seconds a machine runs |
| Stops when nobody uses it | On every service | Eco dynos only | Optional sleep mode | Free tier only | Auto-stop |
| Adds copies under load by itself | Every service, up to 1,000 requests per copy | Performance dynos only | Copies set by hand | Pro workspaces and up | Starts machines you created |
| Regions to deploy in | 43 | 12 | 4 | 5 | 17 |
| Uptime commitment | 99.95% on every service | Not published | Enterprise only | Enterprise only | 99.9% from $2,500 a month |
| Try a release on part of the traffic | Any percentage, back in one click | Not documented | Not documented | Not documented | Canary and blue-green deploys |
| Free every month | 2M requests, 180k vCPU-seconds | None | Trial, then $1 credit | 750 hours, sleeps when idle | None |

From each platform's own documentation and pricing pages, October 2026.

### Your own server
| | Cloud Run | A VPS | A VM on Google |
|---|---|---|---|
| You pay for | The seconds it works | The month, busy or idle | Every hour it runs |
| A small app, 1M requests a month | About $0.48 a month | $4 to $7 a month | $18.10: e2-small with a disk and an IP |
| Busy around the clock | About $63 a month for 1 vCPU | The same $6 to $24 | $26.91, e2-medium |
| Operating system | Google's, patched for you | Yours to patch | Yours to patch |
| HTTPS, scaling, load balancing | Built in | You set them up | A load balancer, billed apart |
| Releases and rollback | Revisions, any share of traffic | You build it | You build it |
| Local disk, always-on processes | Files go to a bucket, jobs to a queue | Yes | Yes |
| Traffic out | $0.12 a GB in Europe | Terabytes included | $0.12 a GB |

Google's list prices for europe-west1, Hetzner CX23 and DigitalOcean Basic, October 2026. Cloud Run billed per request, 1 vCPU and 512 MiB, with the free tier.

### Serverless
| | Cloud Run | AWS Lambda | Cloudflare Workers |
|---|---|---|---|
| What it runs | Your container as an ordinary web server | A function per event; a web app needs the Web Adapter | JavaScript, TypeScript, Python, Wasm |
| Requests one copy takes at once | Up to 1,000 | One | Billed per request and CPU time |
| Memory | Up to 32 GiB | Up to 10 GB | 128 MB |
| Longest request | 60 minutes | 15 minutes | 5 minutes of CPU |
| Cold start, median | 0.53 s | 0.28 to 0.31 s | 0.015 s |
| 10M requests of 400 ms a month | $13.69 | About $28.47 | Priced another way |
| Containers | Any image | Images up to 10 GB, with its runtime API | Cloudflare Containers, no autoscaling yet |

AWS and Cloudflare documentation and price pages, October 2026. Cold starts from the TU Berlin study below; the price row is Google's own pricing example and the same traffic on Lambda x86 with 512 MB.

## On Cloud Run a sleeping app wakes in half a second

**How long the first visitor waits when the app was stopped, median** **Go** 3.2× faster; **Cloud Run** 0.35 s; **Fly.io** 1.10 s; **JavaScript** 3.4× faster; **Cloud Run** 0.70 s; **Fly.io** 2.39 s

Schirmer et al., TU Berlin, ["New Kids: An Architecture and Performance Investigation of Second-Generation Serverless Platforms"](https://arxiv.org/abs/2604.15916), ACM TOIT 2026. Calls from Frankfurt, November 2025 to January 2026. Cloud Run measured as Cloud Run functions in europe-west3 with startup CPU boost off; Fly.io as Fly Machines with fly launch defaults. [Data and notebooks](https://github.com/3s-rg-codes/faas-bench-explore).

## On Cloud Run your app is better built, scales by itself and costs less

- **Pays only while it works.** A server bills every hour of the day. Cloud Run bills the seconds your code answers a request, so a quiet night costs nothing and the free allowance covers a small app entirely.
- **Grows on its own.** requests; copies of your app; 0 → 8 → 0; A spike, and Cloud Run adds copies in seconds, each taking up to 1,000 requests at once. When it passes, they go.
- **Close to your visitors.** visitors; nearest edge; your region; 200+ edge locations; A request enters Google's network near the visitor and rides Google's own lines to your app.
- **Nothing to babysit.** **HTTPS certificate** for your domain; Renewed; **Operating system** and the runtime under it; Patched; **A copy that crashed** replaced by a fresh one; Restarted; **Load balancing** across zones; Built in; No server to log into and no certificate that expires on a Sunday. You deploy, and Google keeps the rest running.
- **Releases without fear.** Revisions; Roll back; **lumen-api-00013** deployed today; 5; **lumen-api-00012** deployed Oct 9; 95; Every deploy is a revision. Show it to 5% of visitors, move everyone when it holds, go back in one click.
- **All of Google next door.** **Cloud SQL** Postgres and MySQL; **Firestore** documents, pay per use; **Cloud Storage** files and uploads; **Cloud Tasks** background jobs; **Cloud Scheduler** cron, run as jobs; **Gemini** AI models; **BigQuery** analytics; **Pub/Sub** events between services; Databases, files, queues, AI models and analytics in the same account and on the same bill, each one permission away.

## Cloud Run costs little because you pay only while your code works

- **A Rust backend with its web app** **Cloud Run** free; **Traffic out** $0.04; **Database, files, secret** $0.07; a month; $0.11
- **A Slack bot with a task queue** **Cloud Run** free; **Cloud Tasks** free; **Database, secret** $0.07; a month; $0.07
- **A full SaaS with Postgres** **Cloud Run: API, worker, web** free; **Postgres, smallest** $9.40; **Traffic, files, the rest** $1.00; a month; $10.40

## Exodus is free.

The CLI is open source, Apache-2.0. The web cabinet is free.

- The CLI and every command
- Audits and reports, as many as you need
- The plan and the move
- The knowledge base
- The check that keeps your app cheap afterwards

**Moving something big?** Many services, a large database, no room for downtime. Our engineers have moved production apps to Cloud Run and will plan and run the move with your team.; Consult an expert

## 50+ guides to Cloud Run. What it costs, how to move, what breaks.

Every figure names its source. The CLI's exodus ask answers from the same guides.

- [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.
- [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.
- [The Google Cloud free tier for a small app: what it covers, what is never free, and how it differs from the $300 trial](https://exodus.elim.io/blog/google-cloud-free-tier-for-a-small-app.md): Google Cloud's free tier, product by product for a small app: Cloud Run, Firestore, Cloud Storage, one e2-micro. What is never free, and how the $300 trial ends.
- [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.
- [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.
- [Fly.io pricing, line by line: Machines, volumes, egress, Managed Postgres, and the same app on Cloud Run](https://exodus.elim.io/blog/fly-io-pricing-next-to-cloud-run.md): What Fly.io charges for in 2026: Machines by the second, volumes, egress, IPv4, Managed Postgres and support. No free tier. The same small app priced on Cloud Run.
- [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.
- [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.
- [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.
- [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.
- [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.
- [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.
- [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 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.
- [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.
- [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.
- [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.
- [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.
- [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.

[All guides](https://exodus.elim.io/blog)

## Questions and answers

### What is Exodus?

Exodus is a free web app and an open-source command line. With the coding agent you already use, it audits your app, shows what it costs today and on Google Cloud Run, lists what to change and in what order, and then moves it there step by step. Exodus runs no AI of its own: your agent writes the code.

### How much does Exodus cost?

Nothing. The CLI is open source under Apache-2.0, and the web app, audits, reports, the plan and the knowledge base are free. You pay Google for Cloud Run and the other services your app uses, on your own account. The report estimates that bill from Google's list prices, with the date of the prices.

### Do I need a Google Cloud account?

Not for the audit and the report: you sign in with Google, and your agent reads the repository on your machine. To move, you need a Google Cloud project with billing. Your agent works in it with your own gcloud, and a step only you can take, such as a login or a billing account, shows in the app with its steps. Exodus never signs in to Google Cloud.

### Does Exodus see my code?

No. The CLI reads the repository on your machine and sends the findings, not the code: for example a worker on a Redis queue, Postgres 180 MB, a timer at src/bin/clock.rs:12. There is no GitHub sign-in and no GitHub app. A report stays private until you share its link.

### Which coding agents does it work with?

Any agent that runs commands in a terminal: Claude Code, Codex, Cursor, Gemini CLI or Copilot. exodus init writes the instructions each one reads: skills for Claude Code, AGENTS.md for Codex and the others, rules for Cursor. We test with Claude Code and recommend it.

### What if my app does not fit Cloud Run?

The report says so. Its verdict is move, move after changes, or stay, with the reason. Cloud Run runs containers that answer requests and scale to zero, so an app under steady heavy load, one that keeps state on its own disk, or one that serves no HTTP may be better where it is. The audit and the report cost nothing either way.

### How do I stop using Exodus?

There is no subscription to cancel. Delete a project in its Settings tab, or your whole account in Settings under Danger zone: its reports, share links and CLI keys go with it. On your machine, delete the exodus binary from ~/.local/bin and the .exodus folder in your repository.

## Built in Rust, open source and free

Use Exodus on our platform for free, or take the open-source CLI and run the whole move yourself.

- [Sign up for free](https://app.exodus.elim.io/login)
- [Open source on GitHub](https://github.com/elim-io/exodus)
