Releases

cargo-shuttle v0.57.1

11 Sept 2025

Fixes

  • Ensure Windows binary is built with source files in LF mode

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.57.0...v0.57.1

v0.57.0

11 Sept 2025

Updates

  • Deprecated shuttle-tide and shuttle-thruster and removed their hello-world templates. To continue using the frameworks in newer runtime versions, copy their Service implementation into your own code.
  • Updates to service and resource dependencies:
    • Bump salvo to 0.83
    • Bump warp to 0.4
    • Bump async-openai to 0.29
    • Bump opendal to 0.54
    • Bump diesel-async to 0.6
    • Bump libsql to 0.9
  • Added new command aliases: shuttle i for init, shuttle r for run, shuttle d for deploy (depl is the alias for deployment subcommands)
  • CLI now shows the native output from the cargo subprocess when building, and better printouts for other CLI operations
  • Added experimental build command and --docker flag for simulating the platform’s Docker builds. Feedback appreciated.
  • Unified how the run (build) and deploy commands gather flags for the cargo build command
  • Improved how cargo metadata is gathered, speeding up project-related commands
  • Various improvements to the Shuttle MCP server
  • Fixed a bug in runtime where the runtime would exit if an invalid HTTP request arrived on the health check port. Now logs an error instead.
  • Bump MSRV to 1.86

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.56.6...v0.57.0

cargo-shuttle v0.56.6

28 Jul 2025

Fixes

  • Fixed bug where project create --name <name> failed to create projects. The command now requires providing --name <name>.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.56.5...v0.56.6

cargo-shuttle v0.56.5

24 Jul 2025

Fixes

  • Fixed argument naming conflict in the project update name command

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.56.4...v0.56.5

cargo-shuttle v0.56.4

23 Jul 2025

Fixes

  • Fixed dependency error when installing via cargo

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.56.3...v0.56.4

cargo-shuttle v0.56.3

21 Jul 2025

Added

  • Enabled the resource dump command, available for database::shared::postgres resource type. Docs for how to use it.

Fixes

  • Fixed deployment id arg conflict with --id in logs and deployment commands

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.56.2...v0.56.3

cargo-shuttle v0.56.2

7 Jul 2025

Fixes

  • --name is now correctly prioritized over a linked project id

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.56.1...v0.56.2

cargo-shuttle v0.56.1

4 Jul 2025

Fixes

  • Fixed incorrect warning about lowercase ‘shuttle.toml’
  • Installer: Now respects CARGO_HOME and CARGO_INSTALL_ROOT

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.56.0...v0.56.1

v0.56.0

2 Jul 2025

Shuttle: v0.56.0 update

Configure instance size via macro

On the Pro tier and above, you can now configure the compute instance size with the runtime macro. Read more on the docs!

#[shuttle_runtime::main(instance_size = "m")] // 1 vCPU, 2 GB RAM
async fn main() -> ShuttleAxum {
    ...
}

Shuttle MCP server

The CLI now packs a built-in MCP server with tools for searching docs and executing basic shuttle commands. For example, use it in Cursor by configuring its settings:

{
  "mcpServers": {
    "shuttle": {
      "command": "shuttle",
      "args": ["mcp", "start"]
    }
  }
}

Other updates

  • In workspaces, the CLI now looks for the first binary entrypoint file with a fully qualified #[shuttle_runtime::main] macro inside. This drops the requirement that binaries for Shuttle must match the crate name!
    • ⚠️ This is a breaking change if you use #[main] with use shuttle_runtime::main;.
  • Added global option --output json to print the main command output as raw JSON responses straight from the API client. Useful for writing scripts.
    • ⚠️ This includes breaking changes in the shuttle-api-client crate
    • ⚠️ The generate command’s --output argument was renamed to --output-file
  • --name and --id are now separate arguments (instead of aliases) for specifying the project name and id respectively
  • The init command can now take the --id [project_id] arg to link to an existing project right after generating the files
  • Deployment archive no longer packs Secrets.toml or any override via --secrets as they are not used when building
  • Improved the API client’s handling of 4xx and 5xx responses
  • CLI will now warn if it detects a lowercase ‘shuttle.toml’ file

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.55.0...v0.56.0

v0.55.0

21 May 2025

Shuttle: v0.55.0 update

Shuttle + Rama 0.2 integration

Thanks to @GlenDC, a new service crate shuttle-rama has been added, which allows running Rama services on Shuttle! Check out the Rama examples and try it yourself with shuttle init --template rama on the latest CLI version.

Other updates

  • Minor breaking changes to API user response model fields

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.54.0...v0.55.0

v0.54.0

7 May 2025

Shuttle: v0.54.0 update

  • Fixed a bug where the CLI would not exit with an error when a deployment failed
  • Improved forward compatibility in the API client
  • Added anonymous telemetry to the installer scripts (more info)
  • Other minor improvements to the installer scripts

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.53.0...v0.54.0

v0.53.0

12 Mar 2025

Shuttle: v0.53.0 update

Local run live reloads with bacon

If you have bacon 3.8.0 or higher installed, you can now use shuttle run --bacon to start a headless bacon job that restarts the local run when Rust-related files are saved.

To customize this behavior, you can set up your own jobs in bacon.toml. Shuttle’s default bacon config can be found here.

Thanks to @c-git and @laststylebender14 for contributing this!

Secrets.dev.toml bugfix

Fixed a bug in 0.52.0 where Secrets.dev.toml was not being loaded on local runs.

Other updates

  • Added runtime support for running behind a dedicated ALB in deployments, instead of the normal proxy
  • Local run now simulates the health check present in deployments (every 5s) by pinging the runtime on a health check port
  • The runtime now prints a message when it gets shut down in deployments, making it clearer in deployment logs when it got shut down
  • Added CLI support for displaying which Shuttle Team a project belongs to, and displaying the project list per team
  • Improved some error messages in CLI
  • Moved some CLI printouts from stdout to stderr
  • Bumped diesel version in shuttle-aws-rds

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.52.0...v0.53.0

v0.52.0

4 Feb 2025

Shuttle: v0.52.0 update

Removal of all legacy shuttle.rs code

This release follows the shutdown of the shuttle.rs platform, and removes all related legacy code (a lot). This brings compilation speedups and more flexibility for upcoming features. Read more below!

New redeploy command

Added shuttle deployment redeploy [deployment_id] which redeploys the built image of the current/latest (or provided) deployment if available. This allows you to skip the build step if you need to restart your service.

Breaking changes

  • Removed all legacy CLI commands and options. cargo shuttle now targets shuttle.dev.
  • Removed all legacy crate APIs and renamed all “beta” crate APIs to replace their previous counterparts
  • Removed discontinued crates & resources
  • Removed, changed or moved crate features and models, mainly in shuttle-common
  • Bumped postgres version in local provisioner to 16, to match current RDS and shared databases
  • Fixed shuttle run to use same secrets loading logic as shuttle deploy, which is more strict, instead of using legacy logic

Other updates

  • Upgraded many dependencies (axum, http, hyper, reqwest, etc)
  • Due to dependency cleanup, an axum hello-world is now at 210 build steps, down from 279 🥳. cargo-shuttle has a similar improvement (if you’re installing from source).
  • Frameworks are now re-exported by their Shuttle service integration. You can now do, for example, use shuttle_axum::axum;.
  • (Upcoming feature) New setup-otel-exporter feature flag in shuttle-runtime for enabling telemetry exporting
  • deployment redeploy and deployment stop now supports --no-follow and --raw

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.51.0...v0.52.0

v0.51.0

10 Jan 2025

Shuttle: v0.51.0 update

Axum 0.8 support

Axum 0.8 is now used by default in shuttle-axum.

To keep using Axum 0.7 with Shuttle, use this cargo feature:

axum = "0.7"
shuttle-axum = { version = "0.51.0", default-features = false, features = ["axum-0-7"] }

Support for Axum 0.6 has been dropped with this release.

OpenDAL Operator for Shared Postgres DB

This feature serves as an alternative to shuttle-persist, which is not supported on shuttle.dev.

Two new output types have been added to #[shuttle_shared_db::Postgres] under the opendal-postgres crate feature:

  • opendal::Operator, which provides a generic key-value store interface backed by a table in the database.
  • shuttle_shared_db::SerdeJsonOperator, which provides an interface for storing any serializable type T as JSON in the Operator table. This is similar to the shuttle-persist interface.

Other updates

  • Bumped salvo to 0.75 in shuttle-salvo.
  • Bumped opendal to 0.51 in shuttle-opendal.
  • Added an optional timeout setting in shuttle-api-client.
  • Fixed a bug where cargo-shuttle would put gitignore rules on the same line as existing ones.

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.50.0...v0.51.0

v0.50.0

7 Jan 2025

Shuttle: v0.50.0 update

Bug fixes

Other updates

  • Increased MSRV of the Shuttle crates to 1.81
  • The version of libsql in the shuttle-turso crate has been upgraded from 0.3.1 to 0.6.0.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.49.0...v0.50.0

v0.49.0

12 Nov 2024

Shuttle: v0.49.0 update

Google Login

You can now Log in with Google on the Shuttle Console!

New CLI login flow

shuttle login now uses the Shuttle Console to authorize the CLI login with one click. No need to copy + paste the API key!

shuttle login --prompt and shuttle login --api-key <key> are still available as fallbacks.

Other updates

  • shuttle project update name <new-name> allows you to rename a project. Note: This also updates the default subdomain name. Custom domains remain unchanged.
  • (shuttle.rs) Added cargo shuttle resource dump database::shared::postgres to allow migrating postgres data out of the shared cluster. This can be used to move data to the shuttle.dev platform (docs).
  • Fixed a bug where global args would not autocomplete in shell completions
  • shuttle generate shell shell completions now correctly generate completions for shuttle
  • Fixed shuttle run requiring project linking, fixed shuttle init project linking
  • Improved some API errors

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.48.3...v0.49.0

cargo-shuttle v0.48.3

10 Oct 2024

Bugfix release

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.48.2...v0.48.3

cargo-shuttle v0.48.2

10 Oct 2024

Patch release

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.48.1...v0.48.2

cargo-shuttle v0.48.1

3 Oct 2024

Bugfix release

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.48.0...v0.48.1

v0.48.0

1 Oct 2024

Shuttle: v0.48.0 update

This update packs a lot of changes under the hood in preparation of upcoming platform updates. Stay tuned for more announcements!

Updates

  • Bumped sqlx to 0.8.2 in shuttle-shared-db and shuttle-aws-rds
  • MSRV is now 1.78
  • Rust 1.81 is now available in deployers after a project restart

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.47.0...v0.48.0

v0.47.0

23 Jul 2024

Shuttle: v0.47.0 update

New shuttle-openai plugin

We now provide a macro for easily setting up an async_openai::Client:

#[shuttle_runtime::main]
async fn main(
    #[shuttle_openai::OpenAI(api_key = "{secrets.OPENAI_API_KEY}")]
    openai: Client<OpenAIConfig>,
) -> shuttle_axum::ShuttleAxum { ... }

Check out this example for the full code.

New shuttle-api-client library

The cargo-shuttle logic for calling the Shuttle API has been extracted into a separate crate. The API and public interface will evolve as we release more features.

No URL path sanitization

We are no longer sanitizing path traversals in the proxy, making it more transparent & correct, and letting the user code (or web framework) handle it.

Other updates

  • (Hotfixed during 0.46.0) Fixed the team project list endpoint
  • (Released during 0.46.0) Rust 1.79 available in deployers
  • MSRV is now 1.77
  • cargo shuttle deploy --output-archive <path> can now be used to dump the deployment archive to disk instead of deploying it.
  • Added more detailed request debugging in cargo shuttle --debug. Be careful when using the debug flag, the output can contain sensitive information.

Contributions

  • @Dreaming-Codes updated the Qdrant dependency in shuttle-qdrant to 1.10

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.46.0...v0.47.0

v0.46.0

13 Jun 2024

Shuttle: v0.46.0 update

Shuttle feature flag

cargo-shuttle and the Shuttle deployer will now activate the cargo feature shuttle of the package if it exists (and disable default features). This allows for easy conditional compilation depending on if you’re compiling for Shuttle or something else.

# Compiling this package on Shuttle will enable the features
# "shuttle" and "bar". To use default features on Shuttle, add
# "default" to the shuttle array.
[features]
default = ["foo"]
shuttle = ["bar"]
foo = []
bar = []

Other updates

  • (released during 0.45.0) Rust 1.78.0 is now available in deployers.
  • Improved the project delete command’s reliability.
  • Fixed a bug in the proxy where redirects from http to https would have the incorrect URL.

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.45.0...v0.46.0

v0.45.0

13 May 2024

Shuttle: v0.45.0 update

This release comes with a few bugfixes and lots of behind the scenes work on upcoming updates.

Breaking changes

  • The project list command on cargo-shuttle v0.44.0 will produce an additional 404 error. Upgrade to v0.45.0 to resolve this.

Bug fixes

  • Improved the error when Docker is not running on local runs.
  • Shuttle will no longer try to run library workspace members that have the shuttle-runtime dependency.
  • Made the project delete action more reliable.

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.44.0...v0.45.0

v0.44.0

23 Apr 2024

Shuttle: v0.44.0 update

Improvements to cargo shuttle logs

Until this point, it has only been possible to fetch all the logs for a deployment. Following this release, after upgrading your cargo-shuttle CLI, you will be able to:

  • Fetch the last n log lines with cargo shuttle logs --tail <n>.
  • Fetch the first n log lines with cargo shuttle logs --head <n>.
  • Fetch all the logs lines with cargo shuttle logs --all. Note that this is capped at 4 MiB of log lines.

Thanks to @biplab5464 for contributing this new functionality!

Breaking changes

Bug fixes

  • The shuttle_service::Environment enum is now correctly re-exported from shuttle_runtime.

Other updates

  • We made improvements to the errors returned from the control plane, that should make it easier to resolve some common failures.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.43.0...v0.44.0

v0.43.0

2 Apr 2024

Shuttle: v0.43.0 update

This is mainly a bugfix release, and no upgrade is required. We are working on several upcoming features behind the scenes, so stay tuned!

Updates

  • cargo-shuttle now has a global --debug flag that enables debug logging.
  • Made cargo-shuttle fail fast when encountering an API error, instead of retrying up to 3 times.
  • Fixed a small downtime in the logger service that happened when new versions of Shuttle were deploying.
  • Fixed a bug where having a non-std Result type in scope would make the shuttle_runtime::main macro fail.
  • (released in shuttle-turso 0.42.1) Fixed the connection behaviour when connecting to a remote URL on local runs.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.42.0...v0.43.0

v0.42.0

18 Mar 2024

Shuttle: v0.42.0 update

We're excited to release Shuttle v0.42.0! 🚀

Secrets and Metadata plugins moved to shuttle-runtime

The shuttle-secrets and shuttle-metadata crates have been deprecated. You can now access these resources like this:

use shuttle_runtime::SecretStore;
use shuttle_runtime::DeploymentMetadata;

#[shuttle_runtime::main]
async fn main(
    #[shuttle_runtime::Secrets] secrets: SecretStore,
    #[shuttle_runtime::Metadata] metadata: DeploymentMetadata,
) -> ... { ... }

Other updates

  • Secrets.toml files can now be placed either in the crate root or in the workspace root if your project is in a workspace.
  • Resolved the most common errors in the project delete command. It should now be more reliable.
  • Improved the error message if fetching too many log line in one call.
  • (hotfixed in 0.41.0) Fixed a bug where RDS resources would error on redeployments.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.41.0...v0.42.0

v0.41.0

7 Mar 2024

Shuttle: v0.41.0 update

We're excited to release Shuttle v0.41.0! 🚀

Idle wakeups improved

The proxy will now properly wait until a service exposes its HTTP port when a project is waking up from idle. This should resolve the common 502 errors that services get on the first request to an idled project. No upgrade is needed.

Let us know if you experience any other issues with idling projects!

Easy access to more project templates

cargo shuttle init now allows you to browse the full list of official templates on shuttle-examples.

Other updates

  • shuttle-next is now discontinued
  • cargo-shuttle now has an --offline flag to skip non-essential network requests, like versions checks and template list fetching

Contributions

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.40.0...v0.41.0

v0.40.0

4 Mar 2024

Shuttle: v0.40.0 update

We're excited to release Shuttle v0.40.0! 🚀

[BREAKING] Resource/plugin API updated

We have updated the interface for how a service requests resources, to make it easier to configure our resources, and allowing custom plugins to do more things.

After upgrading (restarting) your project to 0.40.0, your next deployment will need

  • shuttle-runtime 0.40.0+
  • cargo-shuttle 0.40.0+
  • An up-to-date Secrets.toml (previous secrets will be invalidated)

Local runs will also need matching versions of CLI and runtime.

If you have a custom plugin, it will need to be refactored to the new ResourceInputBuilder trait, an updated API for plugins. Check out the implementations of our plugins or an example.

CHANGED: The Metadata struct in shuttle-metadata no longer has a service_name field. Use project_name instead.

Other updates

  • Reduced the dependency weight of shuttle-runtime 🥳. The axum hello-world example went from 291 to 222 dependencies.
  • Added a --secrets arg to the run and deploy commands that allows you to use a different secrets file than the default
  • Added load phase caching, which should improve the speed and reliability of starting the service after wakeups from idle and project restarts
  • AWS RDS resources can now configure their database name in the macro: #[shuttle_aws_rds::Postgres(database_name = "thing")]. The project name is now used as the default name.
  • Newly generated database passwords will now have length 32 instead of 12
  • Fixed a bug where the --working-directory/--wd arg would create directories that didn’t exist
  • The init command will now suggest using a directory with the same name as the project, instead of the current directory
  • Bumped deployer’s trunk version to 0.18.8
  • Projects no longer restart when adding a custom domain
  • Fixed the URL formatting of services with a custom domain
  • (hotfixed during 0.39.0) Fixed an issue where project ownership was not checked in some backends

Deprecating shuttle-next

We are deprecating the current iteration of our WASM framework shuttle-next in this release to keep our priorities focused. Next release, we will drop support for shuttle-next.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.39.0...v0.40.0

v0.39.0

14 Feb 2024

Shuttle: v0.39.0 update

We're excited to release Shuttle v0.39.0! 🚀

Multiple domains + performance improvements

Projects that have custom domains (and have upgraded their deployer to 0.39.0) can now also be reached at their usual *.shuttleapp.rs domain. It is now also possible to add multiple custom domains to a project.

This change also comes with reduced CPU usage per request, so feel free to upgrade even if you are not using custom domains!

OpenDAL plugin

Thanks to @Xuanwo’s contribution, we now have shuttle-opendal. OpenDAL allows you to easily connect to many storage services with credentials that you provide as secrets, for example:

use opendal::Operator;

#[shuttle_runtime::main]
async fn main(
    #[shuttle_opendal::Opendal(scheme = "s3")] storage: Operator,
) -> ... { ... }

Templates

Some templates in our examples repo have been added or updated:

Other updates

  • Rust 1.76 is now available by restarting your project.
  • Deployment logs older than 1 month will regularly be getting cleaned up from now on.
  • Removed our tracking of resources that we don’t need to track, such as static folder, turso, and custom.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.38.0...v0.39.0

v0.38.0

1 Feb 2024

Shuttle: v0.38.0 update

We're excited to release Shuttle v0.38.0! 🚀

AWS RDS pricing

Our AWS RDS instances will from now be a paid add-on instead of a Pro feature. Emails with more information and instructions will be sent out to everyone who uses RDS.

All users can now sign up for AWS RDS in the billing section in the Console.

shuttle-turso now uses the libsql crate

The new and improved replacement for libsql-client is now used, which introduces some breaking changes. The resource output is now a libsql::Connection. Check out the updated docs for more. Thanks @Mouwrice for the contribution!

Other updates

  • The Shuttle crates’ minimum support Rust version (MSRV) is now officially set to 1.75. Future bumps to the MSRV will be announced in release notes. Enjoy those async traits!
  • Fixed a bug where cloning a template with a workspace incorrectly set the project name in the workspace manifest.

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: https://github.com/shuttle-hq/shuttle/compare/v0.37.0...v0.38.0