Lumberjack
Git worktree manager for parallel coding agent development.
Install
uv tool install .
# or
uv pip install -e .
Quick Start
cd your-repo
lj init --defaults # create .lumberjack.toml
lj new auth-refactor # create worktree + branch
lj new --type fix # auto-named fix worktree
lj ls # list all worktrees
cd $(lj cd auth-refactor) # jump into worktree
lj rm auth-refactor # clean up
Commands
| Command | Description |
|---|---|
lj init |
Interactive setup, write .lumberjack.toml |
lj new [name] |
Create worktree (aliases: create) |
lj ls |
List worktrees (aliases: list). --json, --paths |
lj rm <name> |
Remove worktree (aliases: remove). --force, --keep-branch, --all |
lj cd <name> |
Print worktree path. --shell for subshell |
lj status |
Git status across all worktrees |
lj sync [name] |
Rebase/merge on base branch. --all, --merge |
lj agent [name] |
Launch coding agent in worktree. --new |
lj run-init [name] |
Re-run dependency install |
lj env sync [name] |
Re-copy .env files from main repo |
lj env ls |
List discovered .env files |
lj env diff [name] |
Show .env differences |
lj pr [name] |
Create PR via gh CLI. --draft |
lj clean |
Prune stale worktrees. --dry-run |
lj config show |
Print resolved config |
lj config set <k> <v> |
Set config value |
lj config edit |
Open config in $EDITOR |
lj shell-init |
Output shell integration script |
Config
.lumberjack.toml in repo root:
[lumberjack]
worktree_dir = ".lj"
branch_template = "{user}/{type}/{name}"
user = "nc9"
default_type = "feature"
base_branch = "main"
naming_scheme = "minerals" # minerals | cities | compound
default_agent = "claude" # claude | codex | opencode | aider
[lumberjack.init]
auto_init = true
# init_command = "bun run init"
# post_init = ["echo done"]
[lumberjack.env]
auto_copy = true
patterns = [".env", ".env.*", "!.env.example", "!.env.template"]
scan_depth = 3
[lumberjack.submodules]
auto_init = true
recursive = true
[lumberjack.agent]
auto_launch = false
inject_context = true
Shell Integration
# Add to .zshrc / .bashrc:
eval "$(lj shell-init)"
# Then use:
ljcd obsidian # cd into worktree
lj-prompt # worktree name for PS1
Development
uv sync
make test # pytest
make lint # ruff + basedpyright
make fmt # ruff format
make check # all of the above
Metadata
Release files for lumberjack-cli 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lumberjack_cli-0.1.0.tar.gz | 33.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lumberjack_cli-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.5 kB
Release files / lumberjack_cli-0.1.0.tar.gz
| Download URL | lumberjack_cli-0.1.0.tar.gz |
|---|---|
| Size | 33.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
24fc70abcc0cb47e16616f716dfed6bac339ec5f7798ea5baeac746043ee6ae3
|
|
BLAKE2b-256 checksum How to use checksums |
5d477139235ca4b8c2515414d95963a8512a09f824493250d8a2cc82d49900d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / lumberjack_cli-0.1.0-py3-none-any.whl
| Download URL | lumberjack_cli-0.1.0-py3-none-any.whl |
|---|---|
| Size | 23.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
248216285fbce19d63479bffe4d02589d99fb4653679f87c6f94e634bfdafdfc
|
|
BLAKE2b-256 checksum How to use checksums |
ab48dc134b0215a8e6e22482dd721a970332a810ada02d7980405d419dce8f77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|