Skip to main content

Git repository dashboard for your local codebase

Project description

CodeBoard

CI Python 3.11+ License: MIT

Git repository dashboard for your local codebase. Scans all git repos under a directory and shows status, activity, health — with batch operations and lazygit integration.

Dashboard

Features

  • Dashboard — Overview of all repos: branch, last commit, dirty status, language, remote
  • Activity — Cross-repo commit timeline
  • Health — Find uncommitted changes, unpushed commits, repos behind remote, inactive repos
  • Detail — Deep dive into a single repo: contributors, languages, recent commits
  • Stats — Aggregate statistics: language distribution, weekly top, remote distribution
  • Grep — Search code across all repos
  • Batch ops — Pull all, push all, quick commit, stash
  • lazygit — Open repos in lazygit, process dirty repos interactively
  • Doc — Generate Obsidian project documentation (optional)
  • Graph — Code graph analysis via GitNexus (optional)
Health Check

Health

Activity Timeline

Activity

Install

pip install .

Or run directly:

python codeboard.py

Quick Start

# Main dashboard
codeboard

# Or use the short alias after pip install
cb

# Filter repos by name
cb --filter simona

# Sort by dirty file count
cb --sort changes

# Cross-repo commit timeline
cb activity --limit 50

# Health check
cb health

# Single repo details
cb detail myrepo

# Summary statistics
cb stats

# Search code across all repos
cb grep "TODO"

# Batch pull all repos
cb pull

# Push all repos with ahead commits
cb push

# Quick commit
cb commit myrepo -m "feat: something" -y

# Stash / unstash
cb stash myrepo
cb stash myrepo pop

# Open in lazygit
cb open myrepo log

# Process all dirty repos one by one
cb each

# JSON output for piping
cb --json | jq '.[]'

# Auto-refresh every 10 seconds
cb --watch 10

Configuration

Config file: ~/.config/codeboard/config.toml

Generate a default config:

cb config
# Directory to scan for git repositories
scan_dir = "~/Code"

# Additional individual repos to include (outside scan_dir)
extra_repos = ["~/Projects/special-repo"]

# UI language: "auto", "en", or "zh"
lang = "auto"

# Path to Obsidian vault (for 'doc' command, optional)
# obsidian_vault = "~/Documents/Obsidian Vault"

# Path to gitnexus binary (for 'graph' command, optional)
# gitnexus_bin = ""

Global Options

Flag Description
--path <dir> Scan directory (default: ~/Code or config)
--sort name|activity|commits|changes Sort order
--filter <keyword> Filter repos by name
--json JSON output for piping
--watch N Auto-refresh every N seconds
--lang en|zh|auto UI language
--no-color Disable colored output
-V, --version Show version

Global options can be placed before or after the subcommand:

cb health --filter simona    # works
cb --filter simona health    # also works

Commands

View

Command Description
cb / cb dashboard Main dashboard with repo overview
cb activity [--limit N] Cross-repo commit timeline (default 30)
cb health Health check: uncommitted / unpushed / behind / no remote / inactive
cb detail <repo> Single repo detail: languages, contributors, tags, recent commits
cb stats Aggregate statistics
cb grep <pattern> Search code across all repos (regex)

Operations

Command Description
cb pull Batch git pull --ff-only all repos with remote
cb push Push all repos with ahead commits (requires confirmation)
cb commit <repo> -m "msg" Quick git add -A && commit (use -y to skip confirmation)
cb stash <repo> [push|pop|list] Quick stash operations

lazygit Integration

Command Description
cb open <repo> [panel] Open repo in lazygit (panel: status/branch/log/stash)
cb dirty List dirty repos, select one to open in lazygit
cb each Process all dirty repos one by one in lazygit

Optional

Command Description Requires
cb doc <repo> Generate Obsidian project documentation Obsidian vault path in config
cb graph <repo> [action] Code graph analysis gitnexus
cb config Show or generate config file
cb completions [bash|zsh|fish] Generate shell completion script
cb mcp Run as MCP server for AI assistants

MCP Server (AI Integration)

CodeBoard can run as an MCP server, letting AI assistants (Claude Code, Cursor, etc.) query your repo status directly.

Add to your Claude Code MCP config (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "codeboard": {
      "command": "cb",
      "args": ["mcp"]
    }
  }
}

Available tools:

Tool Description
list_repos Quick list of all repos with name, branch, dirty status
repo_status Full dashboard data (branch, commits, language, remote)
health_check Categorized health report (uncommitted, unpushed, inactive)
recent_activity Cross-repo commit timeline
repo_detail Deep dive into a single repo
search_code Search code across all repos (regex)

No extra dependencies — uses stdio JSON-RPC 2.0, zero config.

Shell Completion

# Bash (add to ~/.bashrc)
eval "$(cb completions bash)"

# Zsh (add to ~/.zshrc)
eval "$(cb completions zsh)"

# Fish (add to ~/.config/fish/completions/)
cb completions fish > ~/.config/fish/completions/cb.fish

Requirements

  • Python ≥ 3.11
  • rich (terminal formatting)
  • git
  • lazygit (optional, for open/dirty/each)
  • gitnexus (optional, for graph)

Windows note: CodeBoard uses sh -c for batched git commands. On Windows, this requires Git for Windows which includes sh. WSL also works.

Performance

  • Scans 48 repos in ~1 second
  • Single shell call per repo (6-9 git commands batched into one sh -c)
  • 8-way parallel scanning via ThreadPoolExecutor
  • Lazy language detection (skipped for commands that don't need it)

Development

git clone https://github.com/shaoyiyang/codeboard.git
cd codeboard
pip install -e ".[dev]"
pytest

See CONTRIBUTING.md for details.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codeboard-0.2.0.tar.gz (42.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

codeboard-0.2.0-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

File details

Details for the file codeboard-0.2.0.tar.gz.

File metadata

  • Download URL: codeboard-0.2.0.tar.gz
  • Upload date:
  • Size: 42.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for codeboard-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2abe1b053ffdff445e5aa6726996e75331f583c2e9a2abc1cf7de23f234c70eb
MD5 50e0087e5dc63dcb836c24fa77e6c813
BLAKE2b-256 48ccb0663689b1e014f9d98dd4a3b7ff06a7975976b70ad273c83eb8e51597dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for codeboard-0.2.0.tar.gz:

Publisher: publish.yml on ysyecust/codeboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codeboard-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: codeboard-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 41.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for codeboard-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 146dbfbdc6ce146d00fa13a2cfd2ea427ab5a02526222b4193278db6b38b2d1c
MD5 b48e8f2371f2f191167d009c0cd6a96d
BLAKE2b-256 fec6133734f1d8fccbc44f7d60a1c73d115a51198fbc063f11d8582ec2c27a5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for codeboard-0.2.0-py3-none-any.whl:

Publisher: publish.yml on ysyecust/codeboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page