---
title: Development workflow
meta:
  description: Develop in a branch, test your changes, and deploy to your Cloud Workspace.
---

# Development workflow

Tinybird follows a branch-based development workflow. You edit project files in your local repo that is connected to Git, test changes in Tinybird Local or a Cloud Branch, and deploy a new version to your Cloud Workspace.

Use this workflow when you change Data Source schemas, iterate on Pipe logic, add Endpoints, or validate connector ingestion before it reaches production.

## Choose an environment

{% table %}
  * Environment
  * Use it for
  * Example
  ---
  * [Tinybird Local](/forward/development-workflow/local-development)
  * Fast local iteration and CI checks with fixture data.
  * Change a Pipe query, run `tb build`, and call the local Endpoint until it returns the expected result.
  ---
  * [Cloud Branches](/forward/development-workflow/using-cloud-branches)
  * Testing with production-like data without changing production.
  * Check out a Git branch, run `tb build`, change a Data Source schema, and query the branch before deploying.
  ---
  * [Staging deployments](/forward/development-workflow/manual-deployment#staging-deployments)
  * Validating the deployment that can become live.
  * Run `tb --cloud deployment create --wait`, write compatible test events to staging, then promote.
{% /table %}

Local and branch environments are for development. Deployments are for moving a validated project version toward production.

{% steps %}

### Develop in a branch

Choose the development loop that fits the data you need:

- [Local development](/forward/development-workflow/local-development): Run Tinybird Local with fixture data and local APIs.
- [Cloud Branches](/forward/development-workflow/using-cloud-branches): Use a Cloud environment for production-like data, connector validation, preview apps, and pull request review.

### Test your changes

Test Tinybird changes as part of your application workflow, the same way you test the rest of your app. Test locally with fixtures, or test against a Cloud Branch when you need production-like data. You can also validate your data project independently with fixture files, data quality tests, and deployment checks. See [Test your project](/forward/guides/test-your-project).

### Deploy to your Cloud Workspace

Push your changes to Tinybird Cloud with automatic schema migrations. Run a deployment check first when the change affects Data Source schemas, Materialized Views, engine settings, or connector configuration.

- [Examples](/forward/development-workflow/examples): See concrete workflows for Data Source evolution, Pipe iteration, SDK projects, and deployments.
- [Evolve Data Sources](/forward/guides/evolve-data-source): Understand how schema, engine, and Materialized View changes are migrated during deployments.
- [Manual deployment](/forward/development-workflow/manual-deployment): Deploy directly from the CLI.
- [CI/CD](/forward/development-workflow/cicd): Automate testing and deployment with GitHub Actions or GitLab CI.

{% /steps %}

## Examples

See [Development workflow examples](/forward/development-workflow/examples) for common loops with datafiles, the TypeScript SDK, and the Python SDK.

## Core concepts

- [Tinybird Local](/forward/core-concepts/tinybird-local) explains the local runtime, services, installation, Docker usage, persistence, and local Tokens.
- [Branches](/forward/core-concepts/branches) explains the Branch resource model and data isolation semantics.
