Now with file-level deep analysis

Git analytics
that stays on
your machine.

Connect GitLab or GitHub, sync commits locally, and unlock deep visibility into team velocity, contribution patterns, and review health — with zero data ever leaving your device.

macOS · Tauri 2 · Rust-powered · No account required

GitLab + GitHub
GitPulse — acme-engineering
acme-eng
Analytics
Dashboard
My Stats
Projects
Compare
Team
Reviews
Access
Settings
Commits
0
Added
0
Deleted
0
Monthly contribution — last 6 months
0
Commits per sync
0
Projects per group
0
Git providers
0
Cloud dependencies
Everything you need

Built for teams who care about
code quality and privacy.

From daily commit stats to cycle-time analysis, GitPulse surfaces the signals that make engineering teams faster — without any telemetry.

Multi-Provider Analytics

Full parity across GitLab and GitHub. Connect any number of groups or orgs — each with its own token, stored securely in the OS keychain.

GitLabGitHubMulti-group
Team Velocity Dashboard

Commits, LOC added, LOC deleted — per member, per project, per week or month. Sortable contributor table, trend charts, and a GitHub-style contribution heatmap.

HeatmapTrendsCSV export
Review & PR Insights

Median time-to-merge, p75/p90 percentiles, cycle-time breakdown (open → review → merge), PR size distribution, stale open MR detector, and weekly throughput chart.

Cycle timeTTMReview load
Access Matrix

Group and project membership at a glance. Role-gated member removal, direct vs. inherited membership, activity status from commit data, CSV export.

RolesPermissionsRemoval
My Stats

Your personal contribution page. Auto-detects your identity via OAuth email or name matching. Streaks, peak records, project rankings, day/hour distribution, and team rank context.

IdentityStreaksPeaks
File-Level Deep Analysis

Per-project opt-in local git clone. Exclude lockfiles, generated code, or any glob pattern from LOC totals. Runs entirely offline. Toggle instant — no re-fetch needed.

git2/RustGlob patternsOffline
Feature deep-dive

Every view tells
a different story.

01
Team Velocity
Heatmap-style contribution grid, animated contributor bars, and monthly LOC breakdown — all filterable by project, member, or date range.
02
Review Health
Time-to-merge percentiles, cycle-time segmentation, PR size distribution, and a stale MR detector surfacing rotting reviews instantly.
03
Access Matrix
Every group and project member with their role, activity status, and expiry — with role-gated removal right from the interface.
04
Deep Analysis
File-level LOC filtering via a local bare clone. One toggle to exclude lockfiles or generated code from your numbers — no re-sync required.
Contribution heatmap · last 12 weeks Live
Sounak D.
284
Alice K.
207
Marcus T.
141
Priya S.
99
MR review health · last 90 days Live
Median TTM
4.2h
p75
11h
p90
28h
Merged
342
Weekly throughput
Mar 3
Mar 10
Mar 17
Mar 24
Mar 31
Apr 7
Created Merged
Group access matrix · acme-engineering 8 members
Sounak Das
Owner
● Active
Alice Kim
Maintainer
● Active
Marcus T.
Developer
● Active
Priya S.
Developer
◐ 32d ago
Jordan W.
Reporter
— none
Deep analysis · api-service Enabled
📁api-service /
📄src/index.tscounted+84
📄src/routes.tscounted+212
📄pnpm-lock.yamlexcluded+42,891
📄dist/bundle.jsexcluded+18,330
📄README.mdcounted+28
Raw API total+61,545 lines
After deep analysis+324 lines ✓
Excludedpnpm-lock.yaml, dist/**
Deep Analysis

Stop letting lockfiles
inflate your LOC numbers.

GitLab and GitHub return additions/deletions pre-summed across all files. One accidental lockfile commit can make a 10-line change look like 40,000 lines.

  • Opt-in per project — only clone what you need
  • Bare partial clones via git2 — no file contents stored
  • Glob patterns: *.lock, dist/**, node_modules/**
  • Toggle is instant — no re-fetch, no re-clone
  • Incremental: subsequent syncs are git fetch only
commit a3f8d2e · api-service
·chore: update dependencies
+src/handlers/auth.ts+84
+src/middleware/rate-limit.ts+52
+pnpm-lock.yamlexcluded · +42,891
+dist/bundle.min.jsexcluded · +18,330
Before: +61,357 lines After: +136 lines
Setup in 60 seconds

Zero config.
Just connect and go.

1
Connect your provider

Enter your GitLab URL or GitHub org, paste a personal access token — GitPulse stores it in your OS keychain. No accounts, no sign-up.

2
Sync data locally

GitPulse fetches commits for all projects in your group concurrently, builds an on-disk cache, and never needs to re-download what it already has.

3
Explore at full depth

Dashboard, My Stats, Projects, Reviews, Access Matrix — all load in milliseconds from cache. Filters and date ranges update instantly, no round-trips.

Privacy by design

Your code data is
none of our business.

GitPulse is a desktop app. There is no server. There is no telemetry. Your commit history stays on your machine, always.

OS Keychain Storage

Tokens are stored in macOS Keychain, never in localStorage, never on disk in plaintext. A file fallback is chmod 0600 when the keychain is unavailable.

Strict Content Security Policy

Tauri's webview enforces a strict CSP. No external origins, no inline scripts. XSS is fail-loud, not silently exploitable.

Zero Telemetry

No analytics SDK, no crash reporting, no network calls except to your own Git provider. The app has no backend to call home to.

CSV Injection Guard

All CSV exports sanitise leading formula chars (=+-@). HTML reports escape every interpolated value through an esc() helper.

Built with
Rust Tauri 2 React 18 TypeScript git2 globset reqwest Zustand Recharts TailwindCSS
Ready?

Understand your team's
velocity today.

Free, open-source, and yours to keep. No subscription, no cloud, no compromise.

macOS · Tauri 2 · MIT License · Built by Sounak Das