Skip to content

GitDashx · Windows x64 / macOS Apple Silicon + Intel / Linux x64 / Docker · runs offline

See how your team really builds software.

GitHub contribution analytics for your organizations: commit timing, quarterly delivery, pull request flow and team comparison, in a desktop app for Windows, macOS, Linux, or a Docker image.

Point it at them and it reads the commit history the way a colleague would: when the work actually happened, what shipped each quarter, how pull requests moved, who is the only person who knows a product.

It runs on your own machine, as a desktop app or a container. There is no account, no server of ours, and nothing to upload.

download for Windows

Dockerintel + arm · git included

  • docker run
    docker run -d --name gitdashx -p 127.0.0.1:8787:8787 -v gitdashx:/data hicoders/gitdashx
  • compose.yaml
    services:
      gitdashx:
        image: hicoders/gitdashx
        restart: unless-stopped
        ports: ["127.0.0.1:8787:8787"]
        volumes: ["gitdashx:/data"]
    volumes:
      gitdashx:

then open http://localhost:8787 · docker hub

macOSnot notarized · try docker

SHA-256 checksums · version 1.11.0

1.11.0 · 126.6 MB · windows 10/11 · git included

The Mac build is not notarized yet

Apple has not notarized it, so macOS blocks it the first time you open it, and you would have to allow it in System Settings, under Privacy & Security.

The Docker image is the same dashboard, in your browser, with nothing to allow.

download anyway

downloading

Windows may stop it the first time

The app is not code-signed yet. If SmartScreen says Windows protected your PC, choose More info, then Run anyway.

With Smart App Control on, Windows blocks unsigned apps outright and offers no way past. The Docker image is the same dashboard, with nothing to block.

downloading

Before the AppImage opens

Mark it executable first: chmod +x on the file, or Allow executing as program in its properties.

It needs FUSE 2, which Ubuntu 22.04 and later leave out (install libfuse2, or libfuse2t64 on 24.04), and on Ubuntu 24.04 and later AppArmor stops its sandbox. The .deb has neither problem.

get the .deb instead
janfebmaraprmayjunjulaugsepoctnovdecmonwedfri
1,271 commits · 14 repositories · 6 people · last 12 monthslessmore

#preview

This is the whole thing

One window, every organization you belong to, for any period you choose.

GitDashxyou
commits
1,271
+14%
merged prs
235
+8%
after hours
18%
was 11%
median to merge
6h40m
-1h20m
when commits happen
monwedfrisun00061218
shipped per quarter
q1q2q3q4q1q2
esapghgauditportal
contributors
a.rahman41224%
s.kowalski3189%
m.okafor24731%
j.lindqvist1746%
t.nakamura12012%
pull requests
opened
268
merged
235
within a day
72%
waiting longest
19 d

Sample data. A screenshot of a real run would show real people's working hours.

#charts

Sixteen charts, one window

Everything the app draws, at the size it draws it. Pick a person and a period and all of it follows.

your share of team output
how much of the team's commits, pull requests, reviews and issues are yours
commits
all branches
41232%
prs opened
open + closed
9636%
prs merged
authored, merged
8837%
prs reviewed
others' prs
6133%
issues opened
open + closed
4435%
leaderboard
everyone, all time, every count side by side
contributorcommitsprsmergedratereviewedissuesrepos
a.rahmanyou412968892%61449
s.kowalski318716490%52317
m.okafor247544787%38266
j.lindqvist174322888%24185
t.nakamura12015853%973
highlights
up to six ranked observations, each set against the period before
workloadworth a look

24 nights with commits after midnight in the last 90 days

11 in the 90 days before

workload

49% of your commits in the last 90 days were outside office hours

down from 53% - rest of team 1%

workloadworth a look

15 days in a row with commits, without a day off

28 jul - 11 aug, the longest stretch this year

output

+110% commits in the last 90 days against the 90 before

544 against 259

focusbetter

6h 40m median time to merge, down from 8 hours

72% merged within a day

team riskworth a look

5 products where one person wrote over 80% of the commits

esap 92%, ghg 85%, audit 100%, and 2 more

when the commits happen
after hours, late nights, weekends, busiest hour
outside office hours
18%
229 of 1,271 commits
rest of team 7.7%
late night, 22:00-04:59
11%
140 commits
rest of team 1.4%
after midnight
64
on 41 different nights
rest of team 5
weekends
13%
162 commits, 30 weekend days
rest of team 1.1%
busiest hour
12 pm
127 commits in that hour
rest of team 5 pm
hour x weekday
office hours boxed, the late-night bands marked
late nightlate night0003060912151821montuewedthufrisatsun
share of commits by hour
your bars, the rest of the team as a line
office hours0%5%10%15%00061218
by weekday
the team's share sits on the same track as a tick
mon23.3% · 297
tue16.9% · 215
wed15.2% · 193
thu14.3% · 182
fri17.6% · 224
sat7.5% · 96
sun5.2% · 66
every day, every commit
a year at a glance, with the streaks and the gaps underneath
janfebmaraprmayjunjulaugsepoctnovdecmonwedfri
days with a commit
214
of 365
longest streak
15 days
28 jul - 11 aug
longest gap
11 days
over the summer break
busiest day
23 commits
14 may
what was built each quarter
stacked by product, with repositories grouped into the product they belong to
esapghgauditportal
47q2 2461q3 2485q4 24128q1 25158q2 25202q3 25183q4 25185q1 26149q2 26
quarter x contributor
the same table also does products and repositories
rowsproductrepositorycontributor
q2 24q3 24q4 24q1 25q2 25q3 25q4 25q1 26q2 26total
a.rahman101217324049302038248
s.kowalski·1215334644504229271
m.okafor··29364229304129236
j.lindqvist···383545232327191
t.nakamura····5428343422172
total1024611392171951671601451118
code frequency
lines added and removed, with generated monsters clipped and marked
+500,289added-286,704removed+213,585net · weekly
janjundec
pull requests
opened, merged, and how many landed over time
opened
268
merged
235
median to merge
6h 40m
within a day
72%
q3 24q2 26
time to merge
your distribution against the rest of the team's
under 1 hour18%
1-4 hours27%
4-24 hours27%
1-3 days16%
3-7 days8%
over a week4%
waiting longest
open, not draft
pull requestauthoropen for
esap#412
Split the reporting job off the request thread
m.okafor19 d
ghg#118
Scope 3 factors for the 2026 dataset
s.kowalski12 d
portal#77
Keep the filter state in the URL
a.rahman6 d
audit#204
Retry the evidence upload on a 502
j.lindqvist2 d
after hours, by contributor
who is carrying the evenings and the weekends
contributorcommitsoutsidelate nightmidnightweekendbusiest
a.rahman41224%11%6413%12 pm
s.kowalski3189%2%63%10 am
m.okafor24731%14%4118%11 pm
j.lindqvist1746%1%22%2 pm
t.nakamura12012%4%95%4 pm
contributors
a card each, with a year of weekly commits
a.rahman#1
Amina Rahman
412 commits+214,880-96,412
s.kowalski#2
Stefan Kowalski
318 commits+151,204-70,338
m.okafor#3
Ada Okafor
247 commits+132,907-88,140
j.lindqvist#4
Jo Lindqvist
174 commits+61,442-22,015
t.nakamura#5
Rin Nakamura
120 commits+38,119-11,760

Drawn, not screenshotted, and every number invented. A screenshot of a real run would show real people's logins and the hours they work.

#measures

Six views of the same history

Every organization you belong to, separately or combined, for any period you choose.

highlights
Up to six ranked observations for the person and period you pick, each set against the period before: after-hours climbing, weekends worked, the longest run without a day off, products only one person knows.
any-stretch-of-time
A year, the last 3 or 12 months, or any two dates down to the minute, narrowed if you like to a time of day such as 10 PM to 5 AM. Every chart, link and report follows it.
when-commits-happen
An hour-by-weekday grid, hourly and weekday charts, and a calendar of every single day. Office hours adjust in 15-minute steps; everyone can be converted to one timezone.
quarterly-delivery
A stacked chart by product and a quarter-by-product table, with repositories grouped into the products they belong to instead of listed as raw repo names.
code-frequency
Lines added and removed over time, and a card per contributor, modelled on GitHub's own graphs. Vendored and generated monsters are cut off and marked, not allowed to flatten the chart.
pull-requests
Opened and merged, median time to merge, share merged within a day, the distribution, and the pull requests that have been waiting longest. Drafts do not count as waiting.
team-comparison
Share of commits, pull requests, merges, reviews and issues, a leaderboard for the period you pick, and after-hours numbers per person - with two accounts belonging to one person merged. Click anyone's share or count for the commits, pull requests and issues behind it.
commits-behind-it
Click any mark - a day, an hour, a quarter cell - to list the commits and pull requests behind it, what each says and a link to it on GitHub. Narrow it by period, time of day, repository or person without leaving it, or drag across its timeline. Copy it as Markdown for a stand-up or an appraisal.
ai-tools
What Claude Code and Codex did on this computer, from the logs they keep here: tokens, requests and prompts on the same calendar and hour-by-weekday grid as your commits, ranked by model, folder and tool. Numbers only, never what was typed.
notifications
A pull request waiting on your review, one of yours left open three days, a weekly recap, a sync that failed: in the app, and from the system while the app is open. Never from a background process.

#output

It tells you what changed

Not a wall of totals. Ranked observations, each one compared with the period before it.

highlights · you · last 90 days, against the 90 before
after-hours share18%+7 pts
weekends worked6 d+2 d
longest run, no day off34 d+11 d
late nights, 22:00-04:5912-3
median time to merge6h40m-1h20m
products only you know3unchanged

Each highlight is measured against the period before it, so the page tells you what changed rather than what is merely large.

#private

Where the data goes: nowhere

The whole tool is one process on your machine talking to GitHub. That is the entire architecture.

network
api.github.com, with your own token - and one other request, below
updates
at most every six hours it fetches latest.json from assets.gitdashx.com to see whether a newer version is out: a public file, asked for with nothing about you or your data in it. The Windows installer and the AppImage then download the new build from there too. Turn it off under the account menu, or with GTS_NO_UPDATE_CHECK=1
server
none - the app runs one on 127.0.0.1 for itself
account
none to create
telemetry
none
source code
never downloaded: git clone --mirror --filter=tree:0 fetches commit metadata and skips file contents
AI tool logs
read, never written: the logs Claude Code and Codex keep on this computer, for the AI tab. It keeps their counts, model and tool names, folders and session titles, never what was typed or said
token
encrypted with the OS keystore (DPAPI on Windows), held by the app process, never handed to the page
listener
refuses requests whose Host is not localhost, cross-site requests by Origin, and non-JSON writes
your data
a folder on your machine; delete it and nothing of it survives elsewhere

Contribution analytics means reading how your colleagues spend their working hours. That is exactly the kind of data that should not be sitting on somebody else's server.

#how

From download to dashboard

  1. 01installChoose your build. Windows carries Git; macOS and Linux use the Git already installed on your computer. No Node or GitHub CLI needed. Or run the Docker image and open it in your browser.
  2. 02connectA short code approved in your browser, a personal access token, or an account the GitHub CLI already holds.
  3. 03selectTick the organizations you want, optionally your personal repositories, and press Analyze.
  4. 04leave itThe first sync pulls history; later ones fetch only what is new, hourly, in the background while you read.

#faq

Questions

Does anything leave my computer?

Nothing about you or your data. It makes requests to GitHub's own API with your token, and at most every six hours fetches a public file from this site to see whether a newer version is out; that check can be turned off in the account menu. There is no GitDashx server, no account and no telemetry. Everything it works out is stored in a folder on your machine.

How does it update?

The Windows installer and the Linux AppImage download a new version in the background, then offer a restart; it also installs the next time you quit. The macOS builds, the portable Windows app and the .deb show that a new version is out, with a link to it. The Docker image shows the docker pull to run.

Does it download our source code?

No. It mirrors history with git clone --mirror --filter=tree:0, which fetches commit metadata and skips file contents entirely. It never reads what is inside your files.

What access does it ask for?

A GitHub token with the repo and read:org scopes. It reads commit metadata, pull requests and repository statistics, and never writes to your repositories.

Why does Windows warn me when I run it?

The Windows builds are not code-signed, so SmartScreen flags an unknown publisher. Choose More info, then Run anyway. Every release publishes a SHA-256 checksum you can verify first. With Smart App Control on, Windows blocks unsigned apps outright and there is no way past, so run the Docker image instead.

Why won't the AppImage open?

Mark it executable first: chmod +x, or Allow executing as program in its properties. It needs FUSE 2, which Ubuntu 22.04 and later leave out: install libfuse2 (libfuse2t64 on 24.04). On Ubuntu 24.04 and later AppArmor also stops its sandbox. The .deb has neither problem. Or run the Docker image.

Why does macOS warn me when I open it?

This Mac build uses ad-hoc signing for testing and is not notarized by Apple. After checking its SHA-256, allow it from Privacy & Security in System Settings. Or skip the app and run the Docker image.

Can I run it with Docker?

Yes: docker run -d --name gitdashx -p 127.0.0.1:8787:8787 -v gitdashx:/data hicoders/gitdashx, then open http://localhost:8787. It is the same dashboard as the desktop app, built for Intel and ARM with Git included, and keeps its data in the gitdashx volume. Already signed in to the GitHub CLI? Add -e GH_TOKEN=$(gh auth token) to skip the sign-in screen. Keep the 127.0.0.1 in the command: the dashboard has no login of its own.

Do I need Git or the GitHub CLI installed?

Windows carries its own copy of Git. The macOS and Linux builds use Git installed on your computer. GitHub CLI is optional on every platform; when it is installed and signed in, the app offers those accounts as a shortcut.

Which desktop platforms are available?

The current release publishes downloads for Windows, macOS, Linux. Only builds listed on this page are available.