npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@aspireone/wt

v0.1.5

Published

Minimal git worktree launcher for parallel Codex workflows

Readme

wtc

A minimal Git worktree launcher for parallel agentic coding with Codex CLI.

Why

Codex CLI has no native worktree support. Running multiple agents in the same working directory causes file conflicts and makes it hard to parallelize independent tasks.

The solution is one Git worktree per task - each agent gets its own isolated directory and branch to work in, with no interference between sessions. wtc automates the boilerplate: create the branch, create the worktree, run repo-specific setup, and optionally launch Codex right away.

Usage

wtc feat/auth-refactor           # create worktree + run setup, print cd command
wtc fix/login-race --now         # same, then immediately launch codex
wtc feat/thing --base develop    # branch off develop instead of main
wtc feat/auth-refactor           # already exists? reattaches idempotently
wtc init                         # write .wt.config.toml into the current directory
wtc manage                       # interactive worktree browser / remover

Worktrees are placed under .trees/ in the repo root:

your-repo/
├── .trees/
│   ├── feat-auth-refactor/    ← isolated worktree, own branch
│   └── fix-login-race/
└── ...

Install

Requires Node 18+.

For local development from this repo:

pnpm install
pnpm link --global

To run the local checkout without linking it globally, use either:

pnpm wtc -- manage
node ./bin/wtc.js manage

That exposes the wtc binary globally from your checked-out repo. If you later publish this package, installation becomes the usual:

pnpm add -g @aspireone/wt

Keep .trees/ in your repo's .gitignore:

echo ".trees/" >> .gitignore

Config

wtc looks for config in two places, merged in this order (higher overrides lower):

| File | Scope | |---|---| | ~/.config/wt/config.toml | Global defaults for all repos | | .wt.config.toml (repo root) | Per-repo config, commit this |

CLI flags override both.

To bootstrap a repo-local config file in the current directory, run:

wtc init

This creates .wt.config.toml from the packaged example template and refuses to overwrite an existing file.

Example .wt.config.toml:

baseBranch   = "main"
worktreeRoot = ".trees"

setup = [
  "cp {root}/.env.example {target}/.env",
  "cd {target} && pnpm install",
]

Setup commands

Setup commands run once after the worktree is created. Three template variables are available:

| Variable | Value | |---|---| | {target} | Absolute path to the new worktree | | {root} | Absolute path to the repo root | | {branch} | The branch name (e.g. feat/auth-refactor) |

If no setup is configured, the CLI just creates the worktree and exits.

All config keys

| Key | Default | Description | |---|---|---| | baseBranch | "main" | Branch to fork from when creating a new branch | | worktreeRoot | ".trees" | Directory under repo root where worktrees are placed | | shell | system default | Shell used to run setup commands ("bash", "pwsh", etc.) | | setup | [] | Ordered list of shell commands to run after worktree creation |

Behavior

  • Branch exists? Reused as-is.
  • Worktree exists? Reattached, setup skipped.
  • Worktree registered but directory missing? Stale entry pruned, worktree recreated.
  • --now / -n? Launches codex inside the worktree after setup.
  • No --now? Prints the cd + codex command and exits.

Manage UI

Run wtc manage to open an interactive worktree list in the terminal.

  • / move the selection
  • d deletes the selected worktree after a y confirmation
  • D deletes the selected worktree and force-deletes its local branch after a y confirmation
  • r refreshes the list
  • q exits

The main checkout is shown in the list but cannot be removed from this screen.

Package Layout

bin/wtc.js     npm-exposed executable
src/cli.mjs    implementation
scripts/       release automation
package.json   npm package metadata

Release

Create a new patch release, tag it, and publish it:

pnpm run release

For a different bump level:

pnpm run release -- minor

The preflight check uses pnpm pack in a temporary directory, so it validates the tarball contents locally without failing just because that version already exists on npm or leaving a tarball in the repo.