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]
withuse shuttle_runtime::main;
.
- ⚠️ This is a breaking change if you use
- 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
- ⚠️ This includes breaking changes in the
--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
- feat(api-client): always catch 4xx and 5xx errors regardless of body type by @jonaro00 in #2052
- feat: make billing cycle optional in usage response by @oddgrd in #2054
- feat(admin): log retention policies by @jonaro00 in #2053
- fix: rename usage response vcpu reserved field to reserved_hours by @oddgrd in #2056
- feat: added updated user usage structs by @nathanjclark in #2057
- feat(cargo-shuttle): warn about lowercase shuttle.toml by @jonaro00 in #2060
- feat(admin): fail error in looped jobs, notify gc'ed community projects by @jonaro00 in #2063
- feat(api-client, cargo-shuttle): json output mode by @jonaro00 in #2064
- refa(cargo-shuttle): find binary target based on macro in source by @jonaro00 in #2059
- fix(admin): new config uris by @jonaro00 in #2065
- Add build_manifest to main macro output by @fussybeaver in #2062
- feat(cargo-shuttle): separate --id and --name. support 'init --id' with immediate linking by @jonaro00 in #2069
- fix(cargo-shuttle): full json output coverage by @jonaro00 in #2071
- fix: don't care about Secrets*.toml or --secrets when building or deploying by @jonaro00 in #2070
- feat(admin): explicit notify on gc endpoint by @jonaro00 in #2067
- fix: make explicit --name error when no matching project found by @jonaro00 in #2075
- chore: clean up legacy constants & related code by @jonaro00 in #2073
- feat(ifc, cargo-shuttle): extract infra macro annotation parser to separate crate by @jonaro00 in #2072
- The Shuttle MCP Server by @dcodesdev in #2074
- chore: v0.56.0 by @jonaro00 in #2076
New Contributors
- @nathanjclark made their first contribution in #2057
- @dcodesdev made their first contribution in #2074
Full Changelog: v0.55.0...v0.56.0