max-sixty/worktrunkPublic

Worktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows

Stars
7K
Forks
249
Watchers
15
Open issues
27
Open PRs
12
Contributors
~72
Commits
5K
Branches
44

RustOtherCreated Oct 17, 2025Last push todayLatest release v0.77.0

Star history

since Nov 23, 2025
02K4K6KNov 2025Feb 2026Jun 2026Sep 2026
7K stars as of Sep 12, 2026, tracked back to Nov 23, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-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: 1 commit2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 30 commits2025-10-20: 48 commits2025-10-21: 36 commits2025-10-22: 16 commits2025-10-23: 40 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 39 commits2025-10-28: 52 commits2025-10-29: 17 commits2025-10-30: 16 commits2025-10-31: 18 commits2025-11-01: 30 commits2025-11-02: 27 commits2025-11-03: 36 commits2025-11-04: 57 commits2025-11-05: 35 commits2025-11-06: 22 commits2025-11-07: 4 commits2025-11-08: 17 commits2025-11-09: 28 commits2025-11-10: 28 commits2025-11-11: 8 commits2025-11-12: 9 commits2025-11-13: 8 commits2025-11-14: 7 commits2025-11-15: 4 commits2025-11-16: 0 commits2025-11-17: 30 commits2025-11-18: 22 commits2025-11-19: 50 commits2025-11-20: 28 commits2025-11-21: 77 commits2025-11-22: 29 commits2025-11-23: 52 commits2025-11-24: 78 commits2025-11-25: 38 commits2025-11-26: 38 commits2025-11-27: 25 commits2025-11-28: 47 commits2025-11-29: 18 commits2025-11-30: 17 commits2025-12-01: 42 commits2025-12-02: 40 commits2025-12-03: 29 commits2025-12-04: 51 commits2025-12-05: 61 commits2025-12-06: 0 commits2025-12-07: 2 commits2025-12-08: 56 commits2025-12-09: 34 commits2025-12-10: 81 commits2025-12-11: 58 commits2025-12-12: 37 commits2025-12-13: 2 commits2025-12-14: 38 commits2025-12-15: 33 commits2025-12-16: 16 commits2025-12-17: 11 commits2025-12-18: 15 commits2025-12-19: 12 commits2025-12-20: 16 commits2025-12-21: 10 commits2025-12-22: 1 commit2025-12-23: 3 commits2025-12-24: 6 commits2025-12-25: 16 commits2025-12-26: 11 commits2025-12-27: 2 commits2025-12-28: 4 commits2025-12-29: 18 commits2025-12-30: 44 commits2025-12-31: 43 commits2026-01-01: 36 commits2026-01-02: 34 commits2026-01-03: 15 commits2026-01-04: 27 commits2026-01-05: 26 commits2026-01-06: 16 commits2026-01-07: 22 commits2026-01-08: 9 commits2026-01-09: 28 commits2026-01-10: 12 commits2026-01-11: 49 commits2026-01-12: 22 commits2026-01-13: 37 commits2026-01-14: 36 commits2026-01-15: 34 commits2026-01-16: 14 commits2026-01-17: 8 commits2026-01-18: 25 commits2026-01-19: 23 commits2026-01-20: 15 commits2026-01-21: 16 commits2026-01-22: 13 commits2026-01-23: 16 commits2026-01-24: 17 commits2026-01-25: 28 commits2026-01-26: 22 commits2026-01-27: 5 commits2026-01-28: 9 commits2026-01-29: 5 commits2026-01-30: 3 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 11 commits2026-02-03: 0 commits2026-02-04: 5 commits2026-02-05: 4 commits2026-02-06: 4 commits2026-02-07: 0 commits2026-02-08: 6 commits2026-02-09: 2 commits2026-02-10: 14 commits2026-02-11: 11 commits2026-02-12: 4 commits2026-02-13: 8 commits2026-02-14: 14 commits2026-02-15: 33 commits2026-02-16: 14 commits2026-02-17: 17 commits2026-02-18: 17 commits2026-02-19: 12 commits2026-02-20: 9 commits2026-02-21: 6 commits2026-02-22: 25 commits2026-02-23: 2 commits2026-02-24: 2 commits2026-02-25: 14 commits2026-02-26: 10 commits2026-02-27: 6 commits2026-02-28: 6 commits2026-03-01: 2 commits2026-03-02: 6 commits2026-03-03: 1 commit2026-03-04: 14 commits2026-03-05: 15 commits2026-03-06: 13 commits2026-03-07: 19 commits2026-03-08: 35 commits2026-03-09: 4 commits2026-03-10: 11 commits2026-03-11: 12 commits2026-03-12: 13 commits2026-03-13: 24 commits2026-03-14: 25 commits2026-03-15: 7 commits2026-03-16: 15 commits2026-03-17: 8 commits2026-03-18: 7 commits2026-03-19: 16 commits2026-03-20: 7 commits2026-03-21: 11 commits2026-03-22: 20 commits2026-03-23: 18 commits2026-03-24: 7 commits2026-03-25: 26 commits2026-03-26: 15 commits2026-03-27: 10 commits2026-03-28: 6 commits2026-03-29: 19 commits2026-03-30: 20 commits2026-03-31: 23 commits2026-04-01: 19 commits2026-04-02: 8 commits2026-04-03: 9 commits2026-04-04: 5 commits2026-04-05: 4 commits2026-04-06: 44 commits2026-04-07: 24 commits2026-04-08: 31 commits2026-04-09: 14 commits2026-04-10: 15 commits2026-04-11: 41 commits2026-04-12: 61 commits2026-04-13: 33 commits2026-04-14: 19 commits2026-04-15: 19 commits2026-04-16: 10 commits2026-04-17: 6 commits2026-04-18: 19 commits2026-04-19: 25 commits2026-04-20: 24 commits2026-04-21: 28 commits2026-04-22: 9 commits2026-04-23: 4 commits2026-04-24: 3 commits2026-04-25: 9 commits2026-04-26: 7 commits2026-04-27: 14 commits2026-04-28: 6 commits2026-04-29: 30 commits2026-04-30: 16 commits2026-05-01: 6 commits2026-05-02: 22 commits2026-05-03: 20 commits2026-05-04: 41 commits2026-05-05: 3 commits2026-05-06: 8 commits2026-05-07: 4 commits2026-05-08: 8 commits2026-05-09: 10 commits2026-05-10: 25 commits2026-05-11: 42 commits2026-05-12: 10 commits2026-05-13: 1 commit2026-05-14: 2 commits2026-05-15: 6 commits2026-05-16: 5 commits2026-05-17: 13 commits2026-05-18: 8 commits2026-05-19: 21 commits2026-05-20: 18 commits2026-05-21: 15 commits2026-05-22: 2 commits2026-05-23: 5 commits2026-05-24: 4 commits2026-05-25: 9 commits2026-05-26: 11 commits2026-05-27: 6 commits2026-05-28: 7 commits2026-05-29: 3 commits2026-05-30: 3 commits2026-05-31: 1 commit2026-06-01: 2 commits2026-06-02: 11 commits2026-06-03: 3 commits2026-06-04: 3 commits2026-06-05: 1 commit2026-06-06: 10 commits2026-06-07: 4 commits2026-06-08: 5 commits2026-06-09: 9 commits2026-06-10: 2 commits2026-06-11: 25 commits2026-06-12: 5 commits2026-06-13: 5 commits2026-06-14: 10 commits2026-06-15: 4 commits2026-06-16: 8 commits2026-06-17: 13 commits2026-06-18: 12 commits2026-06-19: 6 commits2026-06-20: 3 commits2026-06-21: 8 commits2026-06-22: 11 commits2026-06-23: 19 commits2026-06-24: 40 commits2026-06-25: 17 commits2026-06-26: 8 commits2026-06-27: 11 commits2026-06-28: 27 commits2026-06-29: 21 commits2026-06-30: 5 commits2026-07-01: 7 commits2026-07-02: 3 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 2 commits2026-07-06: 10 commits2026-07-07: 4 commits2026-07-08: 4 commits2026-07-09: 13 commits2026-07-10: 10 commits2026-07-11: 2 commits2026-07-12: 16 commits2026-07-13: 12 commits2026-07-14: 14 commits2026-07-15: 11 commits2026-07-16: 8 commits2026-07-17: 3 commits2026-07-18: 4 commits2026-07-19: 7 commits2026-07-20: 1 commit2026-07-21: 5 commits2026-07-22: 10 commits2026-07-23: 15 commits2026-07-24: 25 commits2026-07-25: 14 commits2026-07-26: 19 commits2026-07-27: 3 commits2026-07-28: 19 commits2026-07-29: 7 commits2026-07-30: 13 commits2026-07-31: 1 commit2026-08-01: 16 commits2026-08-02: 11 commits2026-08-03: 8 commits2026-08-04: 1 commit2026-08-05: 11 commits2026-08-06: 5 commits2026-08-07: 7 commits2026-08-08: 10 commits2026-08-09: 7 commits2026-08-10: 1 commit2026-08-11: 4 commits2026-08-12: 6 commits2026-08-13: 8 commits2026-08-14: 5 commits2026-08-15: 4 commits2026-08-16: 0 commits2026-08-17: 12 commits2026-08-18: 5 commits2026-08-19: 3 commits2026-08-20: 2 commits2026-08-21: 4 commits2026-08-22: 10 commits2026-08-23: 5 commits2026-08-24: 15 commits2026-08-25: 6 commits2026-08-26: 7 commits2026-08-27: 10 commits2026-08-28: 14 commits2026-08-29: 2 commits2026-08-30: 7 commits2026-08-31: 7 commits2026-09-01: 9 commits2026-09-02: 9 commits2026-09-03: 1 commit2026-09-04: 2 commits2026-09-05: 2 commits2026-09-06: 15 commits2026-09-07: 12 commits2026-09-08: 14 commits2026-09-09: 4 commits2026-09-10: 4 commits2026-09-11: 2 commits2026-09-12: 0 commits
5,033 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    5,033 commits in 52 weeks

  • Continuous integration

    Automated checks passing

README

main branch

Worktrunk logo  Worktrunk

Docs License: MIT OR Apache-2.0 CI Codecov Stars maintained with tend

September 2026: Worktrunk was released at the start of the year, and has quickly become the most popular git worktree manager. It's built with love (there's no slop!). Please let me know any frictions at all; I'm intensely focused on continuing to make Worktrunk excellent, and the biggest help is folks posting problems they perceive.

Worktrunk is a CLI for git worktree management, designed for running AI agents in parallel.

Worktrunk's three core commands make worktrees as easy as branches. Plus, Worktrunk has a bunch of quality-of-life features to simplify working with many parallel changes, including hooks to automate local workflows.

A quick demo:

Worktrunk Demo

📚 Full documentation at worktrunk.dev 📚

Context: git worktrees

AI agents like Claude Code and Codex can handle longer tasks without supervision, such that it's possible to manage 5-10+ in parallel. Git's native worktree feature give each agent its own working directory, so they don't step on each other's changes.

But the git worktree UX is clunky. Even a task as small as starting a new worktree requires typing the branch name three times: git worktree add -b feat ../repo.feat, then cd ../repo.feat.

Worktrunk makes git worktrees as easy as branches

Worktrees are addressed by branch name; paths are computed from a configurable template. Commands that take a branch also accept the path of the worktree it is checked out in.

Start with the core commands

Core commands:

Task Worktrunk Plain git
Switch worktrees wt switch feat cd ../repo.feat
Create + start Claude wt switch -c -x claude feat
git worktree add -b feat ../repo.feat && \
cd ../repo.feat && \
claude
Clean up wt remove
cd ../repo && \
git worktree remove ../repo.feat && \
git branch -d feat
List with status wt list git worktree list (paths only)

Expand into the more advanced commands as needed

Workflow automation:

Multiple parallel agents, same simple commands:

Worktrunk omnibus demo: multiple Claude agents in Zellij tabs with hooks, LLM commits, and merge workflow

Install

Homebrew (macOS & Linux):

brew install worktrunk && wt config shell install

Shell integration allows commands to change directories.

Cargo:

cargo install worktrunk && wt config shell install
Windows & other

Windows. wt defaults to Windows Terminal's command, so Winget additionally installs Worktrunk as git-wt to avoid the conflict:

winget install max-sixty.worktrunk
git-wt config shell install

Alternatively, disable Windows Terminal's alias (Settings → Apps → Advanced app settings → App execution aliases → "Terminal"/"Terminal Preview") to use wt directly.

Free code signing provided by SignPath.io, certificate by SignPath Foundationpolicy.

Arch Linux:

sudo pacman -S worktrunk && wt config shell install

Conda / Pixi (community-maintained feedstock):

conda install -c conda-forge worktrunk && wt config shell install

Or with Pixi: pixi global install worktrunk && wt config shell install.

Quick start

Create a worktree for a new feature:

$ wt switch --create feature-auth
✓ Created branch feature-auth from main and worktree @ ~/repo.feature-auth

This creates a new branch and worktree, then switches to it. Do your work, then check all worktrees with wt list:

$ wt list
  Branch        Status      HEAD±     main↕    main…±    Remote⇅  Commit    Age  Message
@ feature-auth  +   ↑      +27   -8   ↑1       +31                4bc72dc    2h  Add authenticati…
^ main              ^⇡                                    ⇡1      0e631ad    1d  Initial commit

○ Showing 2 worktrees, 1 with changes, 1 ahead, hidden: Path

The @ marks the current worktree. + means staged changes, ↑1 means 1 commit ahead of main, means unpushed commits.

When done, either:

PR workflow — commit, push, open a PR, merge via GitHub/GitLab, then clean up:

wt step commit                    # commit staged changes
gh pr create                      # or glab mr create
wt remove                         # after PR is merged

Local merge — squash, rebase onto main, fast-forward merge, clean up:

$ wt merge main
◎ Generating commit message and committing changes... (2 files, +53, no squashing needed)
  Add authentication module
✓ Committed changes @ a1b2c3d
◎ Merging 1 commit to main @ a1b2c3d (no rebase needed)
  * a1b2c3d Add authentication module
   auth.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
   lib.rs  |  2 ++
   2 files changed, 53 insertions(+)
✓ Merged to main (1 commit, 2 files, +53)
◎ Removing feature-auth worktree & branch in background (same commit as main, _)
○ Switched to worktree for main @ ~/repo

For parallel agents, create multiple worktrees and launch an agent in each:

wt switch -x claude -c feature-a -- 'Add user authentication'
wt switch -x claude -c feature-b -- 'Fix the pagination bug'
wt switch -x claude -c feature-c -- 'Write tests for the API'

The -x flag runs a command after switching; arguments after -- are passed to it. Configure post-start hooks to automate setup (install deps, start dev servers).

Next steps

Further reading

Contributing

📚 Full documentation at worktrunk.dev 📚

Star history

Star History Chart
View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

149 total
  1. 0.77.0v0.77.0Sep 8, 20263.3K downloads

    ## Release Notes ### Improved - **`wt list` sizes and aligns its columns to the terminal width**: one long branch name no longer sizes the Branch column for every row — it caps at 32 characters and elides, so a narrow terminal keeps its other columns instead of degenerating into a branch list. `Remote⇅` stops holding blank space open in a repo with no remote, and alignment now follows the value type. `--format=json` still carries the whole name. ([#3998](https://github.com/max-sixty/worktrunk/pull/3998)) - **`wt list` names what it hid and marks detached worktrees**: the summary reads `hidden: Path, Commit` instead of counting columns, a detached worktree shows `⊘` rather than borrowing `⚑`, and a prunable row leaves its cells blank instead of showing loading dots that never resolve. ([#3998](https://github.com/max-sixty/worktrunk/pull/3998)) - **`wt list --format=json` gains a `marker` field and stops reporting `detached` twice**: the branch marker set by `wt config state marker` is now readable without parsing it out of `symbols`, and `state` no longer reports a detached worktree as `branch_worktree_mismatch` — the sibling `detached` boolean carries it. ([#3998](https://gith

  2. 0.76.0v0.76.0Sep 1, 20268.4K downloads

    ## Release Notes ### Improved - **`wt switch --execute` takes a program, not a shell string**: `-x` names one program, with everything after `--` passed as literal argv. Worktrunk spawns it as a child rather than running it in your interactive shell, so shell functions and its `cd` no longer reach you. `-x sh -- -c '…'` recovers shell syntax, not functions. (Breaking: existing `-x` strings, plus `WORKTRUNK_DIRECTIVE_EXEC_FILE` and `WORKTRUNK_SHELL`.) ([#3977](https://github.com/max-sixty/worktrunk/pull/3977), closes [#2860](https://github.com/max-sixty/worktrunk/issues/2860), fixes [#3944](https://github.com/max-sixty/worktrunk/issues/3944), thanks @omgreenfield for testing the migration path) - **Worktrunk decides tracking for the branches it creates**: a new branch gets an upstream only when its name matches the remote branch it starts from, whatever `branch.autoSetupMerge` says: `--create release --base origin/release` tracks, `--create feature --base origin/release` does not. Under `autoSetupMerge = false` this previously exited 128 after creating the worktree. ([#3913](https://github.com/max-sixty/worktrunk/pull/3913), [#3950](https://github.com/max-sixty/worktrunk/pull/395

  3. 0.75.0v0.75.0Aug 27, 20266.3K downloads

    ## Release Notes ### Improved - **The `wt switch` picker opens on one unified diff**: local rows combine committed, staged, unstaged, and untracked changes. Tab skips empty subsidiary views, while `Alt-1` through `Alt-8` retain direct access. [Docs](https://worktrunk.dev/switch/#interactive-picker) ([#3865](https://github.com/max-sixty/worktrunk/pull/3865)) - **Git 2.43 is now the minimum supported version**: older Git exits with an upgrade message before Git-dependent commands run; `wt config shell` remains available so shell startup continues. (Breaking.) ([#3895](https://github.com/max-sixty/worktrunk/pull/3895)) ### Fixed - **`wt list` no longer grows `.git/objects` during advisory conflict checks**: untracked content stays visible but is excluded from synthetic trees, and all probe-only objects use temporary storage. ([#3906](https://github.com/max-sixty/worktrunk/pull/3906), fixes [#3883](https://github.com/max-sixty/worktrunk/issues/3883), thanks @srobroek for reporting and the original fix) - **`HEAD±` counts untracked files without inflating moves**: `wt list`, the picker, and statusline include untracked lines. Tracked deletions paired with untracked destinations co

  4. 0.74.0v0.74.0Aug 14, 202613.1K downloads

    ## Release Notes ### Improved - **A JSON bool or null nested in a `vars` value renders as `True`, `False`, or `None`**: minijinja 2.22 adopted Jinja2's spelling for all three, so `{{ vars.<key>.<field> }}` into an object set by `wt config state vars set` prints those words. A var whose whole value is `true` stays a string. (Breaking: the old spellings were `true`, `false`, and `none`.) ([#3795](https://github.com/max-sixty/worktrunk/pull/3795)) - **`wt config approvals add --yes` records approvals without a terminal**: the command refused every non-interactive run, so a container or CI job could not pre-approve a project it had just cloned. `--yes` now lists what it trusts and writes it, and a save it cannot make fails the command rather than warning and exiting 0. ([#3819](https://github.com/max-sixty/worktrunk/pull/3819)) - **`remote_repo` names the repository as the remote spells it**: `repo` is the directory on disk, so a renamed clone reports the new name. `{{ remote_repo }}` takes it from the primary remote's URL, available everywhere `owner` is and unset when no remote parses. ([#3745](https://github.com/max-sixty/worktrunk/pull/3745), thanks @canac) ### Fixed - **`wt

  5. 0.73.0v0.73.0Aug 12, 20262.7K downloads

    ## Release Notes ### Fixed - **`wt remove` refuses a registered path that now holds a different repository**: A clone made at a stale registration's path was removed whole, uncommitted work included — and wt routed the user there, since the dirty gate read the occupant's files as this worktree's and offered `--force` as the cure. Removal now compares the directory's git dir against this repository's; `--force` waives uncommitted changes, not the check for whose directory it is. ([#3785](https://github.com/max-sixty/worktrunk/pull/3785)) - **The Nix flake names three systems, dropping Intel macOS**: nixpkgs drops `x86_64-darwin` in 26.11, so the flake would stop evaluating there once `flake.lock` advances past it. (Breaking: `nix build`, `nix run`, and the home-manager module no longer resolve on Intel macOS. Release binaries are unaffected and still ship for it.) ([#3776](https://github.com/max-sixty/worktrunk/pull/3776)) - **`NO_COLOR` and a redirected stream reach every surface**: Escapes still landed in progressive `wt list`, `-v` diagnostics, clap's error tips, and parts of stderr — the deprecation warning, the `wt config update` preview, the `[y/N]` prompt — so a redirecte

Commits per week

last 52 weeks
2960Week of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 1 commitsWeek of 2025-10-19: 170 commitsWeek of 2025-10-26: 172 commitsWeek of 2025-11-02: 198 commitsWeek of 2025-11-09: 92 commitsWeek of 2025-11-16: 236 commitsWeek of 2025-11-23: 296 commitsWeek of 2025-11-30: 240 commitsWeek of 2025-12-07: 270 commitsWeek of 2025-12-14: 141 commitsWeek of 2025-12-21: 49 commitsWeek of 2025-12-28: 194 commitsWeek of 2026-01-04: 140 commitsWeek of 2026-01-11: 200 commitsWeek of 2026-01-18: 125 commitsWeek of 2026-01-25: 72 commitsWeek of 2026-02-01: 24 commitsWeek of 2026-02-08: 59 commitsWeek of 2026-02-15: 108 commitsWeek of 2026-02-22: 65 commitsWeek of 2026-03-01: 70 commitsWeek of 2026-03-08: 124 commitsWeek of 2026-03-15: 71 commitsWeek of 2026-03-22: 102 commitsWeek of 2026-03-29: 103 commitsWeek of 2026-04-05: 173 commitsWeek of 2026-04-12: 167 commitsWeek of 2026-04-19: 102 commitsWeek of 2026-04-26: 101 commitsWeek of 2026-05-03: 94 commitsWeek of 2026-05-10: 91 commitsWeek of 2026-05-17: 82 commitsWeek of 2026-05-24: 43 commitsWeek of 2026-05-31: 31 commitsWeek of 2026-06-07: 55 commitsWeek of 2026-06-14: 56 commitsWeek of 2026-06-21: 114 commitsWeek of 2026-06-28: 63 commitsWeek of 2026-07-05: 45 commitsWeek of 2026-07-12: 68 commitsWeek of 2026-07-19: 77 commitsWeek of 2026-07-26: 78 commitsWeek of 2026-08-02: 53 commitsWeek of 2026-08-09: 35 commitsWeek of 2026-08-16: 36 commitsWeek of 2026-08-23: 59 commitsWeek of 2026-08-30: 37 commitsWeek of 2026-09-06: 51 commitsSep 14, 2025Sep 6, 2026
5K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 29 commitsSun 1:00 — 23 commitsSun 2:00 — 2 commitsSun 3:00 — 1 commitsSun 4:00 — 8 commitsSun 5:00 — 3 commitsSun 6:00 — 12 commitsSun 7:00 — 10 commitsSun 8:00 — 26 commitsSun 9:00 — 13 commitsSun 10:00 — 21 commitsSun 11:00 — 35 commitsSun 12:00 — 41 commitsSun 13:00 — 48 commitsSun 14:00 — 52 commitsSun 15:00 — 60 commitsSun 16:00 — 50 commitsSun 17:00 — 38 commitsSun 18:00 — 32 commitsSun 19:00 — 47 commitsSun 20:00 — 67 commitsSun 21:00 — 56 commitsSun 22:00 — 44 commitsSun 23:00 — 65 commitsMon 0:00 — 42 commitsMon 1:00 — 29 commitsMon 2:00 — 9 commitsMon 3:00 — 2 commitsMon 4:00 — 1 commitsMon 5:00 — 5 commitsMon 6:00 — 6 commitsMon 7:00 — 19 commitsMon 8:00 — 17 commitsMon 9:00 — 30 commitsMon 10:00 — 31 commitsMon 11:00 — 74 commitsMon 12:00 — 56 commitsMon 13:00 — 67 commitsMon 14:00 — 53 commitsMon 15:00 — 71 commitsMon 16:00 — 61 commitsMon 17:00 — 38 commitsMon 18:00 — 59 commitsMon 19:00 — 49 commitsMon 20:00 — 53 commitsMon 21:00 — 58 commitsMon 22:00 — 67 commitsMon 23:00 — 40 commitsTue 0:00 — 29 commitsTue 1:00 — 12 commitsTue 2:00 — 10 commitsTue 3:00 — 3 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 6 commitsTue 7:00 — 11 commitsTue 8:00 — 12 commitsTue 9:00 — 34 commitsTue 10:00 — 46 commitsTue 11:00 — 45 commitsTue 12:00 — 42 commitsTue 13:00 — 52 commitsTue 14:00 — 43 commitsTue 15:00 — 51 commitsTue 16:00 — 52 commitsTue 17:00 — 28 commitsTue 18:00 — 48 commitsTue 19:00 — 47 commitsTue 20:00 — 70 commitsTue 21:00 — 36 commitsTue 22:00 — 48 commitsTue 23:00 — 37 commitsWed 0:00 — 38 commitsWed 1:00 — 24 commitsWed 2:00 — 17 commitsWed 3:00 — 13 commitsWed 4:00 — 12 commitsWed 5:00 — 3 commitsWed 6:00 — 3 commitsWed 7:00 — 10 commitsWed 8:00 — 11 commitsWed 9:00 — 36 commitsWed 10:00 — 40 commitsWed 11:00 — 37 commitsWed 12:00 — 37 commitsWed 13:00 — 44 commitsWed 14:00 — 30 commitsWed 15:00 — 40 commitsWed 16:00 — 63 commitsWed 17:00 — 50 commitsWed 18:00 — 61 commitsWed 19:00 — 49 commitsWed 20:00 — 52 commitsWed 21:00 — 39 commitsWed 22:00 — 46 commitsWed 23:00 — 48 commitsThu 0:00 — 32 commitsThu 1:00 — 25 commitsThu 2:00 — 17 commitsThu 3:00 — 5 commitsThu 4:00 — 6 commitsThu 5:00 — 6 commitsThu 6:00 — 2 commitsThu 7:00 — 5 commitsThu 8:00 — 21 commitsThu 9:00 — 31 commitsThu 10:00 — 37 commitsThu 11:00 — 38 commitsThu 12:00 — 51 commitsThu 13:00 — 38 commitsThu 14:00 — 41 commitsThu 15:00 — 29 commitsThu 16:00 — 38 commitsThu 17:00 — 30 commitsThu 18:00 — 56 commitsThu 19:00 — 48 commitsThu 20:00 — 24 commitsThu 21:00 — 32 commitsThu 22:00 — 39 commitsThu 23:00 — 34 commitsFri 0:00 — 39 commitsFri 1:00 — 24 commitsFri 2:00 — 18 commitsFri 3:00 — 22 commitsFri 4:00 — 9 commitsFri 5:00 — 2 commitsFri 6:00 — 10 commitsFri 7:00 — 14 commitsFri 8:00 — 17 commitsFri 9:00 — 18 commitsFri 10:00 — 21 commitsFri 11:00 — 23 commitsFri 12:00 — 44 commitsFri 13:00 — 37 commitsFri 14:00 — 38 commitsFri 15:00 — 44 commitsFri 16:00 — 33 commitsFri 17:00 — 35 commitsFri 18:00 — 21 commitsFri 19:00 — 32 commitsFri 20:00 — 30 commitsFri 21:00 — 19 commitsFri 22:00 — 29 commitsFri 23:00 — 25 commitsSat 0:00 — 34 commitsSat 1:00 — 13 commitsSat 2:00 — 1 commitsSat 3:00 — 7 commitsSat 4:00 — 1 commitsSat 5:00 — 1 commitsSat 6:00 — 1 commitsSat 7:00 — 8 commitsSat 8:00 — 11 commitsSat 9:00 — 9 commitsSat 10:00 — 23 commitsSat 11:00 — 25 commitsSat 12:00 — 38 commitsSat 13:00 — 54 commitsSat 14:00 — 38 commitsSat 15:00 — 22 commitsSat 16:00 — 32 commitsSat 17:00 — 22 commitsSat 18:00 — 20 commitsSat 19:00 — 26 commitsSat 20:00 — 19 commitsSat 21:00 — 19 commitsSat 22:00 — 29 commitsSat 23:00 — 19 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits3,965 (79%)
Community commits1,081 (21%)

5,046 commits in total over the last year.

DateListRankStars gained
Sep 12, 2026daily#14+44
  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    256.8K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    244.8K stars · Python

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    234.7K stars · JavaScript

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    195.2K stars · Rust

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    194.9K stars · Rust

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    194.9K stars · Rust