Skip to content
Esc
↑↓navigate↵open⌘Jpreview
On this page

Dashboard

The page at the server's root shows the time saved, the hit rate, the storage used, and usage by team, CI provider, and coding agent.

Open the server’s URL in a browser, such as https://turborepo-remote-cache.<your-subdomain>.workers.dev. The page needs no token and refreshes every minute.

What it shows

The range control at the top picks the last 24 hours, 7 days, 30 days, or 90 days. Every figure covers that range and shows its change from the same stretch of time one range earlier. The line beside the control shows the time saved since the server recorded its first run.

  • Time saved. After every run, turbo reports each cache lookup, and a hit carries the duration of the task it replayed. The dashboard adds those durations up, for this server and for the local cache on each machine.
  • Share of task time from a cache. Time saved, divided by time saved plus the run time of the tasks that ran. turbo reports that run time with each upload, so tasks that ran without uploading aren’t counted.
  • Tasks. Every task checks the cache on its own machine first, and asks the server only when that misses. A task that misses both runs. The dashboard splits tasks into those three outcomes and shows the share that came from a cache.
  • Server hit rate. The share of lookups that reached this server and found the artifact. It shows how well the server serves the tasks that need it.
  • Saved per run and runs. Time saved divided by runs, and the number of turbo runs.
  • Teams. Runs, hit rate, time saved with its trend, storage, and downloads for each team, which is the teamId or slug that turbo sends. The table appears when more than one team uses the server.
  • Storage. What the server stores, and how the total changed over the range.
  • Clients. The CI providers that ran turbo, the AI coding agents that started runs, and the turbo versions and platforms that moved artifacts.

The stats live in a database. Cloudflare deploys come with one, and Configure the stats database covers every other host.

Restrict access

The dashboard is public. Anyone with the server’s URL can see your team names and usage. To restrict it, put / and /stats behind your own access control, such as Cloudflare Access, and leave /v8/* reachable with turbo’s bearer token. Protect both dashboard routes. Protecting only / leaves the data accessible through /stats.

When storage numbers update

The expiry task measures storage while it deletes expired artifacts. A new server shows no storage numbers until that task first succeeds.

To measure now, run expiry on demand. This also deletes expired objects. On Netlify and Lambda, configure an external schedule to keep measurements current.

Read the stats as JSON

GET /stats returns everything the dashboard shows. It needs no token. The optional range query parameter is 24h, 7d, 30d, or 90d, and defaults to 30d:

curl "https://<your server>/stats?range=7d"

The response has "enabled": false when the server has no stats database. Day buckets are UTC days, and every duration is in milliseconds.

Was this page helpful?