Encore is a free, open source version control & collaboration project written in Go and released under MPL-2.0. It has 12,362 GitHub stars, 623 forks and 127 open issues, and was last pushed 15 hours ago. On this registry it ranks #11 of 30 tracked projects in Version Control & Collaboration, with 5 head-to-head comparisons available. It gained 14 stars over the last 6 tracked days.

Encore — Accelerate backend development with effortless scalability

What is Encore?

What it is

Encore is an open-source infrastructure platform for backend development, written in Go under MPL-2.0. It lives in the Go and TypeScript cloud-native ecosystem and lets developers declare databases, Pub/Sub, object storage, caches, cron jobs, and secrets in application code. The project combines an infrastructure SDK with an optional managed platform that deploys to a user's AWS or GCP account.

It solves the gap between application code and the infrastructure that code needs. Encore builds an application graph from resource declarations, runs local equivalents with encore run, and provisions cloud equivalents when changes are deployed. This supports distributed systems and DevOps automation across AWS and GCP.

Key capabilities

  • Declare SQL databases, Pub/Sub topics, object storage buckets, caches, cron jobs, and secrets in TypeScript or Go.
  • Run the system locally with encore run, Postgres, NSQ, local file storage, Redis, an Encore vault, and distributed tracing.
  • Map local resources to AWS and GCP services, including RDS, Cloud SQL, SNS plus SQS, Cloud Pub/Sub, S3, GCS, ElastiCache, Memorystore, Secrets Manager, and Secret Manager.
  • Diff the application graph against an environment, provision missing resources in AWS or GCP, and roll out new code.
  • Use preview environments to test pull requests end to end before production deployment.
  • Manage configuration through the Encore dashboard, AWS or GCP consoles, or the Terraform provider.
  • Run compute locally, on Fargate or EKS in AWS, or on Cloud Run or GKE in GCP.

Who uses it and how

  • Backend teams building Go or TypeScript services validate infrastructure locally before cloud deployment.
  • Teams using AWS or GCP let Encore provision databases, queues, buckets, caches, secrets, and compute in their own accounts.
  • Engineering teams test application changes in per-pull-request preview environments before merging.
  • Infrastructure teams configure Encore-provisioned resources through the dashboard, cloud consoles, or Terraform.
  • Teams avoiding the managed platform can use the SDK locally and provision infrastructure with Terraform or another tool.

Getting started

Users can install the TypeScript SDK through npm or the Go SDK through pkg.go.dev and run encore run locally and deploy through the optional Encore platform to AWS or GCP. The README also describes using the SDK alone with self-managed provisioning through Terraform or another tool.

When to use it — and when not to

Encore fits teams that want infrastructure declared in application code and that can operate AWS or GCP accounts or use the optional managed platform. It is less suitable for projects needing Python today, because Python is listed as coming soon, or for teams unwilling to operate Postgres, NSQ, Redis, object storage, secrets, and compute when self-hosting. No paid products are named, so the comparison is mainly between Encore's orchestration and direct Terraform or cloud-console management.

project readme (upstream, from github) — read inline

encore icon

Encore: Infrastructure orchestration from local to your cloud

License Discord Go SDK TS SDK

What is Encore?

Encore is the infrastructure platform for the intelligence era, where engineers and AI agents build production systems without waiting on infrastructure. Run and validate with real infrastructure locally and in preview environments, then deploy to your own AWS or GCP account.

It has two parts that work together:

  • An open source infrastructure SDK for TypeScript and Go. Declare the resources your app needs (databases, Pub/Sub, object storage, caches, cron jobs, secrets) directly in your code, and encore run starts the whole system locally with real Postgres, real Pub/Sub semantics, and distributed tracing.
  • The Encore platform, an optional managed platform that orchestrates cloud infrastructure. From preview environments for end-to-end testing PRs, to provisioning infrastructure in your AWS or GCP account for production.

You can also use just the SDK for local development and provision infrastructure yourself using Terraform or any other tool.

Example: Declaring resources

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 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.

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

The Development Workflow

The same infrastructure model runs locally, in per-PR preview environments, and in production:

  1. Local: encore run starts 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.
  2. 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.
  3. 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 docker works 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.

readme truncated — read the full docs on github

Frequently asked questions

Is Encore free to use?

Encore is open source under the MPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Encore do?

Accelerate backend development with effortless scalability

What is Encore written in?

Encore is primarily written in Go. Its source is publicly available at https://github.com/encoredev/encore, and it has 12,362 GitHub stars.