A webhook is not a data source
Workbench brings GitLab changes into an open browser in under five seconds. The webhook accelerates the route, while truth stays in GitLab and the local projection stays disposable.
Posts tagged
Workbench brings GitLab changes into an open browser in under five seconds. The webhook accelerates the route, while truth stays in GitLab and the local projection stays disposable.
A slow or failed pipeline is only a symptom. Workbench connects wasted runner time, job trends, and pipeline waterfalls in one investigation – from the aggregate signal to the exact merge request attempt.
16,300 CI minutes in a single week, 18.9% complete waste, and 22 release attempts for a single app: Why releases were abused as test environments, how AI agents silently ignore uninitialised standards, and how a three-tiered filter solved the problem.
Every board eventually fails the same way – it remembers which column a card is in, and from then on that memory has to be maintained. Workbench never records it: columns are rules, evaluated on read.
We built a multi-tenant view across several GitLab instances without becoming a second source of truth. The design rule that made it work: the local database is disposable, and reconciliation – not webhooks – is what makes it correct.
A security review pointed out that our secrets manager trusted its own administrators. The fix was zero-knowledge end-to-end encryption – and the honest part of the design is the list of three places where the server still sees plaintext, and why we accepted each one.
Workbench could drop its database and rebuild it. This one polls Graylog and files GitLab issues – and a side effect has no upstream. Why dry-run became a database column, why the dashboard has no delete button, and why the safety guard sits at the HTTP boundary rather than in configuration.