katvio/fractumPublic

Encrypt your most sensitive files by splitting the encryption key into multiple shares, with the ability to decrypt using only a subset of these shares. Fully offline, and portable. Uses AES-256-GCM and Shamir's Secret Sharing algos.

AI summary: A secure, offline tool for splitting sensitive files into encrypted shares using Shamir's Secret Sharing.

Stars
113
Forks
19
Watchers
18
Open issues
3
Open PRs
1
Contributors
~4
Commits
57
Branches
13

PythonApache-2.0Created Apr 22, 2025Last push 2d agoLatest release v1.4.1+1 this month

Quick answers

What is fractum?
A secure, offline tool for splitting sensitive files into encrypted shares using Shamir's Secret Sharing.
What does fractum do?
Fractum is a cryptography tool designed for the long-term, cold storage of highly sensitive information. It employs AES-256-GCM to encrypt files, and then uses Shamir's Secret Sharing to split the encryption key into multiple distinct shares. A user can define a threshold (K out of N shares) required to reconstruct the key and decrypt the file. Because it operates entirely offline—preferably within an air-gapped Docker container—it eliminates cloud dependencies and single points of failure. This ensures that no individual share contains usable information, protecting critical data from both hardware failure and physical theft.
Who is fractum for?
Security professionals, cryptocurrency holders, and anyone needing extreme security for cold-storage data. It requires basic familiarity with command-line tools or Docker.
How do I get started with fractum?
See the complete Docker guide in the repository documentation.
How popular is fractum on GitHub?
katvio/fractum has 113 stars and 19 forks on GitHub.
What license does fractum use?
katvio/fractum is released under the Apache-2.0 license.

Star history

since Nov 2, 2025
050100Nov 2025Feb 2026Jun 2026Oct 2026
113 stars as of Oct 2, 2026. Before Jul 29, 2026, reconstructed from public GitHub event archives (checked against the repository's real star total); since then measured daily.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 1 commit2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 1 commit2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 2 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 1 commit2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits
5 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What fractum does

Fractum is a cryptography tool designed for the long-term, cold storage of highly sensitive information. It employs AES-256-GCM to encrypt files, and then uses Shamir's Secret Sharing to split the encryption key into multiple distinct shares. A user can define a threshold (K out of N shares) required to reconstruct the key and decrypt the file. Because it operates entirely offline—preferably within an air-gapped Docker container—it eliminates cloud dependencies and single points of failure. This ensures that no individual share contains usable information, protecting critical data from both hardware failure and physical theft.

Security professionals, cryptocurrency holders, and anyone needing extreme security for cold-storage data. It requires basic familiarity with command-line tools or Docker.

  • Shamir's Secret Sharing: Mathematically guarantees that fewer than the required threshold of shares reveal absolutely zero information.
  • AES-256-GCM Encryption: Secures the underlying file using battle-tested, industry-standard cryptographic primitives.
  • Fully Offline Operation: Designed to run in air-gapped environments, preventing any possibility of network exfiltration.
  • Docker Isolation: Recommends execution via Docker with networking disabled to ensure maximum operational security.
  • Information-Theoretic Security: Provides the same level of cryptographic assurance used in high-stakes environments like DNSSEC ceremonies.

Where teams use it

Cryptocurrency Seed Backup

Split a hardware wallet seed phrase into multiple shares stored in different physical locations to prevent loss or theft.

Emergency Access Management

Distribute 'break-glass' administrative credentials among key executives to ensure no single person has unilateral access.

Secure Estate Planning

Encrypt wills and financial documents, giving shares to family members and lawyers so they can only be accessed collectively.

Root Certificate Protection

Safeguard fundamental PKI private keys by requiring multiple administrators to combine their shares during signing ceremonies.

Getting started: See the complete Docker guide in the repository documentation.

README

main branch

Fractum

Encrypt any sensitive file, then split its encryption key into shares so the file only comes back when enough shares are pooled → fully offline, no cloud, no single point of failure.

Designed for long-term cold storage of critical secrets: recovery credentials, exports of database & password managers, family photos, legal documents, crypto seed phrases.

Fractum encrypts a file and splits its AES key into N shares, K of which recover the key

When to use it:

  • Emergency recovery creds (admin passwords, break-glass access)
  • Backup encryption master keys
  • Root CA / PKI private keys
  • Legal & financial documents (wills, contracts, tax records)
  • Cryptocurrency (seed phrases, private keys, hardware wallet backups)
  • Family photos

Why distributed?

  • Fewer than K shares reveal nothing: the key-split has information-theoretic security (same as Trezor SLIP-39, ICANN DNSSEC ceremonies); the file itself stays sealed under AES-256-GCM
  • No single point of failure: distribute shares across people, locations, media. No $5 Wrench Attack
  • Works completely offline in air-gapped environments

How it works

Fractum encrypts your file with AES-256-GCM, then splits that key into N shares via Shamir's Secret Sharing. Any K shares reconstruct the key and decrypt the file; fewer than K learn nothing. No novel cryptography → only battle-tested primitives.

📚 Full documentation


Quick start — Docker (recommended)

Docker is the recommended way to run Fractum. The --network=none flag guarantees the container cannot exfiltrate your secrets over the network.

📚 Complete Docker guide

Setup:

git clone https://github.com/katvio/fractum.git
cd fractum && git checkout tags/v1.4.2
mkdir -p data shares
docker build -t fractum-secure .

Encrypt:

docker run --rm -it \
  --network=none \
  -v "$(pwd)/data:/data" \
  -v "$(pwd)/shares:/app/shares" \
  fractum-secure encrypt /data/passwords-export.csv \
  --threshold 3 --shares 5 --label "bitwarden-backup"

Fractum encrypts a file and splits its AES key into N shares, K of which recover the key

Decrypt:

docker run --rm -it \
  --network=none \
  -v "$(pwd)/data:/data" \
  -v "$(pwd)/shares:/app/shares" \
  fractum-secure decrypt /data/passwords-export.csv.enc \
  --shares-dir /app/shares

Decrypting with 3 of 5 shares to reconstruct passwords-export.csv

📚 All CLI options · Decrypting guide · Manual install


Commands

Inside the container (or after a manual install), the binary is fractum. Prefix with docker run --rm -it --network=none -v "$(pwd)/data:/data" -v "$(pwd)/shares:/app/shares" fractum-secure to run any of these in Docker.

fractum -i                  # interactive mode — guided menu, no flags needed
fractum --version           # print the version

# Encrypt: encrypt FILE, split its key into N shares, K of which are needed to recover it
fractum encrypt FILE -t <threshold> -n <shares> [OPTIONS]
  -t, --threshold <int>      shares required to reconstruct (required)
  -n, --shares <int>         total shares to generate (required)
  -l, --label <str>          label identifying the share set (default: filename)
  -e, --existing-shares DIR  reuse an existing share set instead of generating a new key
  --full-metadata            embed label/total_shares/share_set_id in shares (less private, eases debugging)
  -b, --bundle-encrypted     also copy the .enc file into every share ZIP (default: .enc stays out of the ZIPs)
  -v, --verbose               verbose output

# Decrypt: reconstruct FILE.enc from K-of-N shares
fractum decrypt FILE.enc [OPTIONS]
  -s, --shares-dir DIR       directory with share .txt files and/or share ZIPs
  -m, --manual-shares        type share index/value pairs by hand instead of reading files
  -v, --verbose               verbose output

📚 All CLI options · Decrypting guide · Manual install


Security

🔍 Security Architecture · 🛡️ Security Best Practices


Contributing

Submit a pull request or open an issue.

📚 Contributing Guide

License

Fractum is Apache-2.0. You may use it, modify it, redistribute it and use it commercially, without asking anyone.

The name is separate: Apache-2.0 grants no trademark rights (section 6), so "Fractum", the logos and the associated marks stay with S.A.S.U. KATVIO. Fork the code freely, give your fork its own name.

📄 LICENSE · TRADEMARK.md · SECURITY.md

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

6 total
  1. Fractum v1.4.1v1.4.1Jul 15, 20267 downloads

    ## 🔐 Security Verification **GPG Signature:** ✅ This release is cryptographically signed **Key ID:** D009F6290DCFDAB6 **Signed by:** S.A.S.U. KATVIO (Fractum Release Signing) ### Verify Release Authenticity ```bash # Import KATVIO public key curl -O https://fractum.katvio.com/fractum-signing-key.asc gpg --import fractum-signing-key.asc # Verify tag signature git tag -v v1.4.1 # Verify package checksum sha256sum -c checksums.txt ``` ## 📋 Release Notes **GPG Signature:** This release is cryptographically signed **Key ID:** D009F6290DCFDAB6 **Signed by:** S.A.S.U. KATVIO (Fractum Release Signing) ```bash curl -O https://fractum.katvio.com/fractum-signing-key.asc gpg --import fractum-signing-key.asc git tag -v v1.4.1 sha256sum -c checksums.txt ``` ## CONTENT OF RELEASE: This release focuses on fixing some non-critical misbehaviours. IMPORTANT: The previous version (v1.4.0) is considered secure, [see the best practices.](https://fractum.katvio.com/security-best-practices/). See also [the security bulletin.](https://fractum.katvio.com/security-bulletin/) Commits included in the release: - [`ee16a7a`](https://github.com/katvio/fractum/pull

  2. Fractum v1.4.0v1.4.0Jul 1, 202617 downloads

    ## 🔐 Security Verification **GPG Signature:** ✅ This release is cryptographically signed **Key ID:** D009F6290DCFDAB6 **Signed by:** S.A.S.U. KATVIO (Fractum Release Signing) ### Verify Release Authenticity ```bash # Import KATVIO public key curl -O https://fractum.katvio.com/fractum-signing-key.asc gpg --import fractum-signing-key.asc # Verify tag signature git tag -v v1.4.0 # Verify package checksum sha256sum -c checksums.txt ``` ## 📋 Release Notes This release focuses on hardening Fractum's cryptographic handling, reducing metadata exposure, improving operational safety, and expanding real-world test coverage around the workflows users actually run. IMPORTNAT: The previous version v1.3.0 is considered secure to use in most contexts, [see the best practices.](https://fractum.katvio.com/security-best-practices/). See also [the security bulletin.](https://fractum.katvio.com/security-bulletins/) 🔐 Security Enhancements: - Bound encrypted-file metadata to AES-256-GCM authentication so metadata tampering is detected during decryption - Removed plaintext file hashes from encrypted metadata to avoid unnecessary disclosure - Added per-share hash v

  3. Fractum v1.3.0v1.3.0Jun 23, 202526 downloads

    ## 🔐 Security Verification **GPG Signature:** ✅ This release is cryptographically signed **Key ID:** D009F6290DCFDAB6 **Signed by:** S.A.S.U. KATVIO (Fractum Release Signing) ### Verify Release Authenticity ```bash # Import KATVIO public key curl -O https://fractum.katvio.com/fractum-signing-key.asc gpg --import fractum-signing-key.asc # Verify tag signature git tag -v v1.3.0 # Verify package checksum sha256sum -c checksums.txt ``` ## 📋 Release Notes Fractum v1.3.0 - Security & Usability Improvements 🔐 Security Enhancements: - Removed misleading share verification feature that provided false sense of security 👤 User Experience Improvements: - Fixed manual mode (-m) interface with properly ordered prompts - Threshold and total shares information now displayed at process start - Improved --help command documentation and clarity 🏗️ Code Quality & Architecture: - Full PEP8 Python standard compliance for improved maintainability - Moved initialization code out of __init__.py files for better organization ⚡ Platform & Performance: - Updated to Python 3.12.11 with latest security patches and optimizations 📚 Documentation & Compliance:

  4. Release v1.2.0v1.2.0Jun 2, 2025
  5. Release v1.1.0v1.1.0May 22, 2025

    - feat: code refactoring into modules part 2 ([#3](https://github.com/katvio/fractum/pull/3))

Commits per week

last 52 weeks
20Week of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 1 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 1 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 2 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 0 commitsWeek of 2026-08-23: 1 commitsWeek of 2026-08-30: 0 commitsWeek of 2026-09-06: 0 commitsWeek of 2026-09-13: 0 commitsWeek of 2026-09-20: 0 commitsSep 28, 2025Sep 20, 2026
5 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 0 commitsSun 17:00 — 0 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 4 commitsMon 10:00 — 1 commitsMon 11:00 — 0 commitsMon 12:00 — 1 commitsMon 13:00 — 0 commitsMon 14:00 — 0 commitsMon 15:00 — 4 commitsMon 16:00 — 0 commitsMon 17:00 — 0 commitsMon 18:00 — 0 commitsMon 19:00 — 0 commitsMon 20:00 — 0 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 1 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 2 commitsTue 10:00 — 1 commitsTue 11:00 — 3 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 0 commitsTue 15:00 — 1 commitsTue 16:00 — 1 commitsTue 17:00 — 1 commitsTue 18:00 — 0 commitsTue 19:00 — 0 commitsTue 20:00 — 0 commitsTue 21:00 — 0 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 2 commitsWed 11:00 — 4 commitsWed 12:00 — 0 commitsWed 13:00 — 0 commitsWed 14:00 — 0 commitsWed 15:00 — 1 commitsWed 16:00 — 2 commitsWed 17:00 — 2 commitsWed 18:00 — 3 commitsWed 19:00 — 0 commitsWed 20:00 — 0 commitsWed 21:00 — 0 commitsWed 22:00 — 0 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 1 commitsThu 10:00 — 6 commitsThu 11:00 — 4 commitsThu 12:00 — 1 commitsThu 13:00 — 0 commitsThu 14:00 — 0 commitsThu 15:00 — 0 commitsThu 16:00 — 0 commitsThu 17:00 — 0 commitsThu 18:00 — 0 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 0 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 1 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 0 commitsFri 14:00 — 0 commitsFri 15:00 — 3 commitsFri 16:00 — 1 commitsFri 17:00 — 4 commitsFri 18:00 — 0 commitsFri 19:00 — 0 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 0 commitsSat 15:00 — 0 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jan 9, 2026daily#20+79