This tutorial gets Taskplane running in a project and verifies that /orch is available in your pi session.
- Node.js 22+
- pi
- Git
Taskplane can be installed globally (all projects) or project-local (current project only).
Use this if you want Taskplane commands available in every pi session.
pi install npm:taskplaneYou can also install the CLI directly with
npm install -g taskplane, but the recommended path ispi install npm:taskplanebecause it also registers the package for pi extension/skill auto-discovery.
Use this when you only want Taskplane in one repository.
cd my-project
pi install -l npm:taskplaneThis writes package config to .pi/settings.json in the project.
From the project root:
taskplane initIf taskplane is not on your PATH (common with project-local installs), run:
npx taskplane initOr:
.pi/npm/node_modules/.bin/taskplane inittaskplane init automatically detects your project layout:
| Layout | Mode | What happens |
|---|---|---|
| Single git repo (or monorepo) | Single-repo mode | Config scaffolded into .pi/ in the current directory |
| Directory with git repo subdirectories | Workspace mode | Config scaffolded into .taskplane/ inside a chosen config repo; pointer file created in workspace root |
| Git repo and git repo subdirectories | Ambiguous | Interactive prompt asks you to choose repo or workspace mode (defaults to repo with --preset) |
| No git repo found | Error | Init exits with a message asking you to run from a git repo |
In ambiguous cases, preset/dry-run/non-interactive modes default to single-repo mode without prompting.
For a single repo or monorepo:
taskplane init --preset fullThis scaffolds:
.pi/taskplane-config.json— project configuration (task runner + orchestrator settings).pi/taskplane.json— version tracker.pi/agents/task-worker.md,task-reviewer.md,task-merger.md,supervisor.md— agent promptstaskplane-tasks/CONTEXT.md— task area contexttaskplane-tasks/EXAMPLE-001-hello-world/{PROMPT.md,STATUS.md}— example taskstaskplane-tasks/EXAMPLE-002-parallel-smoke/{PROMPT.md,STATUS.md}— example tasks
If your project already has a task folder, point init at it:
taskplane init --preset full --tasks-root docs/task-managementWhen --tasks-root is provided, Taskplane skips sample task packets by default to avoid polluting an existing task area. Add --include-examples if you explicitly want them.
For multi-repo workspaces (e.g., a parent directory containing several independent git repos):
cd my-workspace # contains repo-a/, repo-b/, repo-c/ as git repos
taskplane initInit detects the subdirectory repos and prompts you to choose which one holds the shared Taskplane config. The selected repo gets a .taskplane/ directory with all config, and the workspace root gets a pointer file (.pi/taskplane-pointer.json) that tells Taskplane where to find it.
Files created in the config repo (e.g., repo-a):
repo-a/.taskplane/taskplane-config.jsonrepo-a/.taskplane/taskplane.jsonrepo-a/.taskplane/workspace.json— lists all discovered reposrepo-a/.taskplane/agents/task-worker.md,task-reviewer.md,task-merger.md,supervisor.mdrepo-a/taskplane-tasks/CONTEXT.md
Files created in the workspace root:
.pi/taskplane-pointer.json— points to the config repo
Important: After workspace init, merge the
.taskplane/directory in the config repo to its default branch before other team members runtaskplane init. Team members joining later will see the existing config and get Scenario D (pointer-only) instead of a full re-init.
If you run taskplane init in a workspace where .taskplane/ already exists in one of the subdirectory repos, Taskplane detects this and creates only the pointer file — no config prompts, no scaffolding. This is the intended flow for team members joining an already-initialized workspace.
All presets work in both repo and workspace modes:
| Preset | What it includes |
|---|---|
--preset full |
Full config + example tasks |
--preset minimal |
Full config, no example tasks |
During init, Taskplane automatically adds entries to .gitignore for runtime artifacts that should not be committed:
.pi/batch-state.json,.pi/batch-history.json— orchestrator state.pi/lane-state-*,.pi/merge-result-*,.pi/merge-request-*— lane/merge artifacts.pi/worker-conversation-*— worker conversation logs.pi/orch-logs/,.pi/orch-abort-signal— orchestrator logs/signals.pi/settings.json— machine-local pi settings.worktrees/— git worktree directories.pi/npm/— project-local npm packages
If any of these files are already tracked in git, init detects them and offers to untrack them with git rm --cached (interactive mode only).
In workspace mode, these entries are prefixed with .taskplane/ and added to the config repo's .gitignore.
Run:
taskplane doctorYou should see checks for:
- pi installed
- Node.js version
- git installed
- taskplane package installed
- required
.pi/files present - task area paths and CONTEXT files present
Start pi in the project:
piInside pi, run one of the following:
/orch-plan all # to see how the orchestrator will schedule task dependenies
/orch all # to run all open tasks that are in your defined task areas
/orch # to start an interactive session with the supervisor who simply ask you want you want to do next, with some suggestions
This confirms orchestrator commands are registered and shows a plan preview.
To review or customize your configuration interactively:
/taskplane-settings
Run these steps to verify everything works end-to-end:
- In terminal A, launch the dashboard:
taskplane dashboard- In terminal B (inside pi), run:
/orch-plan all
/orch all
/orch-status
With a fresh init, this should run both default example tasks and show live progress in the dashboard.
Expected artifacts:
hello-taskplane.mdhello-taskplane-2.mdtaskplane-tasks/EXAMPLE-001-hello-world/.DONEtaskplane-tasks/EXAMPLE-002-parallel-smoke/.DONE
taskplane uninstallPreview first:
taskplane uninstall --dry-runtaskplane uninstall --packageYou can force package scope when needed:
- local install:
taskplane uninstall --package --local - global install:
taskplane uninstall --package --global
If you only want package removal, use:
taskplane uninstall --package-onlyUse npx taskplane <command> or .pi/npm/node_modules/.bin/taskplane <command>.
Run taskplane init from the project root to scaffold the required .pi/taskplane-config.json and other config files.
Continue to: Run Your First Orchestration