Guide

    Two prompts that move your app to Oracle's always-free stack

    Built your app with Lovable, Cursor, Claude, or v0 — and now the hosting bills are stacking up? Paste one of the two prompts below into the same AI tool you built with. The first migrates an existing project onto Oracle Cloud Always Free. The second designs a new project around it from day one.

    Why this works better than "deploy my app somewhere cheap"

    AI builders are excellent at writing application code and bad at cost. Left to their own defaults, they reach for whatever appears most often in their training data — Vercel, a hosted Postgres, S3, SendGrid — and each one is free until precisely the moment your project starts working. The fix is not a better model. It is giving the model a hard budget and the exact list of substitutes to choose from.

    That is all the prompts below do: they state Oracle's real Always Free allowances, force a service-by-service mapping, and require the AI to flag anything that genuinely doesn't fit rather than hand-waving it.

    What Oracle Always Free actually gives you

    What you're paying for nowAlways Free equivalentThe real limit
    EC2 / Vercel / Render computeAmpere A1 ARM instance2 OCPUs, 12 GB RAM
    Extra small instancesVM.Standard.E2.1.Micro (AMD)2 instances, 1 GB each
    RDS / hosted PostgresAutonomous Database (ATP)2 databases, 20 GB each
    MongoDB AtlasAutonomous JSON DatabaseIncluded in the 2 above
    S3 / R2 / CloudinaryOCI Object Storage20 GB (10 standard + 10 archive)
    EBS volumesBlock Volumes200 GB total
    SendGrid / Mailgun / ResendOCI Email Delivery~3,000 sends/month
    Upstash / ElastiCacheOCI Cache with RedisSmall always-free node
    Datadog / CloudWatchOCI Logging + Monitoring + APM10 GB/month ingest
    Doppler / Secrets ManagerOCI Vault20 key versions, 150 secrets
    ACM / paid TLSOCI CertificatesFree, auto-renewing
    ALB / managed ingressFlexible Load Balancer1 × 10 Mbps
    Bandwidth overagesOutbound egress10 TB/month

    Read this before you size anything. In June 2026 Oracle cut the Always Free Ampere allowance from 4 OCPUs / 24 GB to 2 OCPUs / 12 GB. Most tutorials and older blog posts still quote the old numbers. Both prompts below use the current limits, so your AI won't design a stack that no longer fits.

    Prompt 1 — I already have a project and want to move it

    Use this when there's an existing repo and existing bills. It makes the AI inventory what you're actually paying for, map each item to its free equivalent, tell you what doesn't fit, and then produce a phased migration where every step can be rolled back.

    Prompt 1 — Migrate an existing project
    You are acting as my cloud architect. Goal: move this existing project onto Oracle Cloud Infrastructure (OCI) "Always Free" services so my recurring hosting bill becomes $0, without losing features.
    
    STEP 1 — INVENTORY
    Scan the repo (package.json / requirements.txt / docker-compose.yml / .env.example / infra code) and produce a table of every external paid or metered dependency: compute host, database, cache, object storage, email sender, auth, cron/queue, logging, secrets, CDN, DNS/TLS. For each one list: what it is, roughly what it costs today, and how tightly the app is coupled to it.
    
    STEP 2 — MAP TO OCI ALWAYS FREE
    Map each dependency to its OCI Always Free equivalent, using these real allowances:
    - Compute: 2 Ampere A1 ARM OCPUs + 12 GB RAM total (Oracle reduced this from 4/24 in June 2026). Plus 2x AMD VM.Standard.E2.1.Micro.
    - Block storage: 200 GB total, max 2 volumes beyond boot.
    - Object storage: 20 GB (10 GB standard + 10 GB infrequent/archive) — replaces S3/R2/Cloudinary.
    - Database: 2x Autonomous Database (ATP or Autonomous JSON), 20 GB each — replaces RDS, Mongo Atlas free, or a hosted Postgres.
    - Email: OCI Email Delivery, ~3,000 sends/month — replaces SendGrid/Mailgun/Resend free tiers.
    - Secrets: OCI Vault — replaces Doppler/paid secret managers.
    - Logging: 10 GB/month ingest + Monitoring + APM tracing — replaces Datadog/Logtail.
    - Cache: OCI Cache with Redis (small always-free node) — replaces Upstash/ElastiCache.
    - Certificates: OCI Certificates for free TLS. Load Balancer: 1x 10 Mbps. Bastion for SSH.
    - Egress: 10 TB/month outbound.
    
    STEP 3 — FLAG WHAT DOESN'T FIT
    Explicitly call out anything that will NOT fit inside those limits (e.g. >12 GB RAM working set, >20 GB of files, >3,000 emails/month, a managed service with no OCI analogue). For each, give me two options: a self-hosted container that fits on the 12 GB box, or the cheapest paid path. Do not pretend something fits when it doesn't.
    
    STEP 4 — PRODUCE THE MIGRATION PLAN
    Give me a phased plan, lowest-risk first, where each phase is independently shippable and reversible:
    - Phase order, with the reason for the order.
    - Exact code changes per phase (which files, which SDK swaps, which env vars are added/removed).
    - Data migration steps with real commands (pg_dump/impdp for the DB, rclone or the OCI CLI for object storage), plus how to verify row/object counts match before cutover.
    - DNS/TLS cutover steps and how to roll back.
    
    STEP 5 — CONTAINERIZE FOR ARM
    Produce a production Dockerfile that builds on linux/arm64 (Ampere A1 is ARM, not x86). Verify every base image and native dependency has an arm64 build; call out any that don't (common offenders: some Puppeteer/Chromium, sharp, node-canvas, and older Python wheels). Add a docker-compose.yml for the whole stack and a /health endpoint that returns 200 only when dependencies are reachable.
    
    STEP 6 — COST GUARDRAILS
    Give me the exact steps to create an OCI budget of $1 with alert rules at 50% and 100%, so any accidental drift off Always Free emails me immediately.
    
    Output the inventory table and the mapping table first, then the phased plan. Ask me before making any change that would drop data.

    Prompt 2 — I'm starting something new

    Far easier than migrating. Paste this at the very beginning, before any stack decisions get made, and the AI will pick libraries and services that already fit inside the free allowances instead of ones you'll have to rip out in three months.

    Prompt 2 — Build OCI-native from day one
    You are acting as my cloud architect for a NEW project. Hard constraint: everything must run permanently inside Oracle Cloud Infrastructure (OCI) "Always Free" limits, so my hosting bill stays $0 forever. Choose the stack around that constraint instead of choosing a stack first.
    
    THE BUDGET YOU MUST FIT INSIDE
    - Compute: 2 Ampere A1 ARM OCPUs + 12 GB RAM TOTAL (Oracle reduced this from 4/24 in June 2026), plus 2x AMD VM.Standard.E2.1.Micro.
    - Block storage: 200 GB. Object storage: 20 GB. Egress: 10 TB/month.
    - Database: 2x Autonomous Database, 20 GB each (ATP for relational, Autonomous JSON for document-style).
    - Email: OCI Email Delivery, ~3,000 sends/month. Secrets: OCI Vault. Logs: 10 GB/month + Monitoring + APM.
    - Load balancer: 1x 10 Mbps. TLS: OCI Certificates. SSH: OCI Bastion.
    
    ARCHITECTURE RULES
    1. ARM-first: every container must build and run on linux/arm64. Reject any library without an arm64 build and propose an alternative before I write code around it.
    2. One VM, many containers: run the whole stack with Docker Compose on a single A1 instance. No Kubernetes, no service mesh, no per-service VMs — the RAM budget won't take it.
    3. No external SaaS by default. Files -> OCI Object Storage (S3-compatible API). Email -> OCI Email Delivery over SMTP. Secrets -> OCI Vault, never .env in git. Background jobs -> an in-container worker or cron, not a hosted queue. Analytics/logs -> OCI Logging + APM.
    4. Memory discipline: give me a written RAM budget per container that sums to under 10 GB, leaving 2 GB headroom for the OS and builds. Flag anything memory-hungry (Elasticsearch, heavy JVM services, in-process LLMs) before proposing it.
    5. Data durability: the DB lives on Autonomous Database (managed backups), never in a container with an ephemeral volume. Any stateful container gets a named volume on an attached block volume.
    6. Statelessness: the app container must be safe to destroy and recreate at any time, so redeploys and rollbacks are trivial.
    
    WHAT TO PRODUCE
    - The recommended stack with one-line justification per choice, tied to the limits above.
    - The RAM/storage budget table.
    - A production multi-stage Dockerfile (arm64) and docker-compose.yml.
    - The full env var list, and which ones come from OCI Vault.
    - A /health endpoint spec, plus what a deploy and a rollback look like.
    - The OCI budget alert setup ($1 budget, 50% and 100% rules).
    - A short "when I outgrow free" section: which single resource breaks first, and what the first paid upgrade should be.
    
    Confirm the plan with me before generating application code.

    The four mistakes that turn a $0 bill into a real one

    1. Picking an x86 base image. Ampere A1 is ARM. An amd64image either refuses to start or runs under emulation at a fraction of the speed. Build for linux/arm64.
    2. Leaving trial resources running. Your first 30 days include trial credits, and it is easy to spin up something that isn't Always Free. When the credits expire, that resource starts billing. Audit your tenancy at day 25.
    3. Creating a second load balancer or a third block volume. The free allowance is per-tenancy, not per-project. The second one is billable.
    4. Not setting a budget alert. Create a $1 budget with alerts at 50% and 100%. It costs nothing and it is the only thing standing between you and a surprise invoice.

    Where Cheaploy fits

    The prompts change your application. Cheaploy handles the Oracle side: it connects to your own tenancy, builds the network, launches the Ampere A1 instance, clones your public repo onto it, injects your environment variables, builds your Docker image and starts the container — then health-checks the URL before calling the deploy done. It also provisions an Autonomous Database if you want one, and grinds through Oracle's out-of-host-capacity errors so you don't have to sit refreshing the console. The account, the data, and the bill stay yours — we never resell you compute.

    Keep reading

    Frequently asked

    Who are these prompts for?+

    Vibe coders, non-technical founders, and engineers who aren't DevOps specialists. If you built something with an AI tool and you're paying $40-$200/month across Vercel, a hosted database, object storage, and an email provider, these prompts hand your AI the exact free-tier constraints it needs to redesign that stack for $0.

    Which AI tool should I paste them into?+

    Any assistant that can read your repository — Lovable, Cursor, Claude Code, Windsurf, Copilot Workspace, or ChatGPT with your files attached. The prompts are tool-agnostic; they just specify the constraints, the required outputs, and where to stop and check with you.

    What exactly does Oracle Always Free include?+

    2 Ampere A1 ARM OCPUs with 12 GB of RAM (reduced from 4 OCPUs / 24 GB in June 2026), 2 AMD micro instances, 200 GB block storage, 20 GB object storage, 2 Autonomous Databases at 20 GB each, ~3,000 emails/month, 10 GB/month of log ingest, a 10 Mbps load balancer, free TLS certificates, and 10 TB of monthly egress. None of it expires.

    Do I have to move everything at once?+

    No, and you shouldn't. The migration prompt deliberately asks for phases that are individually shippable and reversible. Most people move compute first, then object storage, then email, and leave the database for last because it's the only step with real data risk.

    Will my app work on ARM?+

    Usually yes — Node, Python, Go, Ruby, Java, and Postgres all have first-class arm64 builds. The usual failures are Chromium/Puppeteer, sharp, node-canvas, and older Python wheels. Both prompts explicitly instruct the AI to audit every dependency for an arm64 build before writing a Dockerfile.

    Is my data safe during the move?+

    The migration prompt requires verification steps — matching row counts and object counts before cutover — and tells the AI to ask before any destructive change. Keep the old provider running until the new stack has served real traffic for a few days, then cancel.

    What does Cheaploy do on top of this?+

    Cheaploy provisions the Oracle side for you: it creates the network, the ARM instance, and an Autonomous Database in your own Oracle tenancy, and it retries automatically through Oracle's 'out of host capacity' errors. The account and the infrastructure stay yours. The prompts above cover the application-level changes.

    What breaks first if I grow?+

    Almost always RAM. 12 GB is generous for an app plus a cache plus a worker, but a memory-hungry search engine or a second heavy service will push you over. The second prompt asks the AI to write an explicit RAM budget so you see that ceiling before you hit it.

    Deploy your project for $0

    No credit card. No Oracle sales call. Ship to your own cloud in under 10 minutes.

    Start free