← vigil: het hart van onze ontwikkeling
Onderhoud van een heel portfolio
Hier begon vigil: beveiligingslekken, PHP-, Symfony- en Node-versies waarvan de ondersteuning afloopt, en verouderde dependencies over alle projecten die we beheren. Het resultaat is één werklijst, geen stapel rapporten.
Hoe vigil daarnaast het geheugen en de poortwachter van de hele ontwikkeling is, leest u op de hoofdpagina over vigil.
Waarom het bestaat
Beveiligingslekken
Uit dezelfde bronnen als composer audit en npm audit, over de volledige boom: de meeste lekken zitten niet in wat u zelf vroeg, maar in wat daaronder meekwam. Eén regel per package, niet per CVE, met de versie waarin het opgelost is.
Einde ondersteuning
Voor PHP, Symfony en Node. Dit is de enige bevinding met een datum in plaats van een versienummer, en dus de enige die vanzelf dringender wordt: eerst "alleen nog beveiligingsfixes", dan "minder dan een half jaar", dan kritiek.
Nu bij te werken
De nieuwste versie past binnen de constraint die er al staat. Eén composer update verder, vandaag te doen.
Te plannen
Er is een nieuwe major die de constraint bewust buitensluit. Dat is een beslissing, geen taak. Families worden samengevouwen: dertig regels symfony/x 6.4 → 7.4 zijn één afweging.
Hoe een scan verloopt
-
Manifesten ophalen
composer.lock,package.jsonen de lockfiles, rechtstreeks via de API van GitLab. - Vergelijken Met Packagist en de npm-registry voor de nieuwste versies, met de advisory-databanken voor lekken, en met endoflife.date voor de runtimes.
- Bevindingen Gerangschikt naar wat ze van u vragen, niet naar hoe groot het versieverschil is.
- Werklijst Samen met uw eerdere besluiten: wat al uitgesteld of bewust aanvaard is, telt niet meer als openstaand werk.
Niets clonen, niets installeren
Dat is geen optimalisatie maar een grens. composer install en pnpm install voeren scripts van derden uit. Dat geregeld en zonder toezicht over tientallen repositories laten draaien is precies het supply-chain-scenario dat u wil vermijden.
De prijs is dat vigil versie-constraints benadert in plaats van ze op te lossen. Die benadering zit op één plek en is getest. Wat ze niet begrijpt, meldt ze als zodanig in plaats van het stil te laten passeren.
Wat er naar buiten gaat
Aan de registries vraagt vigil alleen naar pakketnamen: welke packages er bestaan en wat hun nieuwste versie is. Niet welk project ze gebruikt, en nooit code. De antwoorden worden enkele uren bewaard, zodat een scan van het hele portfolio niet honderden keren hetzelfde vraagt.
Een werklijst, geen rapport
Open
Werk dat op u wacht. Zolang u niets beslist, is het open.
Uitgesteld
"Ik weet het, maar niet deze maand." Komt vanzelf terug op de datum die u koos.
Bewust aanvaard
Bijvoorbeeld op een LTS blijven. Geldt voor één concreet verschil: verschijnt er een nieuwere major, dan hoort u het opnieuw.
Einde ondersteuning kan u niet aanvaarden, alleen uitstellen, en nooit tot voorbij de dag waarop de beveiligingsfixes stoppen. Die grens wordt afgedwongen, niet gehoopt.
Security in één oogopslag
Uit de scans
Lekken in de volledige dependency-boom en runtimes waarvan de ondersteuning afloopt, per project gegroepeerd. Elke regel zegt naar welke versie u moet, en in welk bestand dat staat.
Uit CI
vigil haalt de resultaten van die controles en van de poort zelf op bij GitLab, elk kwartier, alleen voor merge requests die bewogen. Faalt of waarschuwt er iets, dan staat de reden erbij, uit de log van de job, en komt het bovenaan het overzicht.
Het team aan het werk
Flows als run
Eén knop op een project: "Start flow". Bijwerken maakt het updateplan en start een pipeline, waarin een agent de dependencies bijwerkt op een eigen branch en de tests draait. Nakijken kijkt een branch na die al gebouwd is: de reviewers kijken, u beslist in vigil over de bevindingen, het team fixt wat u "nu" noemt, en een controle sluit af. Elke flow loopt als run, met een tijdlijn en een plafond op de kosten.
vigil publiceert, een mens merget
Wat de agent achterlaat, behandelt vigil als onbetrouwbare invoer: alleen manifesten en lockfiles, alleen bronnen van bekende hosts. Klopt dat, dan publiceert vigil de update als bot. Mergen doet een mens.
Opvolging
Daarna blijft vigil de merge request volgen: klaar om te mergen, een conflict, of de pipeline die nog loopt. Is ze gemerged, dan scant vigil het project opnieuw. Per run staan de duur en de kosten erbij, en als iets misliep het foutlog.
Het scherm Team
Per project het laatste reviewoordeel, de recente reviews en bevindingen, en de runs met hun kosten. Zo ziet u ook welke projecten nog nooit een review kregen.
In de editor
vigil is ook een MCP-server. Een agent in Claude Code vraagt vanuit de projectmap wat er híer te doen valt, welke opdracht er loopt, welke eerdere reviews er zijn, of laat het project opnieuw scannen, voor hij aan het werk gaat. In Wisp stelt u vigil in als MCP-server.
Naar Toolbox
De stand van het portfolio en van de runners staat als statuskaart in Toolbox, en de projecten die vigil volgt, gaan mee naar de ideeën-inbox. Zo deelt een idee zich in bij een project dat echt bestaat.
Machinerie
Runners
Elk kwartier kijkt vigil of de runners online zijn, en sinds wanneer er één wegviel. Een runner die stilvalt, staat bovenaan het overzicht en op de statuskaart.
Machines
Processor, geheugen, grafische kaart en schijven, met het verloop over een etmaal, de zwaarste processen en de lokale modellen die er draaien.
Geplande taken
Welke taken er op vaste tijden lopen, zoals het ochtendrapport en de controles van elk kwartier, en wanneer ze aan de beurt zijn.
Hoe het is opgebouwd
Het draait intern, met opzet
Wat vigil bijhoudt, is welke live sites op welke versies draaien, en dus welke bekend kwetsbaar zijn. Dat is geen configuratie maar een aanvalskaart van het hele portfolio. Daarom staat vigil niet op het internet maar op een eigen machine in ons privénetwerk, en ook daar is inloggen verplicht: netwerkbeveiliging is geen authenticatie. Om dezelfde reden tonen we hier de werking, en niet de details van onze opstelling.
Eén rapportlaag voor alles
Het dashboard, het ochtendrapport op werkdagen, de statuskaart in Toolbox en de MCP-server bouwen hun uitkomst met dezelfde code. Berekenden ze elk hun eigen cijfers, dan was de mail de eerste die u niet meer vertrouwt.
Een interface die meegaat
Blokken die zichzelf bijwerken, beslissen in een lade naast de lijst, filters die in de link blijven staan en een werkcontext die alle schermen op één project zet. Met dezelfde thema's als Wisp, licht en donker, en bruikbaar op een iPad.
Geheimen versleuteld, niet in een configbestand
Toegangstokens staan versleuteld in de database. API-tokens voor de editor en de agents worden alleen als hash bewaard: u ziet de waarde één keer, en kwijt is kwijt.
Klaar voor meer dan één organisatie
Elke rij hangt aan een organisatie en elke zoekopdracht vraagt er één, terwijl er vandaag precies één bestaat. Achteraf multi-tenancy inbouwen betekent elke query nalopen, en één vergeten filter is de ergste bug die dit soort software kent.
Tests waar het telt
De gevoelige logica is gedekt door tests: versies vergelijken, constraints lezen, de vervalregels van besluiten, en wanneer een review een inhoud nog dekt. Elke fout daarin schuift een bevinding naar de verkeerde lijst, of laat iets door dat dicht hoorde te blijven.