A pull request opens.
Sam pushes 49 changed files before coffee. Diffy sends the crew.
Add a question panel to the agent chat
feature/question-panel into main
+312−4849 files
Pixel is reviewing
A crew of review bots that lives on your own server. They read every pull request, catch the bugs, fix red CI and untangle merge conflicts. You still press merge.
Sam pushes 49 changed files before coffee. Diffy sends the crew.
Add a question panel to the agent chat
feature/question-panel into main
+312−4849 files
Pixel is reviewing
Diffy opens the whole repository, not just the diff. It follows every caller, definition and test before it says a word.
src/utils/agentQuestion.js
export function questionReply(answers) {
const lines = answers.map((answer) => {
const text = answerText(answer);
return `**${answer.question}** ${text}`;
});
return lines.join('\n\n');
}
Some are real. Some only look real. Sprig catches all of them first.
src/math.js
export function divide(a, b) { return a / b; const result = a / b; return parseAnswer(result);}
Before anything is posted, a second pass tries to prove it wrong. Only what survives reaches your pull request.
Possible null in parseAnswer()
The only caller checks it first, on line 41.
divide() accepts zero
A zero divisor returns Infinity instead of an error.
+ if (b === 0) throw new RangeError('Division by zero');
Commit suggestion
No command syntax to learn. Mention the bot the way you would mention a teammate.
Mango
On it. Reading the failing checks first.
Started: fixing the failing checks
The failing job, the failing step, the line that broke. Mango patches the cause, runs your tests in a sealed container, and only then pushes.
tests/test_live.py ....F
FAILED tests/test_live.py::test_cancel
E AssertionError: a cancelled turn saved its answer
##[error] Process completed with exit code 1.
a41c09e Stop a cancelled turn from saving its answer
Main moved on while you worked. Bea merges it in and keeps the intent of both sides, down to the last byte of your translation files.
src/locales/en.json
<<<<<<< feature/question-panel "ask": "Ask a question",======= "ask_title": "Your question",>>>>>>> mainBoth sides kept
Diffy never merges and never force-pushes. The last word is always a person's.
All checks have passed
1 finding fixed, 2 commits from the crew, 0 conflicts
Merge pull requestMergedEvery Diffy bot has a name, a body and one thing it wears. It carries the same face to every code host it posts on, and it shows what it is doing by how it moves.
Hi, I'm Nova.
Waiting for a mention
A laptop on the company VPN, a box under a desk, a cloud machine you already pay for. Your code goes to the model you choose, and nowhere else.
Your repositories
GitHub and Gitea, private ones too. Behind a VPN, Diffy polls instead of waiting for webhooks.
Your server
Your model
Ollama, vLLM, LM Studio, llama.cpp, OpenAI, Anthropic, OpenRouter, or any compatible endpoint.
$ docker compose up -d
Open http://localhost:8080 and make your first bot.
We are getting the code ready for other teams. Watch the repository to hear the day it opens.
Repository opens soon
sam
@mango the CI is failing again, can you sort it out?