Using Turborepo with CircleCI

The following example shows how to use Turborepo with CircleCI.

For a given root package.json:

  "name": "my-turborepo",
  "scripts": {
    "build": "turbo run build",
    "test": "turbo run test"
  "devDependencies": {
    "turbo": "1.2.5"

And a turbo.json:

  "$schema": "",
  "baseBranch": "origin/main",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": []
    "test": {
      "dependsOn": ["^build"],
      "outputs": []

Create a file called .circleci/config.yml in your repository with the following contents:

Remote Caching

To use Remote Caching with CircleCI, add the following environment variables to your CircleCI workflow to make them available to your turbo commands.

  • TURBO_TOKEN - The Bearer token to access the Remote Cache
  • TURBO_TEAM - The account to which the monorepo belongs

To use Vercel Remote Caching, you can get the value of these variables in a few steps:

  1. Create a Scoped Access Token to your account in the Vercel Dashboard

Vercel Access Tokens Vercel Access Tokens

Copy the value to a safe place. You'll need it in a moment.

  1. Go to your CircleCI project settings and click on the Environment Variables tab. Create a new secret called TURBO_TOKEN and enter the value of your Scoped Access Token.

CircleCI Environment Variables CircleCI Create Environment Variables

  1. Make a second secret called TURBO_TEAM and enter the value of your team's Vercel URL (or if you're on Hobby, your personal URL works as well). Do not include the part, only the slug.

Vercel Account Slug

  1. At the top of your CircleCI workflow, provide the following environment variables to jobs that use turbo:
# ...
      - image: cimg/node:lts
      # ...
Last updated on April 28, 2022