This project is built while running dmux itself. The goal is a fast, repeatable loop for maintainers and contributors.
- Node.js 18+
pnpmtmux3.0+
- Install dependencies:
pnpm install- Start dmux in local dev mode:
pnpm devpnpm dev is the standard maintainer entrypoint for this repo. It bootstraps local dmux development requirements, compiles TypeScript, then launches dmux from dist/index.js with DMUX_DEV=true. Inside tmux it auto-promotes to a watch loop so TypeScript changes rebuild and restart automatically.
If reload behavior looks wrong, run:
pnpm run dev:doctorThis verifies watch mode, source path, control pane health, and local hooks/docs bootstrap state.
- Keep one long-lived maintainer worktree for running local dmux (
pnpm dev). - Create feature panes/worktrees from dmux (
n) for actual changes. - Iterate in feature worktree panes and merge from dmux (
m). - Close panes with "Just close pane" when done (
x) to keep worktrees available. - Reopen closed worktrees with
rwhen you need to resume work.
In DEV mode, source switching is toggled from the pane menu ([DEV] Use as Source) or hotkey (S):
- Select any worktree pane and run source toggle -> that worktree becomes active source.
- Toggle again on the already-active source pane -> source falls back to project root.
- If the active source worktree is closed/removed, dmux automatically falls back to project root.
- The active source pane is marked with
[source]in the pane list.
This keeps the dev session stable while still using pane-per-branch isolation.
pnpm dev runs dev:bootstrap first:
worktree_created: bootstraps dependencies in new worktreespre_merge: runstypecheckand tests before merge- hook docs generation: creates
src/utils/generated-agents-doc.ts
You can run bootstrap manually:
pnpm run dev:bootstrapUse pnpm run hooks:install-local -- --force to overwrite existing hook files.
- One pane/worktree per PR branch.
- Merge through dmux when possible (this dogfoods merge + cleanup paths).
- Ensure local checks pass:
pnpm run typecheck
pnpm run test- Open PR from the feature branch created for that pane.
pnpm run clean
pnpm run build
pnpm run typecheck
pnpm run test