Free and open source

Your git history,
told beautifully.

ghis reads your commits, pull requests and reviews from GitHub, GitLab, Codeberg or any git host, and turns them into an animated story of everything you've built.

GitHubGitLabCodebergForgejoGiteaBitbucketany git host

A live story built from sample data. Scroll inside it, switch years, hover anything.

What you get

Everything you built, in one page

Every day you showed up

A contribution calendar for every year, with your longest streak and busiest day.

Your rhythm

The hours and weekdays you really code, in the timezone you committed from. Night owl or early bird?

Where your time went

Repositories and languages by commits and lines changed. Lockfiles and build output don't count.

Collaboration

Pull and merge requests, time to merge, reviews and approvals. On GitLab and Codeberg, comments too.

Highlights

Your first commit, your biggest one, tickets touched and the words you reach for most.

Made to share

Filter by year or repository, compare with last year, then download an image of your highlights that's safe to post.

Get started

One command, one click

You need Python 3.9+ and git. Nothing else to install.

Terminal
$ git clone https://github.com/radufarcas10/ghis.git
$ cd ghis
$ python3 ghis.py
  1. Your browser opensghis finds your repositories, the emails you commit with and your instance, all on its own.
  2. Pick where your code livesGitHub, GitLab, Codeberg, or any git host. A token adds pull requests and reviews, and is optional.
  3. Click Create my storyWatch it read your history live, then enjoy. A copy is saved so you can reopen it offline.

Command line

Scriptable, and the same story.

GITLAB_TOKEN=… python3 ghis.py collect \
  --provider gitlab --open

Install it

Get a ghis command with pipx.

pipx install git+https://github.com/radufarcas10/ghis
ghis

Host it for your team

A Docker image with an allowlist and expiring stories.

docker compose up --build

Privacy

Your code stays yours

ghis runs on your computer. It talks only to the host you choose, and only to read.

FAQ

Questions

Which commits count as mine?

Commits whose author email is one of yours. ghis finds them on its own: your account's emails, plus every address you committed with under your git name. You can add more.

Do I need a token?

No. Without one, ghis reads the repositories already on your computer. With a token it also includes pull or merge requests, reviews, repositories you never cloned and, on GitLab and Codeberg, your comments. If the gh or glab CLI is signed in, ghis uses that.

Does it work with my company's GitLab?

Yes. Self-managed GitLab, GitHub Enterprise Server, Forgejo and Gitea all work. ghis even reads your instance from the remotes of the repositories you have checked out.

Why don't my line counts include everything?

Lockfiles, build output, vendored code and snapshots are left out, so one npm install doesn't outweigh a year of work. Pass --count-all-files to include them.

Can I share my story?

Yes. Download the share card, an image of your highlights with no repository names, commit messages or emails on it. To share the whole story, use Share-safe data: it removes messages and renames repositories and teammates, keeping every number.

See your story

It takes a minute, and you'll probably learn something about yourself.