2026-03-30: Improvements to the hosted Renovate bot

Over the course of the last weeks we refactored how the Renovate bot performs it’s actions on repositories.

Historically, the bot ran once per hour on all repos it has access to in sequential order. This caused the job to take around 35 minutes already for around 100 repos it had to process. The runtime includes both enabled dependency and repo caches.

Given that CodeFloe has it’s own k8s cluster since some time, we stumbled over https://github.com/mogenius/renovate-operator. This k8s operator allows to split the repo processing across individual jobs, which makes processing much more efficient.

On top, we contributed dedicated support for Forgejo to it. This includes native webhook processing, which gives the operator the ability to administrate and listen to webhook-based events in the repo. This enables users to make use of the checkboxes in the renovate dashboard and in open PRs by the bot.

So far, clicking these didn’t do anything as there was no action triggered. Now, when you check one of these, a webhook will be sent to the operator which will automatically schedule a targeted run for your run that will refresh the state!

Renovate doesn’t run in Crow CI anymore but within our k8s cluster. Fortunately, there’s the operator comes with an integrated dashboard so users can still inspect the details of their individual repo runs: https://renovate.codefloe.com.

An extended guide on how to use the operator can be found at Renovate | CodeFloe .

Looks nice, thanks! Just by chance, I saw that I had permission to trigger all runs, and wanted to let you know …

Edit: On top of that, it lists private repositories …

Thanks for the feedback!

Yes, that’s true and we were aware of that before that post. Both isn’t ideal but also nothing blocking in our view regarding the overall rollout. We didn’t want to point these shortcomings out explicitly while working on improvements/fixes on the side. Yet, now the pressure increased a bit :slight_smile:

The content of private repos still can’t be accessed and triggering runs for all repos would fill up the queue but not overload the cluster as the k8s-resource handling would queue it accordingly. As a quick fix, we already restricted the view to the scope of the overall user, i.e. right now a user only sees public repos and repos they have explicit access to.

We will address both points in the near future and also aim to contribute the fixes upstream.