README.md
<b>Encore: Infrastructure orchestration from local to your cloud</b>
</p>Encore derives infrastructure from your application code and manages it across local and cloud environments.
Build a backend that runs the same way on your laptop and in production: type-safe, traceable, and deployable to your own AWS or GCP account without Terraform or YAML.
You declare resources semantically in code, like “I need a Postgres database.” Encore turns your code into an application graph, then provisions the right infrastructure for each environment: local sandbox, managed cloud on AWS/GCP, or self-hosted Docker.
Because infrastructure is derived from the code that uses it, it stays in sync as your application evolves.
import { SQLDatabase } from "encore.dev/storage/sqldb";
import { Topic } from "encore.dev/pubsub";
import { Bucket } from "encore.dev/storage/objects";
// Define a Postgres database
const db = new SQLDatabase("users", { migrations: "./migrations" });
// Define a Pub/Sub topic
const signups = new Topic<SignupEvent>("signups", {
deliveryGuarantee: "at-least-once"
});
// Define an object storage bucket
const avatars = new Bucket("avatars", { versioned: true });
Each declaration becomes a node in the application graph. Encore runs the migrations and stands up local equivalents on encore run, and provisions the cloud equivalents on deploy:
| Resource | Local | AWS | GCP |
|---|---|---|---|
| SQL Database | Postgres | RDS | Cloud SQL |
| Pub/Sub | NSQ | SNS + SQS | Cloud Pub/Sub |
| Object Storage | Local FS | S3 | GCS |
| Cache | Redis | ElastiCache | Memorystore |
| Cron | Manually triggered | Encore Cloud | Encore Cloud |
| Secrets | Encore vault | Secrets Manager | Secret Manager |
| Compute | Local | Fargate / EKS | Cloud Run / GKE |
When you push a change that adds or modifies a resource, Encore diffs the application graph against the environment, provisions whatever is missing in your AWS or GCP account, and rolls out the new code against it.
Encore separates application semantics from environment-specific configuration. In code, you define what resources your app needs, not how each environment should configure them. That keeps services portable across clouds, regions, accounts, scale profiles, and local development.
Encore provisions every resource with sane production defaults, then helps you manage configuration separately from your application code:
| Language | Docs |
|---|---|
| TypeScript | encore.dev/docs/ts |
| Go | encore.dev/docs/go |
| Python | Coming soon |
Before Encore:
After Encore:
encore run.git push to deploy. Infrastructure is derived from the application code, validated at build time.The fail-loop moves from "push, wait, fix" to "run locally, see it work, push." Platform teams set guardrails once. Encore enforces them on every deploy.
You don't need a rewrite, and you don't need to use Encore for every resource in your stack.
Start with a low-risk, frequently-changed service. See the migration guide for the full playbook.
Encore is designed to make leaving easy. 99% of your code is regular Go or TypeScript, so there's not much to rewrite. See the migrate-away guide for more.
Encore integrates at the application layer, which means a few constraints to be clear about up front:
encore build docker works on any provider.| Tool | What it does | How Encore differs |
|---|---|---|
| Pulumi / CDK / Terraform / SST | Infrastructure-as-Code for provisioning cloud resources | No separate IaC to write. Infrastructure is generated from your application code, so the same code runs locally and deploys to AWS or GCP. |
| Convex / Supabase / Firebase | Managed backend-as-a-service platforms | Runs in your own AWS or GCP account. No vendor lock-in. |
| Render / Fly.io / Railway / Vercel | PaaS-style deployment platforms | Deploys to your own cloud account, not a managed runtime. |
encore app create # scaffold a project
cd myapp
encore run # run locally with provisioned infra + dev dashboard
Install Encore:
brew install encoredev/tap/encorecurl -L https://encore.dev/install.sh | bashiwr https://encore.dev/install.ps1 | iexFull walkthrough in the Quickstart guide.
Encore is built for AI-assisted development. Every Encore app comes with built-in CLAUDE.md and an MCP server that lets agents introspect your app and generate type-safe code that follows your patterns. See the AI integration docs for more details.
The Encore CLI ships a local dashboard for inspecting services, APIs, traces, databases, Pub/Sub messages, and architecture diagrams in real time. Run encore run and it is there at localhost:9400.
https://github.com/user-attachments/assets/461b902f-8fd3-46f1-a73c-0ebbfa789ce3
Encore Cloud is the optional managed platform. It connects to your AWS or GCP account and provisions the resources your code declares in your own VPC. Other features:
See pricing and learn more.
You can also skip the platform entirely. Run encore build docker to produce a standalone image you supply an infra config to.
150+ Teams are already shipping production apps with Encore, including: Groupon, Echo.xyz (a Coinbase company), Bookshop.org, Gradient Labs, Ashby, Later.com, Pallet, Pave Bank, and Playwire. Use cases span AI, fintech, logistics, commerce, web3, and more. See case studies to learn more.
Encore is licensed under the Mozilla Public License 2.0.
The framework, parser, compiler, runtime, CLI, and everything needed to develop, build, and self-host an Encore application is Open Source. Encore Cloud, the optional managed deployment platform, is a commercial service.
See CONTRIBUTING.md for additional details.