// Private beta

Infrastructure SDK for building distributed systems in 

Declare databases, Pub/Sub, object storage, caches, cron jobs, and secrets in your Rust code. Encore provisions them locally and in your own AWS or GCP account.

Join the Encore.rs beta

We’re onboarding a small group of teams running Rust on AWS or GCP, with hands-on help for migration and deployment in your own cloud.

Image

Want to talk it through first? Get practical advice from an Encore engineer.

src/main.rs
use axum::{http::StatusCode, routing::post, Json, Router}; use encore::pubsub::Topic; use encore::storage::postgres::Database; use serde::{Deserialize, Serialize}; // Encore finds these declarations and provisions them // locally, in preview environments, and in your cloud. static DB: Database = Database::new("users").migrations("./migrations"); static SIGNUPS: Topic<Signup> = Topic::new("signups"); #[derive(Serialize, Deserialize)] struct Signup { email: String, } async fn create_user(Json(req): Json<Signup>) -> Result<StatusCode, StatusCode> { DB.execute("INSERT INTO users (email) VALUES ($1)", &[&req.email]) .await .map_err(internal)?; SIGNUPS.publish(&req).await.map_err(internal)?; Ok(StatusCode::CREATED) } fn internal(_: encore::Error) -> StatusCode { StatusCode::INTERNAL_SERVER_ERROR } #[tokio::main] async fn main() { encore::initialize(); let app = Router::new().route("/users", post(create_user)); let addr = std::env::var("ENCORE_LISTEN_ADDR").unwrap_or("0.0.0.0:8080".into()); let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); axum::serve(listener, app) .with_graceful_shutdown(encore::shutdown::signal()) .await .unwrap(); }
“What used to take days or weeks of back-and-forth between developers and infra teams is now automated and completed in minutes.”
ImageJosef Sima, Engineering Director at Groupon
2–3xfaster development speed
90%shorter time to market
See case study
// POWERING DEVELOPMENT AT
GrouponPave BankBookshop.orgCoinbasePalletGradient Labs

Define your infrastructure as type-safe objects in Rust

Declare what your application needs directly in Rust, and Encore automatically provisions it across local development, preview environments, and production.

database
✔PostgreSQL database provisioned & migrated

Automated local infrastructure

encore run starts your Rust app along with every database, topic, bucket, and cache it declares.
No Docker Compose. No config files. No manual setup.

~/orders — encore run
$▍
→Your API is running at: http://127.0.0.1:4000
→Development Dashboard URL: http://127.0.0.1:9400/project-aq6i
→MCP SSE URL: http://127.0.0.1:9900/sse?appID=project-aq6i

Local infrastructure

Postgres, Redis, Pub/Sub, and object storage start automatically, with migrations applied

Real tests

encore test runs your test suite against real local infrastructure, not mocks

Tracing built in

Requests, queries, and messages are traced with OpenTelemetry from the first run

From your laptop to your own cloud

The same declarations run locally, in preview environments, and in production. Encore works out the infrastructure, so you and your team can focus on the product.

Keep your framework

Encore.rs handles infrastructure only. Routing, validation, and request handling stay in axum or whatever you already use, so adopting it doesn't mean a rewrite.

Runs in your own cloud

Encore provisions managed databases, queues, buckets, and caches in your own AWS or GCP account. Your data stays in your account.

Least-privilege by default

Static analysis knows which service uses which resource, so each service gets only the IAM permissions it actually needs.

Preview environments

Every pull request gets an isolated environment with its own infrastructure, so changes are tested against the real thing before they merge.

Platform team in control

Region, sizing, and scaling are set per environment in the Encore dashboard or your existing Terraform, not in application code.

Observability built in

Traces, logs, and metrics flow through OpenTelemetry, with each request connected to the queries and messages it caused.

Built for safe agentic development

Encore gives agents a structured model of your application and its infrastructure, so they can ship features in your Rust systems without being handed the keys to your AWS or GCP account.

✓
Guardrails, not cloud consoles
Agents declare the resources a feature needs in code. How they run in each environment stays with your platform team.
✓
Verified end to end
With the application model and a running preview environment, an agent can test its change against the complete system before review.
✓
Consistent patterns
Every service uses the same primitives the same way, so generated Rust code is easy to review and hard to get subtly wrong.

Bring Encore to your Rust stack

The Encore.rs beta is for teams already running Rust on AWS or GCP. We’ll work with you directly on migration and deployment in your own cloud.

Join the Encore.rs beta

We’re onboarding a small group of teams running Rust on AWS or GCP, with hands-on help for migration and deployment in your own cloud.