Parley is a terminal-first review tool for local Git diffs with structured, line-anchored discussion threads and optional AI-assisted replies/refactors.
It is designed for iterative review loops where code changes are generated or assisted by AI, but review state and thread resolution remain explicit and human-controlled.
Primary docs site: https://parley.cloudflavor.io
- Review threads are anchored to specific diff lines, not loose notes.
- Thread status is explicit:
open,pending,addressed. - Review state is explicit:
open,under_review,done. - TUI workflow is keyboard-first and optimized for rapid navigation.
- AI operations integrate into the same thread model instead of bypassing review state.
Parley separates:
- Diff source: what code you are reviewing (
working tree,--commit, or--base/--headrange) - Review session: local state under
.parley/(review name, threaded comments, status history)
- New comment ->
open - Reply by original thread author ->
open - Reply by different author (including AI in normal flows) ->
pending - Explicit resolution by original thread author ->
addressed
- Any
openthread -> review isopen - No
openthreads -> review isunder_review doneis explicit and guarded- Normal
donetransition is blocked while unresolved threads exist (openorpending)
Prerequisites:
- Rust toolchain
- Git repository as working directory
- Terminal with TUI support
Build locally:
cargo build --releaseRun from source:
cargo run -- tuiInstall the parley binary locally:
cargo install --path .Create and start a review session:
parley review create my-review
parley review start my-reviewOpen TUI on current working tree changes:
parley tui --review my-reviewDisable mouse capture for SSH/terminal compatibility:
parley tui --review my-review --no-mouseReview historical diffs:
parley tui --review my-review --commit HEAD~2
parley tui --review my-review --base main --head feature/my-branch
parley tui --review my-review --base v0.1.0
# everything after HEAD~2 (exclude that commit)
parley tui --review my-review --base HEAD~2 --head HEAD
# everything after and including HEAD~2
parley tui --review my-review --base HEAD~2^ --head HEADTop-level commands:
parley tuiparley review <subcommand>parley mcp
Common review subcommands:
create <name>start <name>listshow <name> [--json]set-state <name> <open|under_review|done>add-comment ...add-reply ...mark-addressed ...mark-open ...run-ai-session ...done <name>resolve <name>
Thread actions:
morc: create thread on selected liner: reply to selected threada: mark addressedo: mark openf: force-address selected threadN/P: next/previous thread
Review state actions:
s: setopenw: setunder_reviewd: setdone(guarded)Shift+D: force setdone
AI actions:
x: AI refactor selected threadX: AI reply selected threadA: AI refactor reviewK: cancel active AI run
Useful navigation:
h/l: previous/next filej/k: line up/down/query: searchR: refresh diff and review data?: in-app help
Providers:
codexclaudeopencode
Modes:
refactorreply
Eligibility summary:
- If review state is
done, AI session is skipped. refactortargetsopenthreads.replytargetsopenandpendingby default.- Explicit
comment_idscan override default reply-mode filtering behavior.
Run MCP server over stdio:
parley mcpParley exposes JSON-RPC MCP tooling for review automation, including:
list_reviewsget_reviewlist_open_commentsadd_replymark_comment_addressedmark_comment_openset_review_staterun_ai_session
Parley stores local review data under:
.parley/
By default, .parley/ is excluded from review diff file lists.
To include it again, set:
ignore_parley_dir = falsein:
.parley/config.toml
Main docs website:
Project docs in this repository:
Docs site source and deployment tooling:
Apache-2.0