> Bron: https://neuralex.nl/showcase/reviewpilot
> ReviewPilot verifieert elke GitHub-PR, routeert de diff naar het goedkoopste passende model en plaatst één onderbouwde review terug. De techniek, de sandbox-uitdaging die werd opgelost, en het bewijs op een echte pull request.

Showcase · ReviewPilot

# Een codereview op elke pull request.

Installeer de GitHub-App en elke PR krijgt binnen minuten een concrete, vriendelijke review: wat de PR doet, wat er écht stuk is, wat je zou overwegen. Geen ruis, geen lofprietpraat. De grootste horde was niet de AI — het was n8n zelf: de secrets die deze keten nodig heeft, kon een Code node domweg niet bereiken. Deze pagina laat zien hoe dat werd opgelost, en bewijst het met een echte pull request.

[Bekijk het live product](https://review.neuralex.nl) [Lees de uitdaging](#uitdaging)

2/2

bugs gevonden in de eerste live test-PR

100%

end-to-end getest tegen de échte GitHub API

3

verborgen bugs blootgelegd tijdens dat echte testen

2

modellen, automatisch gekozen op diffgrootte

De uitdaging

## Het probleem zat niet in de AI — het zat in de sandbox

ReviewPilot moet een GitHub-webhook verifiëren en een App-JWT ondertekenen — allebei met een geheim dat nergens in platte tekst mag staan. n8n’s Code nodes draaien echter in een externe sandbox die process (en dus elke omgevingsvariabele) principieel niet doorlaat. Twee wegen liepen dood voordat de derde werkte.

### Het probleem

1.  “process is not defined” — Code nodes draaien in n8n’s externe Task Runner-sandbox, met een harde whitelist die nooit iets van process bevat
2.  Bevestigd door de n8n-broncode zelf te lezen (js-task-runner.js, task-runner-process-js.js) — niet door op documentatie te vertrouwen
3.  Optie 1: secrets als losse env-vars aan het proces meegeven — werkt, maar ligt open voor elke Code node die ooit misbruikt wordt
4.  Optie 2: n8n-credentials aan een Code node hangen — technisch onmogelijk, Code nodes kunnen de credential-vault niet bereiken
5.  Twee doodlopende wegen, geen van beide veilig genoeg voor een GitHub-App-secret

### De oplossing

1.  De twee Code nodes die crypto deden vervangen door native nodes: een Crypto-node voor de HMAC, een JWT-node voor de App-ondertekening
2.  Native nodes draaien in het hoofdproces en lezen rechtstreeks uit n8n’s versleutelde credential-vault — buiten de sandbox om, geen env-vars nodig
3.  Onderweg nog drie verborgen bugs blootgelegd door écht te testen: HMAC over de verkeerde bytes, een HTTP-node die stilletjes een lege body verstuurde, en velden die verloren gingen tussen HTTP-nodes
4.  Elke fix geverifieerd tegen de échte GitHub API — niet gemocked
5.  Resultaat: geen secrets in code, geen sandbox-gok, en elke stap bewezen op een echte pull request

Architectuur

## Wat het nu kan: van webhook tot review, met een vangrail vooraan

GitHub tikt aan, een native Crypto-node verifieert eerst de handtekening en pas dan gebeurt er iets — buiten n8n’s Code-sandbox om, want daar kan geen enkel geheim veilig wonen. De diff bepaalt welk model het werk doet; het antwoord komt als één comment terug. Onderin loopt dezelfde correlatie-draad als door de rest van het lab: elke review is een kostenregel.

Hoe het werkt

## Zeven stappen, één comment

### Van PR tot review

1.  GitHub stuurt een webhook zodra een pull request opent of bijwerkt — de ruwe bytes gaan mee, niet alleen de JSON
2.  Een native Crypto-node herberekent de HMAC-SHA256 over die ruwe bytes en vergelijkt met de handtekening — geen geldig secret, geen review; het secret zelf leeft alleen in n8n’s versleutelde credential-vault
3.  Publieke repo → gratis tier; privérepo → klantcheck
4.  Een native JWT-node ondertekent een GitHub App-JWT met de app-sleutel uit de vault; die wisselt in voor een installatie-token dat read-only de diff ophaalt
5.  Diffgrootte bepaalt het model: klein → DeepSeek V4 Flash, groot → DeepSeek V4 Pro
6.  De review komt terug als één nette PR-comment, met bronverwijzing naar bestand en regel
7.  Elke call krijgt een correlatie-id, zodat AgentLedger de kosten per review vastlegt

Bewijs, geen demo

## Een echte review, op een echte pull request

Geen synthetische demo. Op een verse, publieke test-repo (Xreative/reviewpilot-test) ging een echte PR open met twee met opzet ingebouwde bugs. ReviewPilot ving het echte, door GitHub ondertekende webhook-event op, verifieerde het, koos een model en plaatste deze reactie — als de echte GitHub-App-bot, geverifieerd via GitHub’s eigen API (performed\_via\_github\_app.id komt overeen met App-ID 4409542).

ReviewPilot · PR #1 — Add app.py · echte reactie, live gegenereerd

**Samenvatting.** Het toegevoegde bestand bevat een hardgecodeerde API-sleutel en een deling die gegarandeerd crasht op het aanroeppad.

**Kritiek.**

-   Hardgecodeerde API-sleutel — hoort uit een omgevingsvariabele te komen
-   divide(10, 0) — veroorzaakt een ZeroDivisionError

**Aanbevolen.** Ongebruikte import verwijderen, de sleutel niet naar stdout printen, typehints en een deling-door-nul-check toevoegen.

Zo samengevat — de originele, letterlijke reactie staat op GitHub. — 🧾 review.neuralex.nl

[Bekijk de originele comment op GitHub ↗](https://github.com/Xreative/reviewpilot-test/pull/1#issuecomment-5266492114)

Waarom developers het waarderen

## Geen zoveelste bot

### Direct na het openen

Feedback binnen enkele minuten na een PR — geen wachtrij, geen handwerk.

### Slimme routing

Kleine diffs naar een snel, goedkoop model; grote diffs naar een sterker model. Altijd de goedkoopste die past.

### Privacy eerst

Geen dataretentie, geen training op jouw code. De review is vluchtig: gebruikt en weg.

### Bewezen op echte bugs

Niet in theorie: de eerste live test ving een hardgecodeerde secret én een deling-door-nul, direct raak in de eerste PR.

### Kosten transparant

Elke review krijgt een eigen correlatie-id voor de kostenregistratie via AgentLedger — geen black box.

### Geen vendor lock-in

Draait op een eigen model-router. Geen afhankelijkheid van één Amerikaanse API.

### Waar het nu staat

ReviewPilot draait niet meer alleen in dogfood: de hele keten is 100% getest tegen de échte GitHub API — een echte installatie, een echte pull request, een echte reactie van de bot, geverifieerd via GitHub’s eigen API. Wat nog open staat: de Sentinel-logkoppeling geeft momenteel een 404 op de audit-events — niet blokkerend voor de review zelf, maar de kostenregistratie in AgentLedger draait daardoor nog niet volledig automatisch. Dat staat als eerstvolgende op de lijst, net als bij [AgentLedger](/showcase/agentledger/).

Gebouwd met GitHub Appn8n (native nodes)HMAC-SHA256Bifrost model-routerDeepSeek V4Credential-vaultAgentLedger

Verifieerbaar, niet beweerd

## De hele keten staat open op GitHub

Geen screenshot, geen bewerkte demo — de echte reactie van de echte GitHub-App-bot, op een publieke pull request die iedereen kan naspeuren.

[Bekijk het bewijs op GitHub](https://github.com/Xreative/reviewpilot-test/pull/1#issuecomment-5266492114)

Testrepo: [github.com/Xreative/reviewpilot-test](https://github.com/Xreative/reviewpilot-test)

---
Volledige (opgemaakte) versie: https://neuralex.nl/showcase/reviewpilot
