worktrunk 0.1.15

A Git worktree manager for trunk-based development
Documentation
<!-- markdownlint-disable MD033 -->

<h1><img src="docs/static/logo.png" alt="Worktrunk logo" width="50" align="absmiddle">&nbsp;&nbsp;Worktrunk</h1>

[![Docs](https://img.shields.io/badge/docs-worktrunk.dev-blue?style=for-the-badge&logo=gitbook)](https://worktrunk.dev)
[![Crates.io](https://img.shields.io/crates/v/worktrunk?style=for-the-badge&logo=rust)](https://crates.io/crates/worktrunk)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](https://opensource.org/licenses/MIT)
[![CI](https://img.shields.io/github/actions/workflow/status/max-sixty/worktrunk/ci.yaml?event=push&branch=main&style=for-the-badge&logo=github)](https://github.com/max-sixty/worktrunk/actions?query=branch%3Amain+workflow%3Aci)

<!-- Dev badges (uncomment when repo is public and has traction) -->
<!-- [![Downloads](https://img.shields.io/crates/d/worktrunk?style=for-the-badge&logo=rust)](https://crates.io/crates/worktrunk) -->
<!-- [![Stars](https://img.shields.io/github/stars/max-sixty/worktrunk?style=for-the-badge&logo=github)](https://github.com/max-sixty/worktrunk/stargazers) -->

> **December 2025**: I've been using Worktrunk as my daily driver, and am releasing it as Open Source this week; I think folks will find it really helpful. It's built with love (there's no slop!). If social proof is helpful: I also created [PRQL]https://github.com/PRQL/prql (10k stars) and am a maintainer of [Xarray]https://github.com/pydata/xarray (4k stars), [Insta]https://github.com/mitsuhiko/insta, & [Numbagg]https://github.com/numbagg/numbagg.

Worktrunk is a CLI for git worktree management, designed for parallel AI agent workflows. Git worktrees give each agent an isolated branch and directory; Worktrunk adds branch-based navigation, unified status, and lifecycle hooks. Creating a new agent workspace is as immediate as `git switch`.

Here's a quick demo:

![Worktrunk Demo](https://cdn.jsdelivr.net/gh/max-sixty/worktrunk-assets@main/demos/wt-demo.gif)

> ## πŸ“š Full documentation at [worktrunk.dev]https://worktrunk.dev πŸ“š

<!-- ⚠️ AUTO-GENERATED from docs/content/why-worktrunk.md#context-git-worktrees..what-worktrunk-adds β€” edit source to update -->

## Context: git worktrees

AI agents like Claude and Codex can increasingly handle longer tasks without supervision, and it's very practical to run several in parallel. On a single file tree, they step on each other's uncommitted changes.

Git worktrees are a great primitive for this: multiple working directories sharing one `.git`.

But the UX is clunky: `git worktree add -b feature ../repo.feature`, then `cd ../repo.feature`, then `git worktree remove ../repo.feature`.

## What Worktrunk adds

Worktrunk makes worktrees easy to use β€” branch-based navigation, unified status, and workflow automation.

**Core commands:**

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

**Workflow automation:**

- **[Lifecycle hooks]https://worktrunk.dev/hook/** β€” run commands on create, pre-merge, post-merge
- **[LLM commit messages]https://worktrunk.dev/llm-commits/** β€” generate commit messages from diffs via [llm]https://llm.datasette.io/
- **[Merge workflow]https://worktrunk.dev/merge/** β€” squash, rebase, merge, clean up in one command
- ...and lots more.

<!-- END AUTO-GENERATED -->

## Core commands in practice

Create a worktree for a new task:

<!-- ⚠️ AUTO-GENERATED from tests/integration_tests/snapshots/integration__integration_tests__shell_wrapper__tests__readme_example_simple_switch.snap β€” edit source to update -->

```bash
$ wt switch --create fix-auth
βœ… Created new worktree for fix-auth from main at ../repo.fix-auth
```

<!-- END AUTO-GENERATED -->

Switch to an existing worktree:

<!-- ⚠️ AUTO-GENERATED from tests/integration_tests/snapshots/integration__integration_tests__shell_wrapper__tests__readme_example_switch_back.snap β€” edit source to update -->

```bash
$ wt switch feature-api
βœ… Switched to worktree for feature-api at ../repo.feature-api
```

<!-- END AUTO-GENERATED -->

See all worktrees at a glance:

<!-- ⚠️ AUTO-GENERATED from tests/snapshots/integration__integration_tests__list__readme_example_list.snap β€” edit source to update -->

```console
$ wt list
  Branch       Status         HEADΒ±    main↕  Path                Remoteβ‡…  Commit    Age   Message
@ feature-api  +   ↕⇑      +54   -5   ↑4  ↓1  ./repo.feature-api   ⇑3      28d38c20  30m   Add API tests
^ main             ^β‡…                         ./repo               ⇑1  ⇣1  2e6b7a8f  4d    Merge fix-auth:…
+ fix-auth         ↕|                 ↑2  ↓1  ./repo.fix-auth        |     1d697d5b  5h    Add secure token…

βšͺ Showing 3 worktrees, 1 with changes, 2 ahead
```

<!-- END AUTO-GENERATED -->

Clean up when done:

<!-- ⚠️ AUTO-GENERATED from tests/integration_tests/snapshots/integration__integration_tests__shell_wrapper__tests__readme_example_remove.snap β€” edit source to update -->

```bash
$ wt remove
πŸ”„ Removing feature-api worktree & branch in background (already in main)
```

<!-- END AUTO-GENERATED -->

<!-- ⚠️ AUTO-GENERATED from docs/content/why-worktrunk.md#install..further-reading β€” edit source to update -->

## Install

**Homebrew (macOS & Linux):**

```bash
$ brew install max-sixty/worktrunk/wt
$ wt config shell install  # allows commands to change directories
```

**Cargo:**

```bash
$ cargo install worktrunk
$ wt config shell install
```

## Next steps

- Learn the core commands: [wt switch]https://worktrunk.dev/switch/, [wt list]https://worktrunk.dev/list/, [wt merge]https://worktrunk.dev/merge/, [wt remove]https://worktrunk.dev/remove/
- Set up [project hooks]https://worktrunk.dev/hook/ for automated setup
- Explore [LLM commit messages]https://worktrunk.dev/llm-commits/, [fzf-like picker]https://worktrunk.dev/select/, [Claude Code integration]https://worktrunk.dev/claude-code/
- Run `wt --help` or `wt <command> --help` for quick CLI reference

## Further reading

- [Claude Code: Best practices for agentic coding]https://www.anthropic.com/engineering/claude-code-best-practices β€” Anthropic's official guide, including the worktree pattern
- [Shipping faster with Claude Code and Git Worktrees]https://incident.io/blog/shipping-faster-with-claude-code-and-git-worktrees β€” incident.io's workflow for parallel agents
- [Git worktree pattern discussion]https://github.com/anthropics/claude-code/issues/1052 β€” Community discussion in the Claude Code repo
- [git-worktree documentation]https://git-scm.com/docs/git-worktree β€” Official git reference

<!-- END AUTO-GENERATED -->

> ## πŸ“š Full documentation at [worktrunk.dev]https://worktrunk.dev πŸ“š