plumb vs Critique
Both exist because an agent saying it is finished and the work being finished are different events. They disagree completely about who decides which one happened.
Critique asks a model. It uploads your diff and a reviewer model gives an opinion. plumb runs your repository’s own checks. It finds what your Makefile, your package scripts and your CI already declare, runs one, and reports what happened.
Everything below came from installing @critiquedotsh/cli 0.3.0 and running it. Where their marketing and their binary disagree, this page reports the binary.
Your machine
critique.sh servers
Never leaves the host
Diff uploaded, up to 2 MB
The commands your repo declares
A reviewer model — DeepSeek v4 Flash by default
No
Yes — device authorization
Yes
No
$96 / year — $48 for the first 100
$19 – $149 / month
What plumb does that Critique does not
Your code cannot leave the building. Critique uploads your diff. If that is prohibited where you work, the comparison ends there.
You want the same answer twice. plumb selects the same command every time and runs it. ⚠️ The outcome is whatever your test suite returns — if your tests are flaky, plumb faithfully reports flaky results. What is deterministic is the selection and the verdict logic, not your test suite.
You want it to admit ignorance. plumb has five verdicts and three are refusals: BLOCKED when a check could not run, INCONCLUSIVE when running it settled nothing, NOT-RUN when nothing was declared. A tool that answers pass or fail to all five situations is wrong in three of them.
The authority is yours. plumb never asserts a standard. It executes the one your repository already wrote down, and cites the file and line it came from.
Check it yourself
Do not take this page’s word for any of it. Both commands below have been run; neither needs a license.
Or watch it under tcpdump if you prefer. ⚠️ To be exact: plumb links no networking module, and the one path that can reach the network is plumb update, which you run. It shells out to the curl already on your machine. Turn the reminder off for good with plumb update --no-remind.
critique doctor reports its default reviewer: deepseek/deepseek-v4-flash-latest. That is not a criticism — it is how the product works, and it is why it can review a repository that declares nothing.
What plumb will not do
plumb has no opinion about readability or naming, and it will never invent a check nobody wrote. It runs what your repository declares — and when your repository declares nothing, it says so and stops rather than guessing. ⚠️ That refusal is the point: a tool that returns an answer in every situation is manufacturing one in some of them, and from the output you cannot tell which. Everything plumb reports, you can re-run yourself and get back the same thing.
Something wrong on this page? support@plumbing.sh. Corrections are welcome and get made — Critique 0.3.0 was current when this was written.
buy a seat — $48 / year →