Skip to main content
DevPerform is a data pipeline plus an analytics layer. Instead of calling your code host’s API every time you open a dashboard, it ingests your delivery data into its own database and computes metrics from that store. That’s what makes dashboards fast and lets history accumulate for trends. It works the same across GitHub, GitLab, and Bitbucket — a provider abstraction normalizes each host’s data into one shape.

The pipeline

  • Ingestion pulls PRs/MRs with their reviews, comments, commits, and per-file line counts (GitHub via GraphQL + a REST fallback; GitLab via REST v4; Bitbucket via REST 2.0) — all normalized into the same shape.
  • Sync runs hourly and immediately when you add a repo, so new PRs show up without you doing anything.
  • For the Pro rework metric, DevPerform additionally fetches recent commit diffs over a rolling ~21-day window to measure how much code is rewritten. Only the aggregate churn numbers are kept.

What’s stored — and what isn’t

Stored

PR titles, authors, timestamps, review/comment events, merge state, file paths, and additions/deletions counts — plus the metrics computed from them.

Not stored

Your source code. Commit diffs are fetched transiently to compute rework and are not retained as source.

Connecting your code host

You sign in with GitHub, GitLab, or Bitbucket — and the same connection lets DevPerform read your delivery data. Setup is per-host: see GitHub Org Setup, GitLab Setup, or Bitbucket Setup. For GitHub, DevPerform can also operate as a GitHub App installed on your org — scoped, server-to-server access tokens that scale to larger orgs instead of relying on one person’s OAuth token. GitLab and Bitbucket connect via OAuth (the org stores an encrypted, auto-refreshed token). If you’re evaluating DevPerform for a bigger organization, ask us about the options.

Multi-tenant by design

Every piece of data is scoped to your organization. Metrics queries always filter by your org, so one customer’s data is never visible to another.

Freshness

Because metrics come from the synced store, a brand-new PR appears at the next sync (within the hour, or immediately when you add its repo). If you’ve just connected a repo, give the first sync a minute to backfill history before the dashboards fill in.