This page answers:
- What container is my app running in?
- What tools and programs are installed?
- How do I set environment variables?
Deployer and Rust version
Deployments are currently built and run in our
shuttle-deployer container, which is based on a Rust Bookworm docker image (Debian 12).
The current Rust version is
It’s not currently possible for you to change this, but being able to choose which toolchain your project will be compiled with is a planned feature.
wasm32-unknown-unknown are installed, which enables compiling
shuttle-next apps and WASM frontends.
Additionally, these tools are installed:
Installing more dependencies is not officially supported, but can be done with a bit of tinkering.
There are some environment variables set in the Shuttle container.
SHUTTLE=true for custom behavior when running on Shuttle.
SHUTTLE=true RUST_VERSION="1.72.0" RUSTUP_TOOLCHAIN="1.72.0"
If you have build flags or env variables that need to be set during compilation, you can add them in
.cargo/config.toml (docs) and include it in your deployment. Below are some examples.
[build] rustflags = ["--more", "cheese"] [env] MY_ENV_VAR = "Shuttle to the moon! 🚀🚀🚀" [target.x86_64-unknown-linux-gnu] linker = "clang" rustflags = ["-C", "link-arg=-fuse-ld=/usr/bin/ld.lld"]
See Shuttle Secrets
Currently we limit a project container’s memory usage to 4 GB during high contention and 6 GB otherwise.
CPU usage per project is currently limited to 4 threads. However, because of how this limit is implemented through Docker, popular crates like
num_cpus may think it has access to all of the host’s threads.
In terms of database resources, the only restriction we have is that an RDS database has a max storage of
Other than that any reasonable usage is acceptable during our beta, but we will intervene when we detect applications that use excessively large amounts of storage (after attempting to contact the owner).