Deploy Rust apps with a single Cargo command
Shuttle is a crate that uses traits and annotations to configure your backend deployment - including databases.

Serverless for Rust

The only serverless platform that lets you control your infrastructure from Rust code as easily as deriving a trait.

Infrastructure from Rust

Traits and annotations define all your infrastructure from your service code

Serverless

All the infrastructure and wiring you need is handled by the deployer runtime. No VMs or containers

Databases

Wiring up a service to a persistent database is as easy as deriving a trait

Entirely open-source

A completely free and open-source project, with no vendor lock-in or hidden code

Self-hosting friendly

Deploy the entire platform under your own AWS account for extra security and isolation

Fast deploy times

Deploy new versions as quickly as running an incremental build, all with zero downtime

How it works

Shuttle is built for Rust.

A simple cargo command packages up your application, ships it to the shuttle build cluster where it's incrementally compiled and automatically served on a unique subdomain.

Shuttle uses simple but powerful annotations to understand your dependencies. Infrastructure dependencies like databases or key-value stores are spun up for you and everything is automatically wired together from the get-go.

It feels a little magical.

1use rocket::{get, routes, Build, Rocket};
2use shuttle_service::Error;
3
4#[get("/hello")]
5fn hello() -> &'static str {
6    "Hello, world!"
7}
8
9#[shuttle_service::main]
10async fn init() -> Result<Rocket<Build>, Error> {
11    Ok(
12        rocket::build()
13            .mount("/", routes![hello])
14    )
15}

Let's make Rust the next language of cloud-native

We love you Go, but Rust is just better.