---
title: Migrate from Classic without connectors
meta:
    description: Migrate a Tinybird Classic project that does not use managed connectors to Tinybird Forward.
---

# Migrate from Classic without connectors

Follow this path if your project ingests data through the Events API, direct HTTP requests, or any other method that doesn't rely on a managed connector. This is the fastest path to Forward and can be run entirely from the CLI.

If your project uses S3, GCS, Kafka, DynamoDB, or other managed connectors, follow [Migrate with connectors](/forward/migrations/migrate-from-classic/with-connectors) instead.

## Prerequisites

- Install [uv](https://docs.astral.sh/uv/getting-started/installation/) to run isolated versions of the Classic and Forward CLIs side-by-side via `uvx`. The migration steps below use `uvx` for the one Classic command to avoid the version conflicts that can occur when both CLIs are installed globally (they both use the `tb` command).
- Install the [Tinybird Forward CLI](/forward/install-tinybird). If you already have the Classic CLI installed globally, run `tb --version` after installing Forward to confirm `tb` resolves to the Forward CLI. If it still resolves to Classic, force-reinstall Forward (for example, `uv tool install --force tinybird`) or add a shell alias pointing `tb` at the Forward binary.

## Migrate your workspace

{% steps %}

### Authenticate to your workspace

Log in to your workspace with the Classic CLI. This creates a `.tinyb` file in the current directory if one doesn't already exist:

```bash
uvx --from tinybird-cli@latest tb auth --host <HOST>
# Example: uvx --from tinybird-cli@latest tb auth --host https://api.europe-west2.gcp.tinybird.co
```

Replace `<HOST>` with your workspace's [API region host](/api-reference#current-tinybird-regions). The CLI then prompts you for your workspace admin token.

### Pull your project

Download your datafiles from Tinybird Cloud with the Forward CLI:

```bash
tb --cloud pull
```

This command overwrites files in your local repo. Because the pull structures directories following Tinybird's guidelines, remove any existing data source and pipe files from your local repo before running it. You can reorganize the resulting files afterwards if you prefer a different layout.

### Migrate to Forward

Run the migration command:

```bash
tb migrate-to-forward
```

This command deletes branches and releases, runs a deploy check, generates a `tinybird.config.json` file, switches the workspace to Forward, and deploys it.

If you have CI/CD configured, push the changes to your repository to complete the migration. See [CI/CD](/forward/test-and-deploy/deployments/cicd) for details on the CI workflow, CD workflow, and creating preview deployments.

If you don't have CI/CD configured, the migration is complete after this step.

{% /steps %}

The migration is complete! Your project will continue working as expected; you do not need to change your tokens, endpoint URLs, or anything else.

## Next steps

* Learn about working with Forward in the [Forward documentation](/forward).
