Skip to main content

wtcode

Effortlessly launch your favorite code tool in a git worktree.

worktree code / what-the-code -- streamlines git worktree selection, creation, and launching tools like Claude Code, lazygit, your editor, or any command.

Install

Homebrew

brew install netj/tap/wtcode

PyPI (via uv)

uv tool install wtcode

Or try it without installing:

uvx wtcode

Note: uv tool install is recommended over uvx for regular use. uvx keeps a parent uv tool run process alive, which can interfere with tools like tmux that detect the working directory from the process tree.

From source

git clone https://github.com/netj/wtcode.git
ln -s "$PWD/wtcode/wtcode.sh" /usr/local/bin/wtcode

Usage

wtcode [BRANCH] [CMD [CMD-ARGS...]]
wtcode --exec CMD [CMD-ARGS...]
  • BRANCH -- Git branch or worktree name. If omitted and fzf is available, interactively select one. Surround with : to create a new branch (use :::name or name::: to avoid fzf matching the colons).
  • CMD -- Command to launch in the worktree. Defaults to $WTCODE_CMD, or the first available of: claude, aider, codex, $SHELL. When CMD resolves to plain claude (no extra args) in a worktree that already existed, wtcode launches claude /resume so it opens straight into your last session there. Press Esc in the picker to start a new session instead.
  • --exec -- Skip the branch argument; select interactively via fzf, then launch CMD.
  • --help / --version -- Show help or version info.

Examples

wtcode feature-x                  # launch default tool in feature-x worktree
wtcode feature-x lazygit          # launch lazygit
wtcode feature-x claude --resume  # launch claude with flags
wtcode --exec claude --resume     # select interactively, launch claude --resume
wtcode :new-feature               # create new branch and worktree
wtcode                            # interactive branch selection via fzf
WTCODE_CMD=cursor wtcode feature  # use cursor as default tool

Environment variables

Variable Description
WTCODE_CMD Default tool to launch (e.g., claude, lazygit, vim, cursor)
WTCODE_DEBUG Enable debug tracing when set to any value
GIT_WORKTREE_ROOT Override the directory where worktrees are created

How it works

  1. Select/specify a branch -- pass as argument or pick interactively with fzf
  2. Create or switch to the worktree -- worktrees are organized under $GIT_WORKTREE_ROOT (defaults to ../<repo>.worktrees/)
  3. Provision Claude Code, if that's what you're launching -- when the resolved tool is claude, the worktree is auto-trusted (skips the "do you trust this folder" dialog) and .claude/settings.json / .claude/settings.local.json are symlinked in from the main repo if not already present -- never for other tools, never clobbering a file that's already there
  4. Launch the tool -- runs the specified command (or smart default) inside the worktree

Dependencies

  • git -- required
  • fzf -- recommended, for interactive branch selection
  • jq -- optional, for Claude Code auto-trust setup (no dependency needed for the settings symlinking itself)

License

MIT

Metadata

Release files for wtcode 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wtcode 0.4.0
File Size Uploaded
wtcode-0.4.0.tar.gz 12.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wtcode 0.4.0
File Interpreter ABI Platform
wtcode-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 23.6 kB

Release files / wtcode-0.4.0.tar.gz

Download URL wtcode-0.4.0.tar.gz
Size 12.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c692c9825230abfe476646944864371ed58f40788e4070350189290ca30ac74c
BLAKE2b-256 checksum
How to use checksums
5b8b316ff5246955c4c960d69779f91530b3e53d4cbdd84dc4b054cc35452d80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / wtcode-0.4.0-py3-none-any.whl

Download URL wtcode-0.4.0-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
27434476748e3f09d3bf2b63cb2f1feef0d0c09b8c965e3e680b0bdacc2f85a4
BLAKE2b-256 checksum
How to use checksums
812d09cecafbecaeaa30e4ac2096cb7eb7205eb5f86cbd72185b92441aab45e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.5.0

2 release files

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page