> ## Documentation Index
> Fetch the complete documentation index at: https://trigger.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Development branches

> Run multiple local dev sessions in isolation by giving each one its own development branch. Use branches to keep parallel work (in separate worktrees, directories, or agents) from clashing.

Every project starts with a single development environment called `default`. A **dev branch** is an isolated environment that lives under development, with its own runs, schedules, and concurrency.

Branches are useful when you run more than one local dev session at a time. Give each session its own branch so their runs don't collide:

* Run several [git worktrees](https://git-scm.com/docs/git-worktree) or copies of your project in parallel, one branch each.
* Let multiple coding agents each work in their own branch without stepping on one another.

When you're done with a branch, you can archive it to free up a slot or just re-use it.

## Run a dev session on a branch

Log in with the CLI first:

<CodeGroup>
  ```bash npm theme={"theme":"css-variables"}
  npx trigger.dev@latest login
  ```

  ```bash pnpm theme={"theme":"css-variables"}
  pnpm dlx trigger.dev@latest login
  ```

  ```bash bun theme={"theme":"css-variables"}
  bunx trigger.dev@latest login
  ```
</CodeGroup>

Then start a dev session on a branch with the `--branch` flag. If the branch doesn't exist yet, it's created:

<CodeGroup>
  ```bash npm theme={"theme":"css-variables"}
  npx trigger.dev@latest dev --branch my-feature
  ```

  ```bash pnpm theme={"theme":"css-variables"}
  pnpm dlx trigger.dev@latest dev --branch my-feature
  ```

  ```bash bun theme={"theme":"css-variables"}
  bunx trigger.dev@latest dev --branch my-feature
  ```
</CodeGroup>

Without `--branch`, the session runs on the `default` branch.

<Tip>
  You can also set the branch with the `TRIGGER_DEV_BRANCH` environment variable instead of the flag.
</Tip>

## Archive a branch

Archive a branch from the CLI when you no longer need it. The CLI detects your local git branch, or you can name one with `--branch`:

<CodeGroup>
  ```bash npm theme={"theme":"css-variables"}
  npx trigger.dev@latest dev archive --branch my-feature
  ```

  ```bash pnpm theme={"theme":"css-variables"}
  pnpm dlx trigger.dev@latest dev archive --branch my-feature
  ```

  ```bash bun theme={"theme":"css-variables"}
  bunx trigger.dev@latest dev archive --branch my-feature
  ```
</CodeGroup>

You can also create and archive branches from the **Dev branches** page in the dashboard.

## Limits on active branches

Each branch has its own concurrency, so we limit how many can be active per project. Archive a branch at any time to unlock another slot.

| Plan  | Active dev branches |
| ----- | ------------------- |
| Free  | 25                  |
| Hobby | 25                  |
| Pro   | 25                  |

Need more? [Get in touch](https://trigger.dev/contact) and we'll raise the limit.
