max-sixty/worktrunkPublic

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

AI summary: A fast, Rust-based CLI that simplifies git worktree management for running multiple AI agents in parallel.

Stars
8.8K
+64 today
Forks
315
Watchers
19
Open issues
33
Open PRs
24
Contributors
~78
Commits
5.3K
Branches
52

RustOtherCreated Oct 17, 2025Last push todayLatest release v0.80.0+378 stars this week+1.6K this month

Quick answers

What is worktrunk?
A fast, Rust-based CLI that simplifies git worktree management for running multiple AI agents in parallel.
What does worktrunk do?
Worktrunk is a command-line interface tool that radically simplifies the management of git worktrees. It reduces complex worktree commands down to three core actions, making them as intuitive as standard git branches. By automatically providing isolated directories, it enables users to run multiple AI coding agents like Claude Code or Codex simultaneously without encountering local file conflicts. The tool includes built-in hooks to automate local workflow setup across these parallel workspaces. Built in Rust, it ensures fast execution and seamless integration into existing developer environments.
Who is worktrunk for?
Software engineers and developers who heavily utilize git branching and AI coding agents. It is ideal for users looking to streamline context switching and avoid the overhead of traditional git worktree commands.
How do I get started with worktrunk?
https://worktrunk.dev
How popular is worktrunk on GitHub?
max-sixty/worktrunk has 8,797 stars and 315 forks on GitHub, and gained 378 stars in the last 7 days.
What license does worktrunk use?
max-sixty/worktrunk is released under the Other license.

Star history

since Sep 12, 2026
02.5K5K7.5KSep 2026Sep 2026Sep 2026Oct 2026
8.8K stars as of Oct 4, 2026. Measured daily since Sep 12, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepOctMonWedFri2025-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: 9 commits2026-09-13: 17 commits2026-09-14: 3 commits2026-09-15: 15 commits2026-09-16: 25 commits2026-09-17: 14 commits2026-09-18: 5 commits2026-09-19: 2 commits2026-09-20: 14 commits2026-09-21: 14 commits2026-09-22: 8 commits2026-09-23: 6 commits2026-09-24: 7 commits2026-09-25: 8 commits2026-09-26: 14 commits2026-09-27: 20 commits2026-09-28: 6 commits2026-09-29: 3 commits2026-09-30: 5 commits2026-10-01: 8 commits2026-10-02: 8 commits2026-10-03: 3 commits2026-10-04: 2 commits2026-10-05: 0 commits2026-10-06: 0 commits2026-10-07: 0 commits2026-10-08: 0 commits2026-10-09: 0 commits2026-10-10: 0 commits
5,249 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    5,249 commits in 52 weeks

  • Continuous integration

    Automated checks passing

  • Repeat trending

    18 trending appearances

What worktrunk does

Worktrunk is a command-line interface tool that radically simplifies the management of git worktrees. It reduces complex worktree commands down to three core actions, making them as intuitive as standard git branches. By automatically providing isolated directories, it enables users to run multiple AI coding agents like Claude Code or Codex simultaneously without encountering local file conflicts. The tool includes built-in hooks to automate local workflow setup across these parallel workspaces. Built in Rust, it ensures fast execution and seamless integration into existing developer environments.

Software engineers and developers who heavily utilize git branching and AI coding agents. It is ideal for users looking to streamline context switching and avoid the overhead of traditional git worktree commands.

  • Worktree simplification: Reduces complex git worktree commands down to simple, branch-like operations.
  • Branch-based addressing: Interacts with isolated worktrees directly via their associated git branch names.
  • Parallel agent execution: Provides isolated directories so multiple AI agents can run simultaneously without conflicts.
  • Workflow automation: Executes built-in local hooks automatically to configure new workspaces upon creation.
  • Rust implementation: Executes fast and reliably across systems leveraging modern Rust architecture.
  • Agent compatibility: Integrates seamlessly with popular AI tools like Claude Code and Codex.

Where teams use it

Parallel AI coding

Run multiple autonomous AI coding agents on different branches simultaneously without file collision.

Context switching

Jump rapidly between different features or bug fixes using isolated, ready-to-use directories.

Workspace automation

Trigger custom setup scripts automatically whenever a new worktree environment is initialized.

Code review sandboxing

Check out a colleague's pull request into a dedicated directory without disrupting your current local state.

Getting started: https://worktrunk.dev

README

main branch

Worktrunk logo  Worktrunk

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

October 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 & copy-on-write build caches.

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 gives 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 Foundation — policy.

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 authenticatio…
^ 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

Contributing

Running the tests

cargo test

The shell integration tests need bash, zsh, fish, nushell, and pwsh, plus jq:

cargo test --test integration --features shell-integration-tests

📚 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

152 total
  1. 0.80.0v0.80.0Sep 27, 202616.1K downloads

    ## Release Notes ### Improved - **`wt list` and the `wt switch` picker settle faster in repos with many worktrees**: rows fill from the top down, and on macOS with `core.fsmonitor=true` no daemon start is forked for a worktree whose daemon is already running. On a 50-worktree repo the picker's per-row work starts at 47ms, down from 120ms. ([#4286](https://github.com/max-sixty/worktrunk/pull/4286), [#4290](https://github.com/max-sixty/worktrunk/pull/4290), [#4288](https://github.com/max-sixty/worktrunk/pull/4288), [#4284](https://github.com/max-sixty/worktrunk/pull/4284)) - **CI status skips branches that were never pushed**: `wt list --full`, the picker, and the statusline no longer query the forge for a local branch no remote has, so a repo with 239 local branches made 25 `gh` calls instead of 249. A PR opened from a branch another clone pushed shows once you fetch. GitLab looks up its project ID once per command, not per row. ([#4289](https://github.com/max-sixty/worktrunk/pull/4289), [#4216](https://github.com/max-sixty/worktrunk/pull/4216)) - **Leaner Codex commit generation**: the recommended Codex command moves to `gpt-6-luna` with reasoning off and unneeded Codex feature

  2. 0.79.0v0.79.0Sep 21, 202610.9K downloads

    ## Release Notes ### Improved - **`wt switch --no-cd -x <program>` runs the program in the worktree**: it started in the invoking directory, so a program meant for the new worktree had to be handed `{{ worktree_path }}`. `--no-cd` now governs only your shell — `wt switch feature --no-cd -x code -- .` opens the worktree in an editor and leaves your terminal put. (Breaking: a program that wanted the invoking directory needs an explicit `cd`.) Fixes [#4042](https://github.com/max-sixty/worktrunk/issues/4042). ([#4179](https://github.com/max-sixty/worktrunk/pull/4179), thanks @yajo for reporting) - **The picker's preview tabs show which have content**: a tab's label is dim when that tab is empty for the selected row, and underlined when it's the active tab. Availability sat on the tab's number alone, so every inactive label read dim whatever the row held. ([#4174](https://github.com/max-sixty/worktrunk/pull/4174)) - **Messages name the destination, and end with the command to run**: without shell integration, `wt merge` and `wt remove` printed `Cannot change directory — shell integration not installed` and no path; the warning now names the worktree, as `wt switch` already did. "Ca

  3. 0.78.0v0.78.0Sep 16, 20264.8K downloads

    ## Release Notes ### Improved - **Hook scripts read renamed context keys**: the JSON piped to every hook drops `worktree`, `repo_root`, `main_worktree`, and `main_worktree_path` in favour of `worktree_path`, `repo_path`, `repo`, and `primary_worktree_path`. Config templates migrate on load, so hooks written with the old names keep working; scripts reading the JSON, `--execute` templates, and `--var` overrides need updating. (Breaking.) ([#4080](https://github.com/max-sixty/worktrunk/pull/4080)) - **`wt config plugins pi` installs for Pi; oh-my-pi moves to `wt config plugins omp`**: `pi install` wrote an oh-my-pi hook, which Pi never loads; Pi users re-run it to get a Pi extension. Existing oh-my-pi hooks keep working, listed as outdated until `wt config plugins omp install`. (Breaking: scripts that run `wt config plugins pi` for oh-my-pi need `omp`.) [Docs](https://worktrunk.dev/claude-code/#oh-my-pi) ([#4135](https://github.com/max-sixty/worktrunk/pull/4135), thanks @ashebanow) - **Interactive prompts no longer open with a blank line**: `wt config shell install`, `wt config plugins claude install`, and the commit-message setup offer in `wt merge` began with one. ([#4059](https

  4. 0.77.0v0.77.0Sep 8, 202612.5K 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

  5. 0.76.0v0.76.0Sep 1, 20269K 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

Commits per week

last 52 weeks
2960Week 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: 60 commitsWeek of 2026-09-13: 81 commitsWeek of 2026-09-20: 71 commitsWeek of 2026-09-27: 53 commitsWeek of 2026-10-04: 2 commitsOct 12, 2025Oct 4, 2026
5.2K commits in the last 52 weeks.

When work happens

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

Who is committing

last 52 weeks
Maintainer commits4,043 (77%)
Community commits1,217 (23%)

5,260 commits in total over the last year.

DateListRankStars gained
Oct 4, 2026monthly#16+1,999
Oct 3, 2026monthly#17+1,950
Oct 2, 2026monthly#14+1,903
Oct 1, 2026monthly#17+1,884
Sep 30, 2026monthly#17+1,843
Sep 29, 2026monthly#14+1,844
Sep 22, 2026weekly#13+822
Sep 21, 2026weekly#13+822
Sep 20, 2026weekly#7+1,141
Sep 19, 2026weekly#8+1,104
Sep 18, 2026weekly#7+1,060
Sep 17, 2026weekly#6+998
Sep 16, 2026weekly#6+871
Sep 15, 2026weekly#5+761
Sep 14, 2026weekly#9+588
  • 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.

    272.9K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    251.2K stars · Python

  • 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

  • Significant-Gravitas/AutoGPT

    AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.

    187.7K stars · Python

  • DietrichGebert/ponytail

    Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

    154.8K stars · JavaScript

  • Shubhamsaboo/awesome-llm-apps

    100+ AI Agents, Agent Skills and RAG Apps - Free and Open Source.

    140.7K stars · Python