Your coding fingerprint โ local git analytics dashboard for all your repos.
Project description
Scan every git repo on your machine. Get streaks, heatmaps, language trends, project health scores, and more โ all in one interactive terminal dashboard.
WakaTime costs $9/mo. GitHub Wrapped is once a year. huntd is free, local, instant, and sees everything.
Install
pip install huntd
Quick Start
# Interactive TUI dashboard
huntd ~/code
# One-shot summary (no TUI)
huntd ~/code --summary
# JSON output (pipe to jq, scripts, etc.)
huntd ~/code --json
# Scan current directory
huntd
Filtering
Slice your data by time, author, or compare directories.
# Only commits from 2025
huntd ~/code --summary --since 2025-01-01 --until 2025-12-31
# Only your commits in team repos
huntd ~/code --summary --author "Joe"
# Last 3 months
huntd ~/code --summary --since "3 months ago"
# Compare two directories side by side
huntd --compare ~/work ~/personal --summary
# Filters work with all modes
huntd ~/code --json --author "Joe" --since 2025-01-01
Sharing & Export
# Spotify Wrapped-style SVG card
huntd ~/code --wrapped
# Clean markdown report (for Notion, blogs, performance reviews)
huntd ~/code --report
# SVG badge for GitHub profile READMEs
huntd ~/code --badge
# Combine with filters
huntd ~/code --wrapped --since 2025-01-01
# Generate all three at once
huntd ~/code --wrapped --report --badge
Live Mode
Keep the dashboard running and watch it update as you commit.
# Auto-refresh dashboard every 30 seconds
huntd ~/code --watch
# Custom interval (seconds)
huntd ~/code --watch --interval 60
# Toggle watch on/off inside the TUI with 'w'
# Press 'w' to start/stop live refresh anytime
# Install post-commit hooks across all repos
huntd ~/code --install-hook
What You Get
_ _ _
| |__ _ _ _ __| |_ __| |
| '_ \| | | | '_ \ __/ _` |
| | | | |_| | | | | || (_| |
|_| |_|\__,_|_| |_|\__\__,_|
your coding fingerprint
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐บ huntd โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ
โ 14 repos 4,847 commits 8 languages โ
โ ๐ฅ 14 day streak ๐ 31 longest โ
โ ๐
Tuesdays at 10pm โก 3.2/day โ
โ ๐ โโโ
โโโโ MonโSun โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ Contributions โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Mon โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Tue โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Wed โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Thu โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Fri โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Sat โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Sun โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ฆ Repositories โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโ
โ Repo โ Commits โ Language โ Health โ +Lines โ -Lines โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ cloud-dash โ 847 โ Python โ โโโโโโโโโโ 95 โ +15,847 โ -1,204 โ
โ pulse-mobile โ 623 โ Go โ โโโโโโโโโโ 85 โ +8,619 โ -820 โ
โ data-engine โ 412 โ Rust โ โโโโโโโโโโ 80 โ +6,074 โ -503 โ
โ api-gateway โ 203 โ TypeScriptโ โโโโโโโโโโ 70 โ +2,876 โ -118 โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ค Languages โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Language โ Lines Changed โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Python โ 15,823 โ โโโโโโโโโโโโโโโโโโโโ 62% โ
โ Go โ 5,628 โ โโโโโโโโโโโโโโโโโโโโ 22% โ
โ Rust โ 2,519 โ โโโโโโโโโโโโโโโโโโโโ 9% โ
โ TypeScript โ 827 โ โโโโโโโโโโโโโโโโโโโโ 3% โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โก Activity โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ๐
Busiest day: Tuesday โฐ Busiest hour: 10pm โก Avg: 3.2/day โ
โ ๐ Hourly: โโโโโโโโโโ
โโโ
โโ
โโโโโ
โโโโ 0hโ23h โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ Velocity โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โโโ
โโโโ
โโโโ
โ (โ up) Peak: 2025-W42 (27 commits) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ Language Evolution โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโ
โ Language โ 2025-01 โ 2025-02 โ 2025-03 โ 2025-04 โ 2025-05 โ 2025-06 โ Trend โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Python โ 2,410 โ 1,850 โ 3,200 โ 2,900 โ 4,100 โ 3,800 โ โโโโโโโ
โ Go โ 820 โ 640 โ 900 โ 1,100 โ 750 โ 680 โ โ
โโโโโโ
โ TypeScript โ - โ 120 โ 450 โ 800 โ 1,200 โ 1,500 โ โโโโโโโ
โโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ฏ Focus Score โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Avg repos/day: 2.3 [balanced] โ
โ Most focused: 2025-04-12 Most scattered: 2025-06-01 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโ ๐
Weekday vs Weekend โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Weekday: 78.4% (3,802 commits, +42,190 lines) โ
โ Weekend: 21.6% (1,045 commits, +11,830 lines) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ฅ File Hotspots โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโ
โ File โ Churn โ Touches โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ cloud-dash/src/dashboard.py โ 4,210 โ 47 โ
โ pulse-mobile/pkg/api/handler.go โ 2,830 โ 31 โ
โ data-engine/src/pipeline.rs โ 1,950 โ 22 โ
โ api-gateway/src/routes/index.ts โ 1,120 โ 18 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโ
โโโโโโโโโโโโโโโโ ๐ Achievements (4/10) โโโโโโโโโโโโโโโโโ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ๐ฏ Century 100-day coding streak โ
โ ๐ Prolific 1,000+ total commits โ
โ ๐ Polyglot 5+ languages with 100+ lines each โ
โ ๐ฆ Diversified 10+ active repos โ
โ ๐ Marathon 365-day coding streak โ
โ ๐ Night Owl 50%+ commits after midnight โ
โ ๐ Early Bird 50%+ commits before 9am โ
โ ๐ Weekend Warrior 40%+ commits on weekends โ
โ ๐ Monorepo Monster Single repo with 500+ commits โ
โ ๐ Clean Freak All repos have health score 80+ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Features
| Feature | Description |
|---|---|
| Multi-repo scanning | Recursively finds every git repo under a directory |
| Coding streaks | Current and longest streak computed from local commits |
| Contribution heatmap | GitHub-style green activity grid across all repos |
| Language breakdown | Lines changed per language with colored trend bars |
| Project health scores | 0-100 score with colored bars (green/yellow/red) |
| Activity patterns | Busiest day, busiest hour, sparklines, average commits per day |
| Top repos ranking | Sorted by commit count with language and health |
| Interactive TUI | Navigate panels with keyboard (Textual-powered) |
| Summary mode | --summary for a styled Rich-formatted printout |
| JSON export | --json for scripting, pipelines, and integrations |
| Date filtering | --since and --until to scope commits to a time window |
| Author filtering | --author to filter by committer name or email |
| Compare mode | --compare two directories side by side |
| Code velocity | Weekly commit trends with sparkline and up/down/stable indicator |
| Language evolution | Monthly language mix over time โ see how your stack shifts |
| Focus score | Unique repos per day โ deep focus vs scattered work patterns |
| Weekday vs weekend | Split activity by work days vs weekends with percentages |
| File hotspots | Most-churned files across all repos (find your messiest code) |
| Achievements | 10 unlockable badges โ Century, Polyglot, Night Owl, and more |
| Wrapped card | --wrapped generates a Spotify Wrapped-style SVG card |
| Markdown report | --report exports a clean report for Notion, blogs, reviews |
| Profile badge | --badge generates an SVG badge for GitHub READMEs |
| Live mode | --watch auto-refreshes the dashboard as you commit |
| Custom interval | --interval N sets refresh frequency in seconds |
| Git hooks | --install-hook adds post-commit hooks to all scanned repos |
How It Works
- Scan โ Recursively finds all
.gitdirectories under the target path - Extract โ Runs optimized
git logcommands in parallel (8 threads) across all repos - Analyze โ Computes streaks, heatmaps, language stats, health scores, and activity patterns
- Display โ Renders an interactive dashboard or summary
All data comes from local git history. No API keys. No accounts. No cloud. No cost.
Output Modes
# Interactive dashboard (default)
huntd ~/code
# Static summary โ great for screenshots
huntd ~/code --summary
# JSON โ pipe to jq, save to file, feed to scripts
huntd ~/code --json
huntd ~/code --json | jq '.repos[] | select(.commits > 100)'
# Compare two directories
huntd --compare ~/work ~/personal --summary
huntd --compare ~/work ~/personal --json
# Version
huntd --version
Health Score
Each repo gets a 0-100 health score based on:
| Factor | Points | Criteria |
|---|---|---|
| Commit recency | 0-40 | Last commit within 7d (40), 30d (30), 90d (20), 1yr (10) |
| Total commits | 0-20 | 100+ (20), 50+ (15), 10+ (10), 1+ (5) |
| Has README | 0-15 | README file present in repo root |
| Branch hygiene | 0-15 | 1-5 branches (15), 6-10 (10), 11+ (5) |
| Clean tree | 0-10 | No uncommitted changes |
Why Not X?
| Tool | Limitation |
|---|---|
| WakaTime | Cloud-only, $9/mo, tracks editor time not git history |
| GitHub Wrapped | Annual only, GitHub repos only, no local/private repos |
| onefetch | Single repo snapshot, not interactive |
| git-quick-stats | Single repo, text dump, no dashboard |
| tokei / scc | Line counting only, no history or trends |
huntd is the first tool to combine multi-repo scanning + streaks + heatmaps + language trends + health scores in one interactive dashboard. Free. Local. Instant.
Development
git clone https://github.com/TRINITY-21/huntd.git
cd huntd
pip install -e ".[dev]"
python -m pytest tests/ -v
Support
If this project is useful to you, consider supporting it.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file huntd-0.6.0.tar.gz.
File metadata
- Download URL: huntd-0.6.0.tar.gz
- Upload date:
- Size: 41.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9dbd25a5a77db460e36eb68881d92cadbdcf1420a3a1d1d2794440504adfc9da
|
|
| MD5 |
680797f783504709ad1ef386370df1e7
|
|
| BLAKE2b-256 |
453f2723a63db39dc0f07bbe7d7158b56e769bdbc134b00236fb63336bbef84d
|
File details
Details for the file huntd-0.6.0-py3-none-any.whl.
File metadata
- Download URL: huntd-0.6.0-py3-none-any.whl
- Upload date:
- Size: 33.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f10d41c368d66045ad17a996b98b9c17a6e3b44f517ce83a09aeeb5877921a2
|
|
| MD5 |
4b1ca4f5a4b319476497f74366d4261b
|
|
| BLAKE2b-256 |
5681aca1d2825a82927e203bcc1032388cdedf2c17c70e76c427b7be722c7893
|