jjj: Distributed Project Management for Jujutsu
jjj is a distributed project management and code review system built for Jujutsu (jj). It implements Popperian epistemology — Problems, Solutions, Critiques — as a workflow that lives entirely in your repository.
No server. No database. No browser. Sync via standard jj git push/pull.
Documentation → jjj.recursivewhy.com

Why Jujutsu?
Previous attempts at distributed review (like git-appraise) suffered a fatal flaw: the fragility of the commit hash. In Git, rebasing changes every commit hash, orphaning any attached metadata.
Jujutsu solves this. Its Change IDs persist across rebases, squashes, and history rewrites. jjj anchors metadata to change identity, not its momentary snapshot.
Core Model
jjj organizes work around Karl Popper's theory of knowledge growth: bold conjectures subjected to rigorous criticism.
- Problems — Things that need solving. Can form hierarchies via parent/child relationships.
- Solutions — Conjectures to solve problems. Linked to jj Change IDs.
- Critiques — Error elimination. Block solution approval until addressed.
- Milestones — Time-based goals grouping problems.
Quick Start
# Initialize jjj in your repository
# Define a problem
# Propose a solution (references problem by title)
# Attach your current jj change to the solution
# Add a critique during review
# Address the critique after fixing
# Submit for review, then approve when critiques are resolved
Interactive TUI
Launch jjj ui for a full terminal interface with project tree, detail pane, and keyboard-driven actions.

Commands
Workflow
Problems
Solutions
Critiques
Milestones
Architecture
Shadow Graph
All metadata lives in an orphaned jjj bookmark, separate from your project history:
config.toml
problems/
01957d3e-a8b2-7def-8c3a-9f4e5d6c7b8a.md
solutions/
01958a1b-c3d4-7e5f-9a0b-1c2d3e4f5a6b.md
critiques/
01959b2c-d4e5-7f6a-0b1c-2d3e4f5a6b7c.md
milestones/
01960c3d-e5f6-7a0b-1c2d-3e4f5a6b7c8d.md
events.jsonl
This means:
- Metadata never pollutes project history
- No merge conflicts between code and metadata
- Can be synced independently
Syncing with Team
# Push your changes and metadata
# Or manually:
# Fetch updates
# One-time setup: track remote metadata
Installation
# Build from source
# Install
# Generate shell completions
VS Code Extension
A VS Code extension provides sidebar views for Next Actions and Project Tree:
AI Agent Integration
jjj ships a skill file that teaches Claude Code, Gemini CLI, or any AI coding assistant to use jjj commands natively.
# Claude Code
&& \
# Gemini CLI
&& \
Once installed, invoke with /jjj or let the agent detect it automatically. See the AI Agents guide for details.
Documentation
Full documentation available at jjj.recursivewhy.com, or serve locally:
Note for Previous jjj Crate Users
This crate previously hosted a modal interface for Jujutsu by @icorbrey. That project has been renamed and is now available as megamerge.
License
Apache-2.0