> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shuttle.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Transfer to the new platform

> How to transfer projects from shuttle.rs to shuttle.dev

This guide is for transferring projects from **shuttle.rs** to the new **shuttle.dev** platform.
If you are a new Shuttle user, you can ignore this document and start from [Installation](/getting-started/installation).

## 1. Check platform features & policies

<Warning>
  Due to the large re-write of the Shuttle platform, some features have been dropped or moved to the feature roadmap.

  Make sure you have read the [Platform Update Changelog](/platform-update/platform-update#changelog) to verify that it is currently possible to migrate your project.
  Notably:

  * **Shuttle Persist** is not supported in the same way. Shared Postgres DB with a similar key-value store abstraction exists instead ([`SerdeJsonOperator` in shuttle\_shared\_db](/resources/shuttle-shared-db)). For help with migrating data, please reach out to us.

  * Migrating **Shared MongoDB** is not possible since the feature has been dropped.
</Warning>

## 2. Update CLI

Follow [Installation](/getting-started/installation) to install the latest Shuttle CLI.

<Snippet file="binaries.mdx" />

<Note>
  The same Shuttle API key is used on both platforms. If you are already logged in, you don't need to `shuttle login` again.
</Note>

To verify that your new CLI is installed and working correctly, try the new account command:

```sh theme={null}
shuttle account
```

If the command does not error, you are ready to use **shuttle.dev**.

## 3. Access the new Console

The Shuttle Console for **shuttle.dev** is accessed at [console.shuttle.dev](https://console.shuttle.dev/).

~~The Shuttle Console for **shuttle.rs** is still accessed at [console.shuttle.rs](https://console.shuttle.rs/).~~

## 4. Update Code

Most Shuttle projects should run on the new platform with minimal code changes.
This is the list of required changes.

### Cargo.toml

Update to the latest version of Shuttle dependencies:

```toml Cargo.toml theme={null}
shuttle-runtime = "0.57.0"
# do the same for all other shuttle crates
```

### Shuttle.toml

The `name` field is now unused.

The `assets` field has been renamed to `deploy.include` ([docs](/docs/files#include-ignored-files)).

If you want the deploy command to keep blocking dirty deployments, add the `deploy.deny_dirty` field ([docs](/docs/files#block-dirty-deployments)).

The new field `build.assets` might need to be added:

<Warning>
  If your project uses static assets or other files at runtime, you need to declare them in `build.assets` to have them copied from the builder to the runtime image ([docs](/docs/files#build-assets)).
</Warning>

### Secrets.toml

Secrets.toml must now be in the root of the cargo workspace, so move it there if it is in a member crate.

`--secrets <file>` on the deploy command can still be used for a custom secrets file location.

## 5. Local Run

Check that your project builds and runs locally with

```sh theme={null}
shuttle run
```

## 6. Deploy

Time to deploy!

```sh theme={null}
shuttle deploy
```

Note your project URL: project subdomains are now under `*.shuttle.app` instead of `*.shuttleapp.rs`.

## 7. (Optional) Migrate Shared Postgres data

If you use a Shared Postgres database and want to migrate data to the new platform, follow the [migration guide](/guides/migrate-shared-postgres)!

## 8. (Optional) Update GitHub Action

If you are using [deploy-action](https://github.com/shuttle-hq/deploy-action), check the new v2 branch for renamed and new required fields:

* Use `shuttle-hq/deploy-action@v2` instead of `shuttle-hq/deploy-action@main`
* Rename `deploy-key` to `shuttle-api-key`
* Add a `project-id` value
* Any other args for `shuttle deploy` can be added in `extra-args`

## 9. (Optional) Custom domains

Once you have moved resources, deployed your app to shuttle.dev, and want to move your custom domain, update your DNS records according to [Domain names](/docs/domain-names) and use the new `shuttle certificate` command to [add SSL certificates](/docs/domain-names#set-up-ssl-certificate).
HTTPS traffic should then be enabled for your custom domain.
