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.
  • --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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wtcode-0.3.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wtcode-0.3.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file wtcode-0.3.0.tar.gz.

File metadata

  • Download URL: wtcode-0.3.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","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}

File hashes

Hashes for wtcode-0.3.0.tar.gz
Algorithm Hash digest
SHA256 16437a3166784748f1864beb96a07e8406031dce55340fde3f9576db19439285
MD5 fe973c55001389b0b4e3456c10d7093c
BLAKE2b-256 a55d5201597d1c3229db809cd88cb3f1c30203eb31c97581a48abc587ee51787

See more details on using hashes here.

File details

Details for the file wtcode-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: wtcode-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","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}

File hashes

Hashes for wtcode-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 215de3ef31624a40b7801d0c0935bfe7d2efcd7f5638a0ce065edca2c53be349
MD5 b51e6da4e29ea028029dc43f3731e8a4
BLAKE2b-256 e155a3e14859e6d36c2cfda8b706325e3bcaf058f7dc3821ae57d7ecc5f302dc

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page