Encore: Infrastructure orchestration from local to your cloud
What is Encore?
Encore helps developers and AI coding agents build and deploy backend applications without having to manually set up and manage infrastructure.
You define the infrastructure your app needs in code, run the entire application locally with working infrastructure, and deploy to your own AWS or Google Cloud account.
Encore has two parts that work together:
- An open source infrastructure SDK: Define databases, Pub/Sub, object storage, caches, cron jobs, and secrets directly in your code. Run
encore runto start your application locally with real infrastructure and built-in distributed tracing. - The Encore platform: An optional managed platform that automatically provisions and manages infrastructure in your AWS or Google Cloud account. It provides a control plane for configuration and infrastructure approvals, preview environments for testing changes before production, and built-in metrics and distributed tracing.
You can use the SDK on its own, without Encore's platform, and manage production infrastructure yourself using Terraform or other tools.
Example: Declaring resources using the SDK
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 Encore's application graph. Encore runs the migrations and stands up local equivalents on encore run, and provisions the cloud equivalents on deploy:
| Resource | Local | AWS | Google Cloud |
|---|---|---|---|
| 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 Google Cloud account, and rolls out the new code against it.
Configuration
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:
- Encore platform dashboard: easy to use knobs for all common settings like process allocation, instance sizes, replicas, etc. See more in docs.
- Your AWS or GCP console: tweak anything directly in your cloud provider console. Encore picks up the changes on the next deploy.
- IaC: manage config for Encore-provisioned resources alongside the rest of your infrastructure via the Terraform provider.
Language SDKs
| Language | Docs |
|---|---|
| TypeScript | encore.dev/docs/ts |
| Go | encore.dev/docs/go |
| Python | Coming soon. Sign up for early access |
| Rust | Coming soon. Sign up for early access |
The Development Workflow
The same infrastructure model runs locally, in per-PR preview environments, and in production:
- Local:
encore runstarts the whole system locally: real Postgres, real Pub/Sub semantics, type-safe service-to-service calls, plus a local dashboard with distributed tracing. Infrastructure namespaces let multiple branches or agents work in parallel with isolated state. This lets you validate changes with real infrastructure semantics before pushing code. - Per-PR preview environments: Open a pull request and Encore sets up an ephemeral environment and (optionally) branches databases from a seed environment. This Lets you do end-to-end validation against before merging to a shared staging environment.
- Production: Push to deploy. Encore diffs the application graph against the environment, provisions what is missing in your AWS or GCP account, wires up least-privilege IAM based on the application's code paths, and rolls out the new code.
With this workflow, the fail-loop moves from "push, wait, fix" to "run locally, see it work, push." This tight loop makes Encore particularly effective with AI coding agents, since every change can be validated with real infrastructure immediately after each code change. See the Development Workflow docs for more.
Adopting Encore
You don't need a rewrite, and you don't need to use Encore for every part of your system.
- Use any infrastructure as normal: Encore doesn't try to own every resource. Import the AWS SDK, GCP client libraries, or any third-party API and provision the resource yourself, or wire it up alongside Encore-managed resources via the Terraform provider.
- Migrate service-by-service: Build new services in Encore and run them next to your existing system, integrated over APIs.
- Deploy where your stack already lives: Encore can deploy into your existing Kubernetes cluster or into your VPC in AWS or GCP.
Start with a low-risk, frequently-changed service. See the migration guide for the full playbook.
Migrating Away
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.
Limitations
Encore integrates at the application layer, which means a few constraints to be clear about up front:
- Language: Your services need to be written in a supported language in order to use the infrastructure SDK. TypeScript (Node.js) and Go is currently supported, and Python is coming soon.
- Infrastructure scope: Encore is designed to solve the 99% use case, making it easier to work with the resources you use over and over again; services, databases, Pub/Sub, object storage, caches, cron jobs, and secrets. For the remaining 1% that is specific to your domain, you can still integrate any other service as you normally would. Encore doesn't prevent it or make it harder.
- Cloud providers: Encore's fully-automated provisioning currently supports AWS and GCP. Azure is on the roadmap. Self-hosting via
encore build dockerworks on any provider.
How Encore Compares
| Tool | What it does | How Encore differs |
|---|---|---|
| Pulumi / CDK / Terraform / SST | Infrastructure-as-Code for provisioning cloud resources | 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. |
Quick Start
encore app create # scaffold a project cd myapp encore run # run locally with provisioned infra + dev dashboard
Install Encore:
- macOS:
brew install encoredev/tap/encore - Linux:
curl -L https://encore.dev/install.sh | bash - Windows:
iwr https://encore.dev/install.ps1 | iex
Full walkthrough in the Quickstart guide.
AI Integration
Encore is built for AI-assisted development. When you run encore app create, you can pick your AI tool (Cursor, Claude Code, etc.) and Encore generates the right rules files for it, plus configures an MCP server that lets agents introspect your app: services, APIs, databases, traces. Combined with the fast local-to-preview-env iteration loop above, agents can validate their own changes end-to-end against real infrastructure instead of guessing.
See the AI integration docs for more details.
Local Dev Dashboard
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.
localdashvideo.mp4
Deployment Platform
Encore's optional managed platform connects to your AWS or GCP account and provisions the resources your code declares in your own VPC. Other features:
- Preview environments for each PR
- Self-serve infrastructure provisioning, with least-privilege IAM and firewall rules derived from real code paths
- Distributed tracing, metrics, and logs across services
- Cost analytics and infrastructure approval workflows
- Auto-generated service catalog and architecture diagrams from your code
See pricing for details.
You can also skip the platform entirely. Run encore build docker to produce a standalone image and supply your own infra config (provisioned via Terraform, Pulumi, or any other tool). See the self-hosting guide.
Who's Using Encore
200+ 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.
Resources
- Encore website
- Documentation
- Migration guide
- Example apps
- Discord
- Book a 1:1 demo
- Public Roadmap
- Contributing
License
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's optional managed deployment platform is a commercial service.
See CONTRIBUTING.md for additional details.