Encore
A backend framework for TypeScript and Go in which services declare the databases, topics, buckets and cron jobs they need as typed objects in code; Encore reads those declarations and runs them locally or provisions them in your AWS or GCP account.
- What it is
- Infrastructure as code
- Used for
- API frameworks,Microservices
- Type
- Open source
- Made by
- Encoretivity AB
- License
- MPL-2.0 (Encore Cloud is a paid service)
- Facts checked
- 24 October 2026
What it is
In Encore, infrastructure is declared in the application code. new SQLDatabase("todo", { migrations: "./migrations" }) asks for a Postgres database, new Topic<SignupEvent>("signups", …) for a Pub/Sub topic, and there are similar objects for buckets, caches, cron jobs and secrets. API endpoints are typed functions wrapped in api(), and calling another service is a normal function call. Encore parses the code into an application model: which services exist, which endpoints they expose, and which resources each one uses. From that model it wires services to resources and grants each one only the permissions it needs.
encore run starts the app with local versions of everything: Postgres in Docker, in-memory Pub/Sub, and a development dashboard for calling APIs, browsing databases and following distributed traces. Deploying means pushing to Git. Encore Cloud, the paid platform, then provisions the same app in your own AWS account (ECS on Fargate or EKS, RDS or Aurora, SQS and SNS, S3, ElastiCache) or GCP account (Cloud Run or GKE, Cloud SQL, Pub/Sub, GCS, Memorystore). Without the platform, encore build docker produces a container image that you point at infrastructure you created yourself through a JSON config file.
Encore.ts runs on its own runtime: about 67,000 lines of Rust that handle HTTP routing, request validation, database pooling, Pub/Sub and tracing on a multi-threaded event loop, and call into Node.js (or Bun) only for your handlers. The framework and CLI are open source under MPL-2.0 and are made by Encoretivity AB in Stockholm; the latest release is 1.58.8, from October 2026. Python and Rust versions were announced as early access in September 2026.
Why teams pick it
- No separate infrastructure files: the code that uses a database or topic is also what creates it, so the two can’t drift apart
- Least-privilege IAM and service wiring are generated from what each service actually uses
- A full local environment with tracing and an API explorer from one command
- Request schemas come from TypeScript types and are validated in Rust before your handler runs; Encore’s own benchmark claimed 7x Node.js’s request throughput at the 2024 launch
Watch out for
- Only the resource types Encore models (SQL databases, Pub/Sub, buckets, caches, cron, secrets) are declared in code; anything else is managed separately
- Code must follow Encore’s conventions so its parser can read it, which ties the app to the framework
- Self-hosting gives you an image but not provisioning: you create the infrastructure, run migrations and trigger cron endpoints yourself
- Automatic provisioning targets only AWS and GCP, and Encore Cloud’s Pro plan costs $49 per team member plus $99 per cloud environment a month
Alternatives
What all infrastructure as code have in common →Compare side by side →How it fits with other technologies
What Encore uses
- Encoreruns services onAWS Fargate
- Encorecan run services onAmazon EKS
- Encoreruns services onGoogle Cloud Run
- Encorecan run services onGoogle Kubernetes Engine
- Encoregives each SQL database its ownPostgreSQL
- Encoreimplements Pub/Sub on AWS withAmazon SQS
- Encoreimplements Pub/Sub on GCP withGoogle Cloud Pub/Sub
- Encorestores buckets on AWS inAmazon S3
- Encorebuilds self-hosted images withDocker
- Encorecan host its databases onNeon
todo/todo.ts: a database and a public endpoint, declared in code · ts
import { api } from "encore.dev/api";
import { SQLDatabase } from "encore.dev/storage/sqldb";
// Postgres in Docker under `encore run`; RDS or Cloud SQL in the cloud
const db = new SQLDatabase("todo", { migrations: "./migrations" });
export const get = api(
{ expose: true, method: "GET", path: "/todo/:id" },
async ({ id }: { id: number }): Promise<{ title: string }> => {
const row = await db.queryRow`SELECT title FROM todo_item WHERE id = ${id}`;
return { title: row?.title ?? "" };
},
);
// $ encore run local app, database and dashboard
// $ encore build docker todo:v1 image for self-hostingSee it in a real stack
No architecture uses Encore yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2021–2026
André Eriksson started Encore after working on payments at Spotify, where, he wrote, “the complexity of cloud infrastructure started to dominate my work”. His conclusion was that existing tools “have no idea what we’re trying to do”: Terraform knows about resources and the application knows about business logic, but nothing connects the two. Encore was meant to understand how an application’s parts fit together and handle the infrastructure from that.
The first version was a Go framework. Encore v1.0 shipped in April 2022 together with a $3 million seed round led by Crane Venture Partners. In May 2024 the company launched Encore.ts for TypeScript, whose open-source framework runs on a runtime written in Rust; at launch Encore reported 7x the request throughput of plain Node.js and 85% lower latency.
The paid platform, Encore Cloud, deploys into customers’ own AWS and GCP accounts, while the framework stayed open source with a self-hosting path through Docker images. In 2026 Encore wrote up the runtime it had built over two years, and announced early-access support for Python and Rust.
Why it’s built this way
- Infrastructure declared as typed objects in application code
- If the code that publishes to a topic also declares it, the framework can see every resource and every user of it, and generate the wiring and permissions instead of a developer keeping separate config in step.
- Static analysis into an application model
- Reading the code before it runs gives Encore a graph of services, endpoints and resources that drives local environments, API docs, tracing and cloud provisioning alike.
- A Rust runtime under TypeScript instead of a sidecar
- A Go sidecar prototype added 2 to 4 ms per request in serialisation and context switches; running in-process through napi-rs avoided that and let infrastructure code use all CPU cores while Node.js stays single-threaded.
- Deploy into the customer’s own cloud account
- Teams keep their data, bills and resources in AWS or GCP, and can leave Encore Cloud without migrating off the infrastructure it created.
Timeline
- 2021
Encore’s open-source repository is published
- 2022
Encore v1.0 and a $3 million seed round led by Crane Venture Partners
- 2024
Encore.ts launches in May on a Rust runtime
- 2026
Early access for Encore.py and Encore.rs in September; v1.58.8 in October
- Encore blog: Putting the fun back into software development (v1.0 and seed, Apr 2022)
- Encore blog: Encore for TypeScript (May 2024)
- Encore blog: The Rust runtime (Apr 2026)
- Encore blog: Encore for Python (Sep 2026)
- Encore blog: Encore for Rust (Sep 2026)
- GitHub API: encoredev/encore repository (created February 2021, MPL-2.0)
Sources14 · facts checked 24 October 2026
- Encore docs: Overview (SDK, CLI and platform)
- Encore docs: Encore.ts (primitives, local and cloud)
- Encore docs: SQL databases (TypeScript)
- Encore docs: Pub/Sub (TypeScript)
- Encore docs: Defining APIs (TypeScript)
- Encore docs: Infrastructure (what is provisioned on AWS and GCP)
- Encore docs: Connect your cloud account (AWS IAM role, GCP service account)
- Encore docs: Deploying (push to Git)
- Encore docs: Build Docker images for self-hosting
- Encore blog: The Rust runtime (67,077 lines of Rust, napi-rs)
- Encore blog: Encore for Python (application model, least-privilege IAM)
- Encore: Pricing
- Encore: Terms of service (Encoretivity AB, Stockholm)
- GitHub: Encore v1.58.8 release (Oct 2026)