A cyberpunk-themed TUI for assessing contributor volumes across git repositories. Inspired by Hiro Protagonist's Big Board from Neal Stephenson's Snow Crash.
Big Board requires the git command-line client on PATH.
go install github.com/richhaase/bigboard/cmd/bigboard@latestBig Board is TUI-first: preferences live in the config file, and the CLI has exactly four flags.
# Analyze current directory
bigboard
# Analyze specific repos or scan directories for repos
bigboard ~/src/repo1 ~/src/repo2
bigboard ~/src/
# Use a named group from your config
bigboard --group backend
# Print contributor stats as JSON and exit (all-time window)
bigboard --export ~/src/ > board.json
# Use an alternate config file
bigboard --config ./bigboard.json
# Print version and exit
bigboard --versionThe time range is chosen interactively (←/→) and defaults to 14 days. Set
since in the config to choose the initial range. --export always covers
all time; per-contributor first/last commit dates are included for downstream
filtering.
- Author identity is resolved by git's native
.mailmap(honored automatically for%aN/%aE), then grouped by email and exact name. Substring name merging (which can collapse distinct people like Daniel / Daniela) is off by default — enable it with"fuzzy": true. Add a.mailmapto a repo to canonicalize names/emails precisely. - AI authorship is detected from
Co-authored-bytrailers and AI author identities, including agent accounts that commit via GitHub (Copilot,claude[bot],devin-ai-integration[bot],google-labs-jules[bot], …). Add your own agents' emails or@domainsunderai_identities. - Bots are counted, not hidden. Bot accounts (
dependabot[bot],renovate[bot], your own agents viabot_identities) rank on the leaderboard with aBOTtag; pressbto toggle them out of view. - Generated & vendored files (lockfiles,
vendor/,node_modules/,dist/,*.min.*,*.snap,go.sum, …) are excluded from line counts by default so they don't inflate scores. Set"all_files": trueto count everything. - Scope is each repo's default branch,
--no-merges. Squash-merge workflows credit the merger; rename/copy churn is normalized via-M -C.
| Key | Action |
|---|---|
↑/↓ j/k |
Navigate rows |
←/→ h/l |
Cycle time range (1d / 7d / 14d / 30d / 90d / 1y / all) |
Enter |
Drill into selected contributor |
Esc |
Back / Quit |
s |
Cycle sort column (commits / added / removed / net / ai / total) |
S |
Reverse sort direction |
/ |
Filter contributors by name (incremental) |
b |
Toggle bot contributors in/out |
r |
Open repo inclusion/exclusion overlay |
space |
Toggle a repo in/out (within the repo overlay) |
R |
Refresh (re-scan all repos) |
q |
Quit (clears an active filter first) |
In the contributor detail view, ↑/↓ step to the previous/next contributor.
Optional, at ~/.config/bigboard/config.json (override with --config).
{
"paths": ["~/src"],
"exclude": ["vendor-*", "org-a/api"],
"sort": "net",
"since": "90d",
"theme": "dark",
"fuzzy": false,
"all_files": false,
"depth": 2,
"groups": {
"backend": ["~/src/api", "~/src/workers"],
"frontend": ["~/src/web"]
},
"ai_identities": ["my-agent@example.com", "@agents.example.com"],
"bot_identities": ["my-agent@example.com"]
}sincetakes a preset label:1d,7d,14d,30d,90d,1y, orall.excludeentries match a repo basename, a unique display name likeorg-a/api(for duplicate basenames), or a glob of either.ai_identitiesmarks commits by those authors (or co-authors) as AI-assisted; entries are exact emails or@domainsuffixes.bot_identitiestags contributors as bots; entries are exact emails,@domainsuffixes, or exact author names.- Select a group with
--group backend. Author identities can also be canonicalized with a standard git.mailmapin each repo.
- ASCII art banner with vertical color gradient
- Streaming repository-scan loader that surfaces unreadable repos as they load
- Gradient impact bars with trailing glow; gold/silver/bronze rank styling
- AI-authorship as a first-class metric: leaderboard
AI%column, per-month AI share, per-repo AI % - Bot contributors counted and tagged (
BOT), with a one-key toggle to hide them - Per-contributor drill-down: repo breakdown, gap-aware monthly timeline, neon contribution heatmap, and derived metrics (active days, first/last commit, churn)
- Scrollable, height-aware leaderboard with incremental
/search — every contributor reachable - Headless
--export(JSON, same pipeline and identity policy as the TUI), config file with named--groups, glob excludes, and recursive scan depth - Accurate-by-default: native
.mailmap, generated/vendored files excluded, deterministic ordering, rename/copy-aware churn - Git worktree detection (automatically skipped during repo discovery); symlinked repo directories are followed and deduplicated
MIT