# Migrate a workflow (/docs/ci-runners/migration)



Connect the GitHub App and add credit before changing `runs-on`. Migration changes local YAML; it does not install the App, add funds, push a commit or start a job.

## From the dashboard [#from-the-dashboard]

Open the migration tool in the dashboard. Paste a workflow to preview its proposed label changes. Review the patch, then apply it in your repository.

## From the CLI [#from-the-cli]

[Install the CLI](/docs/agents/cli), then run this inside your repository:

```sh
berrybox migrate --file .github/workflows/ci.yml
```

The command returns JSON with the proposed edits and a unified patch. It leaves the file untouched. To apply the reviewed change:

```sh
berrybox migrate --file .github/workflows/ci.yml --label berrybox-4vcpu-ubuntu-2404 --write
```

The CLI checks that the file has not changed since it was read. Comments and quoting are preserved.

## What migrates automatically [#what-migrates-automatically]

The tool recognizes compatible Ubuntu 24.04 GitHub, Blacksmith and Depot labels. Matrix expressions, label arrays, custom/self-hosted configurations, macOS, Windows and Ubuntu 22.04 jobs require manual review. A skipped job is an instruction to review compatibility, not permission to replace its label blindly.

Keep triggers, workflow permissions, secret references, services and matrix behavior unchanged. Review any assumptions about preinstalled tools; use explicit setup actions when your project needs a particular toolchain.

<Warning>
  A workflow push can trigger paid jobs. Have your agent show the patch and runner rate before it pushes or starts a run.
</Warning>

The MCP migration tool produces the same preview. It does not edit files or open a pull request.
