Introducing the new Shuttle platform! We’ve supercharged what developers love about Shuttle, combining our powerful developer experience with enterprise-grade infrastructure. For developers, we’ve kept it simple and intuitive - no complex configs, just focus on your Rust code. On the production side, we’ve implemented VM-level isolation, increased reliability and scalability to meet real-world demands. From solo developers to enterprise teams, Shuttle now offers the perfect blend of ease and production-ready robustness.

Read the full announcement here!

Important Dates

  • January 2nd, 2025: Deployment freeze on legacy platform
  • January 14th, 2025: Legacy platform shutdown begins (gradual shutdown and removal of all projects)
  • January 31st, 2025: Complete decommissioning of legacy platform infrastructure

Migrate to the new platform for continued deployment capabilities. Check out our migration docs.

Domain and CLI changes

Access the NEW platform

Access the OLD platform (no longer available)

Changelog

Changed

  • ⚠️ The Shuttle Console is located at console.shuttle.dev instead of console.shuttle.rs.
  • ⚠️ Project subdomains are under *.shuttle.app instead of *.shuttleapp.rs
  • ⚠️ A new binary shuttle is now provided for using the new platform (read more).
  • Project names are no longer globally unique, only unique per account. Project URLs now have some random characters at the end of its default subdomain, e.g. myproject-3h5n.shuttle.app.
  • Builds and deployments are now fully separated. This allows for more specialised build workflows, and more efficient deployment hosting.
    • Builds run on AWS CodeBuild, and now produce a Docker image instead of just a binary. This implies we can support more languages than Rust in the future. ✨
    • Deployments run on AWS ECS with Fargate.
  • CLI commands:
    • deploy: no longer runs tests, so --no-test has no effect.
    • deploy: no longer denies dirty deployments by default (read more).
    • status: use deployment status instead.
    • stop: use deployment stop instead.
    • project status: projects no longer have a state, so --follow has no effect.
    • login: automatically gets the API key from the API after an approval in Shuttle Console. No more copy + pasting!
  • Max archive size for deployments is now 100 MB (up from 50MB).
  • Secrets.toml must now be in the root of the cargo workspace (--secrets <file> can still be used for a custom location).
  • Shuttle.toml:
    • Renamed the assets field to deploy.include (read more).
    • For static files to move from the build stage to the runtime container, you must specify build.assets (read more).
  • Shared Postgres resource:

Added

  • The Shuttle proxy, that proxies HTTP requests to user projects, now sets the X-Forwarded-For header on all requests, with the IP of the original caller.
  • CLI commands:
    • Commands that target a project: You will now be prompted to link your project directory to a Shuttle project.
    • In addition to --name <name>, you can also use --id <id> to target specific projects. This overrides project linking.
    • project link: explicitly re-link the project directory to a Shuttle project.
    • certificate command for adding and managing SSL certificates for custom domains.
    • deploy --no-follow to not poll the deployment status until it reaches a running or failed state.
    • account to show information about your account.
    • project update name to rename a project.
  • You can now create accounts with Google sign-in and email + password. Accounts on new providers with matching emails are not linked and are treated as separate accounts.
  • The ability to increase the allocated CPU and RAM limits (contact us).

Removed

  • Shuttle Persist resource and the persistent file volume. (We plan to implement an S3-based replacement.)
  • MongoDB Shared Database resource. (Removed due to having very few users.)
  • AWS RDS Database resource. (We plan to bring it back.)
  • CLI commands:
    • project stop
    • project restart
    • clean
  • The Teams feature has been temporarily disabled. We plan to enable it after improvements have been made.