Skip to main content

Gitcolombo

Gitcolombo

OSINT tool that extracts identities — names, emails, and links between seemingly unrelated accounts — from git repositories and GitHub.

  • Python CLI (gitcolombo.py) — clones repos, walks git log, and can call the GitHub API for richer signals.
  • Web version (gitcolombo.html) — a single static HTML file; open it in a browser and query the GitHub API directly, no install.

For the full breakdown of where each email/name comes from (PGP keys, public events, commit search, commit-message trailers, etc.) see docs.md.

Web version

Hosted at https://gitcolombo.soxoj.com — or open gitcolombo.html locally. A single static HTML file that queries the GitHub API straight from your browser; no install, no backend.

Gitcolombo web version

Install

Requires Python 3.10+ and a working git binary. No third-party Python dependencies.

pip install gitcolombo

Or from source:

git clone https://github.com/Soxoj/gitcolombo
cd gitcolombo
pip install -e .

Usage

# from any git URL
gitcolombo -u https://github.com/Soxoj/maigret

# from a local directory, recursively
gitcolombo -d ./maigret -r

# clone and scan every public repo of a GitHub user/org
gitcolombo --nickname octocat

# API-only: find emails for a GitHub username without cloning
gitcolombo --search Soxoj

# change where remote repos get cloned (default: ./repos)
gitcolombo -u https://github.com/Soxoj/maigret --repos-dir ./clones

python -m gitcolombo works equivalently if you'd rather not put the script on $PATH.

Remote repositories are cloned into ./repos/ by default; override with --repos-dir. For batch cloning from GitLab and Bitbucket groups use ghorg.

Output

  • Per-person details: name, email, author/committer counts, and other identities that may belong to the same person.
  • Emails that share a name.
  • Different names tied to the same email.
  • General statistics across the scanned repos.

Why it works

Developers often commit with one identity (e.g. work account), then switch to another (e.g. personal account) and run git commit --amend, forgetting that this rewrites the committer but leaves the original author in place. The two roles drift apart, and that mismatch is exactly what gitcolombo correlates.

Short explainer on author vs. committer: https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git

Testing

Stdlib-only test suite — no third-party dependencies. From the repo root (after pip install -e .):

python3 -m unittest test_gitcolombo -v

The end-to-end test creates a real git repository in a temp directory, so a working git binary is required (the test is skipped if git is missing).

Tests run on every push and pull request via GitHub Actions (.github/workflows/tests.yml) across Python 3.10–3.13.

Further reading

Roadmap

  • Total statistics for repos in a directory
  • GitHub support: clone all repos from account/group
  • GitHub support: extract links to accounts from commit info
  • GitHub support: API pagination
  • Exclude "system" accounts (e.g. noreply@github.com, @users.noreply.github.com)
  • Reverse mapping email → names (currently only name → emails)
  • Probabilistic graph links based on shared names/emails and Levenshtein distance
  • Other popular git platforms: GitLab, Bitbucket

Metadata

Release files for gitcolombo 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitcolombo 0.3.0
File Size Uploaded Provenance Actions
gitcolombo-0.3.0.tar.gz 15.7 kB With provenance Details for gitcolombo-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gitcolombo 0.3.0
File Interpreter ABI Platform Actions
gitcolombo-0.3.0-py3-none-any.whl Python 3 none any Details for gitcolombo-0.3.0-py3-none-any.whl

Total release size: 31.0 kB

Release files / gitcolombo-0.3.0.tar.gz

Download URL gitcolombo-0.3.0.tar.gz
Size 15.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d57b37950e6597bac98dee10678d69100721354d241b93ca8fb1fbf573bb34ae
BLAKE2b-256 checksum
How to use checksums
e890171951fc2f670e21789acb75d61ad8b00bfb50c64229dbf3893c0e99c938
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 29, 2026.

Transparency log

Release files / gitcolombo-0.3.0-py3-none-any.whl

Download URL gitcolombo-0.3.0-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ba1b8e00941cf5d9ad020ea6165ed460d2c2092d6b18bbbdd6823b43a33cbbc
BLAKE2b-256 checksum
How to use checksums
8be70f505e799680d13533173f6d8d20c0c65eb2e4c6a25071383cf49f4c84fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 29, 2026.

Transparency log

Security for gitcolombo 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gitcolombo-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page