Aggregate git commits across multiple local repositories for daily stand-ups and time tracking.
Tip
Looking for a native Mac experience? Check out devcap-app β a macOS Menu Bar app built on the same core.
Scans a directory tree for git repos in parallel, filters commits by author and time period, and renders a colorized Project -> Branch -> Commits tree β or structured JSON.
- Flexible time periods β
today,yesterday,week, or arbitraryXh/Xd(e.g.24h,3d,14d) - Custom date ranges β
--since 2026-03-01 --until 2026-03-10for arbitrary date ranges - Parallel repo scanning β uses rayon; skips
node_modules,target,vendor, and other build artifacts automatically - Conventional commit highlighting β color-coded by type, auto-detected for TTY
- Interactive mode β drill-down navigation through projects, branches, and commits with fuzzy search
- Output depth β show only projects, projects with branches, or full detail with
-d - JSON output β machine-readable, suitable for scripting or further processing
- Clipboard copy β
--copyputs a clean plain-text summary on the clipboard for pasting into Slack or Teams - Config file β
~/.devcap.tomlstores your defaults so you don't have to repeat--pathand--author
Note
Requires git on $PATH. Author defaults to git config --global user.name.
brew install konradmichalik/tap/devcapThis installs both devcap and the shorthand wg.
To update to the latest version:
brew upgrade konradmichalik/tap/devcapUse devcap-core to build your own tools on top of the commit aggregation engine:
[dependencies]
devcap-core = "0.3"cargo install --path .# Today's commits in the current directory
devcap
# Yesterday across all projects under ~/Sites
devcap -p yesterday --path ~/Sites
# Last 7 days, filtered by author
devcap -p 7d --path ~/Sites -a "Jane Doe"
# This calendar week as JSON
devcap -p week --json
# Interactive drill-down mode
devcap -i --path ~/Sites -p 7d
# Compact overview β projects only
devcap -d projects --path ~/Sites -p 7d
# Projects with branches (no individual commits)
devcap -d branches --path ~/Sites -p 7d
# Show repository origin (GitHub, GitLab, etc.)
devcap --show-origin --path ~/Sites -p 7d
# Copy output to clipboard for stand-ups
devcap --copy --path ~/Sites -p yesterday
# Commits from March 1st to March 10th
devcap --since 2026-03-01 --until 2026-03-10
# Everything since March 1st
devcap --since 2026-03-01 --path ~/Sites
# This week's commits up to March 5th
devcap -p week --until 2026-03-05
# Sort by number of commits (most active first)
devcap --sort commits --path ~/Sites -p 7d
# Sort alphabetically
devcap --sort name --path ~/Sites -p 7dUse -i / --interactive to browse results interactively instead of printing them all at once. Navigate through three levels with fuzzy search:
- Projects β select a repository to inspect
- Branches β select a branch within that project
- Commits β select a commit to view its
git show --statdetails
Each level shows a summary with commit counts and last activity time. Navigation:
- Type to fuzzy-filter the list
- Enter to select an item
- Esc to go back one level (or quit at the top)
- Show all renders the familiar terminal tree output for the current scope
Use -d / --depth to control how much detail is shown. Each level includes a summary with last activity time.
| Depth | Output |
|---|---|
projects |
:: my-app (6 commits, 2 branches, 2h ago) |
branches |
Projects + >> main (4 commits, 2h ago) |
commits |
Full tree with all commits (default) |
Use -o / --show-origin to display the hosting platform of each repository, detected from the origin remote URL:
:: my-app [GitHub] (6 commits, 2 branches, 2h ago)
:: internal-tool [GitLab Self-Hosted] (1 commit, 1 branch, 3d ago)
:: local-only (2 commits, 1 branch, 5h ago)
Supported platforms: GitHub, GitLab, Bitbucket, GitLab Self-Hosted, and custom hostnames. The origin field is always included in JSON output regardless of the flag.
Use --copy to put a clean plain-text summary on the system clipboard β ready to paste into Slack, Teams, or a daily standup note:
devcap --copy -p yesterday --path ~/SitesThe normal terminal output is still printed; the clipboard content is a plain-text version without ANSI colors. A confirmation message (Copied to clipboard.) appears on stderr.
Use --since and --until to specify exact date boundaries (format: YYYY-MM-DD). Both dates are inclusive.
| Combination | Behavior |
|---|---|
--since + --until |
Exact range, --period is ignored |
--since only |
From that date to now |
--until only |
Start from --period, end capped at that date |
devcap --since 2026-03-01 --until 2026-03-10 # exact range
devcap --since 2026-03-01 # open-ended to now
devcap -p week --until 2026-03-05 # week start, capped endUse --sort to control the order of projects. The format is <field> or <field>:<direction>.
| Field | Default direction | Description |
|---|---|---|
time |
desc | Most recent commit first (default) |
commits |
desc | Most commits first |
name |
asc | Alphabetical by project name |
lines |
desc | Most changed lines first (requires --stat) |
devcap --sort name # A β Z
devcap --sort name:desc # Z β A
devcap --sort commits:asc # least active first
devcap --sort lines --stat # most changed lines firstCreate ~/.devcap.toml to set defaults. CLI arguments always take precedence.
path = "~/Sites"
author = "Jane Doe"
period = "today"
show_origin = true
color = true
sort = "commits"
since = "2026-03-01"
until = "2026-03-31"All fields are optional. When a field is not set in the config, the built-in default applies (path = ".", period = "today", sort = "time", color auto-detected from TTY).
Usage: devcap [OPTIONS]
Options:
-p, --period <PERIOD> Time period: today, yesterday, 24h, 3d, 7d, week [default: today]
--since <DATE> Start date (inclusive, YYYY-MM-DD)
--until <DATE> End date (inclusive, YYYY-MM-DD)
--path <PATH> Root directory to scan for git repos [default: .]
--json Output as JSON instead of colored terminal tree
--no-color Disable colored output (overrides TTY auto-detection)
--copy Copy output to clipboard as plain text (for stand-ups)
-i, --interactive Interactive drill-down mode (projects > branches > commits)
-d, --depth <DEPTH> Output depth: projects, branches, commits [default: commits]
-a, --author <AUTHOR> Filter by author name (defaults to git config user.name)
-o, --show-origin Show repository origin (GitHub, GitLab, etc.)
-s, --stat Show diff stats (+insertions -deletions ~files) per commit
--sort <SORT> Sort projects: time, commits, name, lines (append :asc or :desc)
-h, --help Print help
-V, --version Print version
Note
Colors are auto-detected: enabled when stdout is a terminal, disabled when piping. Use --no-color to force plain output, or set color = false in ~/.devcap.toml.
Tip
Use --json to pipe into jq for custom filtering:
devcap -p week --json | jq '[.[] | {project, commits: [.branches[].commits[].message]}]'Each entry in the JSON array follows this shape:
{
"project": "my-app",
"path": "/Users/me/Sites/my-app",
"origin": "github",
"branches": [
{
"name": "main",
"commits": [
{
"hash": "a1b2c3d",
"message": "feat: add login flow",
"commit_type": "feat",
"timestamp": "2026-02-23T10:15:00+01:00",
"relative_time": "3h ago"
}
]
}
]
}Important
Merge commits are excluded from all output (--no-merges is always applied).
MIT
