Your crew's
commits, on
one board.
Commits, lines, stars, streaks for you and your friends. Public repos from GitHub, private and work repos counted on your own machine. No tokens, numbers only.
> GET /api/cron/snapshot
> authorization: Bearer ••••••••
> walking 4 users…
> octocat: 7 public repos, 112 commits
> stats/contributors → 202 (computing)
> retry in 2s… 200
> run 41 done: 4 users, 19 repos, 0 pending
> quota rest=4962/5000 graphql=4996/5000
>
What you get
A scoreboard for people who like shipping.
a leaderboard for your crew
Everyone signs in with GitHub, joins a crew with an invite code, and gets a row: commits, lines added and deleted, active repos, streak, stars, top language. Week, month, or year.
a page per person
Lines per week as mirrored bars, a 52-week calendar, and the repos you shipped to, with the numbers per repo.
a global board
Everyone who ever signed in, aggregate numbers only. Profiles open only if the person allows it.
private work included
Not through GitHub. Your own machine counts its repos and sends numbers. Work repos too, without your employer being involved.
How it works
Two GitHub calls per person per night. Zero on page load.
Sign in with GitHub
Public scope only. We learn who you are and never touch your repos. Public activity is snapshotted nightly.
One command, once
Your computer counts its own git repos and uploads weekly numbers. Private and work repos included, no GitHub token.
One board
Crews, global board, per-dev pages. Reads only from Postgres, so it loads instantly.
Why it's safe
GitHub has no permission that gives out commit numbers without also giving out source. So we never ask GitHub for private repos.
no tokens
The sign-in asks for read:user and user:email, nothing more. Nothing on GitHub can ever read or write your code on our behalf.
numbers only
The CLI sends a keyed hash of each remote URL, a guessed language, per-week and per-day commits / lines added / lines deleted for your commits. Repo names only if you turn them on. No paths, no diffs, no content.
your machine, your rules
It runs as you, reads git history the way git log does, and re-runs daily in the background. gitstats unlink removes it. Revoke a computer on the settings page.
you decide what is shown
Per profile: who can open it, whether private repos count in what others see, and whether repo names are shown or anonymised.
auditable
The CLI is open source: ~700 lines of TypeScript with the compiled output committed next to it. Read it, or point a proxy at it. It shows you what it found and asks before the first upload.
One command, once
Run it per computer after signing in. Needs Node.js. It shows what it found and asks before uploading.
What lands on the board
Questions
Who is this for?›
A handful of friends who want to see who actually shipped this week. No business, no leaderboard for strangers, no anti-cheat. If you fake it, you only fool your friends.
What does GitHub sign-in give you?›
Your login, avatar, and public activity. The scopes are read:user and user:email. We never store the OAuth token and never ask for repo access.
How do private repos get counted?›
You run one command on your computer. It reads your git history like git log does and uploads weekly totals plus commits and lines per day. No names unless you turn them on, never content.
Is it safe to run at work?›
Nothing leaves the machine except numbers under a keyed hash. No code, filenames, branch names, or commit messages. It doesn't touch GitHub at all. The source is public and short.
Why are line counts so big?›
Lockfiles and generated code count as lines, on GitHub and here. Nothing is filtered, because any filter would be a guess.
How fresh is it?›
GitHub public activity: every night at 03:00 UTC. Linked computers: once a day in the background, or whenever you run sync. The page itself reads only the database, so it is always instant.
What can others see?›
A small matrix in settings, with one column for crewmates and one for everyone else signed in: who may open your page, whether private repos count in the numbers they see, and whether repo names are shown, public-only, or hidden. Everyone else starts at the strict end.
Can I leave?›
Settings → Data. EXPORT hands you every number we hold as JSON; DELETE ACCOUNT wipes your rows, your linked computers and your crew memberships, and signs you out. Run gitstats unlink on your machines to remove the local config too.
Known limits
weekly granularity
GitHub only exposes lines of code per week, and we do not fake a daily split. Per-day numbers exist only for repos a linked computer counted.
only machines you link
Private repos are counted on computers where you ran the command. Commit from a second laptop? Link it too.
your git email
Local counting attributes commits by the emails on your profile and in your git config. Add others in the CLI.
default branch only
Contributor stats count commits on the default branch.
stats warm-up
GitHub answers 202 while it computes a repo. We retry with backoff and pick it up next night if it is still cooking.