---
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 develop and test in a branch, then deploy to your cloud workspace.

{% steps %}

### Develop in a branch

Create a branch to iterate on your project without affecting production. Choose between:

- [Cloud-based branches](/forward/development-workflow/cloud-branches): Create ephemeral branches on Tinybird Cloud to test with production data.
- [Local development](/forward/development-workflow/local-development): Run Tinybird Local with Docker for a fully offline environment.

### Test your changes

Test Tinybird changes as part of your application workflow, the same way you test the rest of your app. Locally or against a Cloud branch. Locally (or in ci) you can also validate your data project independently with fixture files, data quality tests, and deployment checks. See [Configure local testing](/forward/test-and-deploy/test-your-project).

### Deploy to your cloud workspace

Push your changes to Tinybird Cloud with automatic schema migrations.

- [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 %}

## Self-managed

If you need to run Tinybird infrastructure in your own cloud environment, see [Self-managed](/forward/development-workflow/self-managed).
