Filesystem
Configure pair to manage work items as Markdown files in your repository, no PM tool account (a code-host is still declared).
Why this tracker exists
Every other tool in the PM tools overview starts with an account. Sign up, create a workspace, provision an API key, wire an MCP server, and only then can pair file your first story. That is a reasonable price for a team. It is a poor one for a developer trying pair out on a Saturday, for anyone working offline, and for an air-gapped environment where "create an account" is not a step that exists.
The filesystem tracker removes the account. Your backlog is Markdown in your repository; an item's status is the directory it sits in, so a transition is a git mv and your board history is your commit history. Nothing to provision, nothing to reach over the network, and no second system that can disagree with your code about what shipped.
That choice has one consequence worth stating up front, because it decides how you configure the rest of your project: a directory of Markdown files hosts no pull requests. pair used to read a single pm-tool field for both backlog work and code work, which quietly assumed the tracker also owned your repository, true on GitHub, false here.
So a filesystem project is a two-tool project by construction: declare a code host alongside it (per ADR-018) and pair routes item state to the files and branch/PR/review work to that host.
Skip the declaration and pair stops with a setup pointer before its first PR operation, rather than routing a pull request at a folder.
Configuration
Add these lines to .pair/adoption/tech/way-of-working.md:
Item and state operations go to the files; branch, PR, review and merge operations go to the code host. ## Git Workflow is not optional here: a directory hosts no pull requests, so there is nothing for pair to fall back to when the field is absent.
Prerequisites
- A pair-enabled project (
pair-cli installcompleted) - No PM tool account, API key or MCP server: the backlog is files in your repo
- An account on the code host you declare above (GitHub by default), because that is where branches, PRs and review live: a self-hosted or on-prem git host is a valid
code-hosttoo: pair ships a KB implementation guide for GitHub and Azure DevOps only, so for anything else it warns once and proceeds best-effort through that host's own CLI/API, which is never a HALT by itself
This is the zero-PM-dependency option: every work item lives in your repository as version-controlled Markdown, and the only external account is the one your pull requests already needed. Ideal for solo developers, offline backlog work, or projects that don't need a separate PM tool.
Mapping Model
pair maps its work hierarchy to directories and files:
Directory Structure
How It Works
- Initiatives are Markdown files organized by year
- Epics and stories are Markdown files organized by status folder
- Tasks are checkbox items inside the story file, not separate files
- Status tracking is managed by moving files between status directories
- Everything is version-controlled: Git history shows exactly what changed and when
Status Transitions
| pair Action | Filesystem Effect |
|---|---|
| Start implementing a story | Move file to in-progress/ |
| Complete a task | Mark checkbox in story file |
| Create PR | File stays in in-progress/ |
| Merge PR | Move file to completed/ |
| All stories in epic done | Move epic file to completed/ |
The PR itself never lives here: a filesystem tracker hosts no repositories or pull requests, so declare a code host in way-of-working.md → ## Git Workflow. The rows above are the item-state effects of PR events that happen on that host.
Templates
Each work item type uses the standard pair templates:
| Template | Location |
|---|---|
| Initiative | .pair/knowledge/guidelines/collaboration/templates/initiative-template.md |
| Epic | .pair/knowledge/guidelines/collaboration/templates/epic-template.md |
| User Story | .pair/knowledge/guidelines/collaboration/templates/user-story-template.md |
First-Run Example
After configuring way-of-working.md, run a process skill:
Expected output:
pair creates Markdown files using the story template, places them in not-started/, and adds task checklists to each file.
Verifying the Setup
- Check that
.pair/adoption/product/backlog/directory structure exists - Verify story files appear in
03-user-stories/not-started/ - Each file should follow the user story template with filled-in sections
git statusshows the new files ready to commit
When to Upgrade
Consider switching to GitHub Projects or Linear when:
- Multiple team members need to see the board simultaneously
- You want automated status tracking without manual file moves
- You need reporting and velocity metrics
Switching is painless: update way-of-working.md and pair starts using the new tool. Your Knowledge Base and adoption files stay the same.
Related
- PM Tools overview: choosing the right tool
- GitHub Projects: GitHub-native option
- Linear: dedicated PM tool option