Your code is your infrastructure.
Write your ExpressJS/NestJS app: routes, cron, queue. laranja reads it on your machine and turns each one into real resources in your own cloud. No upload, no copy, no console.
import express from "express"; import { http } from "@alzulejos/laranja-decorators"; import { listOrders, createOrder } from "./orders"; const app = express(); app.get("/orders", listOrders); app.post("/orders", createOrder); export default http(app);
$ npx laranja deploy 🍊 laranja · reading ./src on this machine 🔑 account 123456789012 · eu-west-1 📦 build 2 routes · 1 cron · 1 queue → 4 λ 🌐 http https://k3f.execute-api.eu-west-1… ⏰ cron refresh · every 5 min 📨 queue receipts → SQS ✨ live

GCP soonReal infrastructure — grown from your code.
Write ExpressJS/NestJS
Routes and decorators in plain TypeScript. No YAML, no separate infra repo to keep in sync.
Deploy locally
laranja reads your code on your machine and provisions it 1:1 into your own cloud account, using your own credentials.
Own it
Your code, your resources, your bill. Outgrow laranja? Eject to plain CDK and walk away — no lock-in.
One command today. More clouds tomorrow.
Live today, with more on the way — the same code, provisioned in more places.
- ShippedHTTP appsExpress & NestJS routes, provisioned 1:1.
- ShippedJobs & queuesCrons and SQS workers, straight from decorators.
- ShippedWorkers & dashboardMulti-root workers and a live deploy dashboard.
- ShippedAzureThe same code on Azure cloud.
- BuildingHosted on laranjaNo cloud account? Deploy to ours, at you.laranja.io.
- PlannedAPI GatewayA first-class HTTP API front door.
- PlannedGCP & CloudflareMulti-cloud, still one command.
Missing a provider or framework? The roadmap bends to what people actually deploy — tell us what you need →
We never get a copy of your code.
Read on your machine
The scan runs entirely in your CLI. Your source, secrets and env vars are never uploaded — there's nothing for us to leak.
Stripped before sync
Only a stripped manifest of what you deployed — resource names and counts — is synced to your dashboard. No code, ever.
Straight to your account
Deploys go directly from your machine to your cloud with your own credentials. laranja is never in the path of your data.
The your-cloud path, without the trade-offs.
Everyone else makes you pick one: someone else's cloud, one framework, or a DevOps degree. laranja doesn't.
| laranja | Mau | SST | Encore | Railway · Render | |
|---|---|---|---|---|---|
| Runs in your own cloud account | ✓ | ✓ | ✓ | ✓ | — |
| Any Node framework | ✓ | NestJS only | ✓ | Encore only | ✓ |
| No keys or repo to hand over | ✓ | — | ✓ | — | — |
| Zero extra IaC to write | ✓ | ✓ | CDK | ✓ | ✓ |
| Eject to plain IaC you own | ✓ | — | ✓ | — | — |
The line that matters: laranja asks for nothing — no IAM user to create, no repo to connect. It runs on your machine with the credentials already there, writes no extra IaC, and ejects to plain CDK the day you outgrow it. laranja vs Mau in detail →
You pay to deploy. Your cloud does the rest.
Start free, no card. Every tier deploys into your own cloud, so the only bill that scales is your provider's — not ours.