---
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/guides/migrate-from-classic-with-connectors) instead.

## Prerequisites

Install [uv](https://docs.astral.sh/uv/getting-started/installation/) to run the one required Classic CLI command via `uvx` without installing `tinybird-cli` globally. This avoids the version conflicts that can occur when both CLIs are installed globally (they both use the `tb` command).

### Uninstall the Classic CLI

If you have the Tinybird Classic CLI installed globally, uninstall it before installing Forward. Both CLIs use the `tb` command, so having both installed causes version conflicts:

```bash
pip uninstall tinybird-cli
```

If you installed the Classic CLI inside a virtual environment, activate it first or run `pip uninstall` against the right interpreter (for example, `python3 -m pip uninstall tinybird-cli`).

### Install the Tinybird Forward CLI

Run the following command to install the Tinybird Forward CLI:

{% tabs initial="For macOS and Linux" %}

{% tab label="For macOS and Linux" %}

```bash
curl https://tinybird.co | sh
```

{% /tab %}

{% tab label="For Windows" %}

```bash
powershell -ExecutionPolicy ByPass -c "irm https://tinybird.co | iex"
```

{% /tab %}

{% /tabs %}

After installing, run `tb --version` to confirm `tb` resolves to the Forward CLI. See [Tinybird Local](/forward/core-concepts/tinybird-local#install-tinybird) for more information.

## 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/development-workflow/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).
