Review tool for plans and code diffs
Project description
redliner
A local review tool for AI agent work. Comment on plans and code diffs line-by-line, resolve feedback, and approve changes through a web UI or CLI.
The idea: an agent writes code, you redline it. Comments are stored as JSON files that the agent can read and act on.
Install
uv tool install redliner
Plan review
Review a plan file with inline comments:
redliner open plan.md # web UI in your browser
redliner show plan.md # print with line numbers and comments
redliner comment plan.md 10 "This needs more detail"
redliner list plan.md # list all comments
redliner resolve plan.md 1 # resolve comment #1
redliner approve plan.md # approve (fails if unresolved comments)
Diff review
Review working tree changes side by side:
redliner diff # opens all changes in web UI
redliner diff --path src/foo.py # single file
redliner diff --no-open # just print status as JSON
The diff view shows old and new versions in collapsible columns. Click any line to leave a comment.
How comments are stored
Comments are stored under $XDG_DATA_HOME/redliner/reviews/ (defaults to ~/.local/share/redliner/reviews/). Each review session (a plan file, or a diff over a repo) gets its own directory with comments.jsonl and meta.json.
comments.jsonl has one comment per line, each self-describing with the full file path:
{"id": 1, "file": "/abs/path/plan.md", "line": 42, "text": "Handle the None case", "status": "pending", "created": "..."}
meta.json tracks per-file review status:
{"files": {"/abs/path/plan.md": {"status": "approved", "approved_at": "..."}}}
The storage path is shown in the web UI header with a one-click copy button. From the CLI, redliner status <file> prints it as "storage". Agents can read comments.jsonl directly.
Agent workflow
- Agent writes code or a plan
- You run
redliner difforredliner open plan.md - You leave comments on specific lines
- Agent reads the review JSON files and addresses feedback
- You review again until satisfied, then approve
Requirements
Python 3.12+. No external dependencies.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file redliner-0.5.0.tar.gz.
File metadata
- Download URL: redliner-0.5.0.tar.gz
- Upload date:
- Size: 47.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a083f71e3bf3f18e31e411253f8a8bdc3ec21e36a6014fa5f440088e1f7eebd
|
|
| MD5 |
17804e5c33f43a57e0cf73456b3fa4aa
|
|
| BLAKE2b-256 |
7838c929ea0a1e804171cb92fd6d58f1152ac42556e0ecc01fdb99411bd45823
|
Provenance
The following attestation bundles were made for redliner-0.5.0.tar.gz:
Publisher:
publish.yaml on PFigs/redliner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
redliner-0.5.0.tar.gz -
Subject digest:
7a083f71e3bf3f18e31e411253f8a8bdc3ec21e36a6014fa5f440088e1f7eebd - Sigstore transparency entry: 1399401484
- Sigstore integration time:
-
Permalink:
PFigs/redliner@8d687840b43bd956e71f76c63d61fbfd9d0b372f -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/PFigs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@8d687840b43bd956e71f76c63d61fbfd9d0b372f -
Trigger Event:
release
-
Statement type:
File details
Details for the file redliner-0.5.0-py3-none-any.whl.
File metadata
- Download URL: redliner-0.5.0-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac97b212757bf2a962aee6e15fe64a258ae9299900984f8834f1c82995096121
|
|
| MD5 |
73fa19adb31215cc3ea121d64f8a3ac1
|
|
| BLAKE2b-256 |
44fd9ebbd42266e9bba885d298bb9e0ce87e038617df93f6602bc79e4b343867
|
Provenance
The following attestation bundles were made for redliner-0.5.0-py3-none-any.whl:
Publisher:
publish.yaml on PFigs/redliner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
redliner-0.5.0-py3-none-any.whl -
Subject digest:
ac97b212757bf2a962aee6e15fe64a258ae9299900984f8834f1c82995096121 - Sigstore transparency entry: 1399401493
- Sigstore integration time:
-
Permalink:
PFigs/redliner@8d687840b43bd956e71f76c63d61fbfd9d0b372f -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/PFigs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@8d687840b43bd956e71f76c63d61fbfd9d0b372f -
Trigger Event:
release
-
Statement type: