Renovate has complex behavior and writes large debug logs. These logs hide the errors in dependency updates. Teams lose time with manual log analysis. Large logs also overwhelm text editors and AI agents. To solve this, I present the Renovate Log Parser CLI. It efficiently parses large Renovate JSONL logs. It automatically finds errors in CI, reduces token usage in coding agents, and enables humans with a beautiful and efficient web UI to manually inspect errors in Renovate logs.
Introduction and problem statement
Renovate (Bot) is an amazing tool that provides you with transparency of your outdated dependencies, which are a form of technical debt. I’ve blogged about Renovate several times and also presented various conference talks.
There is, however, inherent complexity in Renovate’s behavior and its configuration options. Setting Renovate up in your projects (a.k.a. “day 1 operations”) is relatively easy. But then, over time (“day 2 operations”), subtle problems can occur, and you don’t even realize them. For example, Renovate may stop creating PRs for certain reasons. When that happens, Renovate adds a small notice block to the Dependency dashboard GitHub issue. But teams that use Jira for issue tracking will miss this notice, as they don’t read GitHub issues.
I also observed that our developers often do not understand some of the actions of Renovate Bot. Renovate sometimes doesn’t execute expected actions – or it does something unwanted. Since our developers are not experts in Renovate, manual analysis is difficult for them because:
- The logs (emitted at debug level) are very verbose. Consequently, important information often occurs in debug-level lines, not warning- or error-level lines, and is thus often missed.
- Sometimes the logs are so large (when processing multiple repositories with many dependency updates) that the log viewer application (e.g., a text editor or web browser) is unable to process them. It simply crashes, or scrolling becomes laggy.
- When developers try to ask their AI (coding) agents to look for issues in a Renovate log, the agents too often miss information in large logs, or use way too many tokens for analysis.
Consequently, when developers fail to find a solution, they accept a suboptimal Renovate configuration and become frustrated with Renovate.
A need for a better Renovate log parser
I experienced many of these problems myself, especially points 2 and 3. I first researched existing log parsers but found barely anything useful (only small tools like renovate-pretty-log, which only solve the “manual log browsing” problem). This motivated me to create a new tool called renovate-log-parser to solve all of the above problems at once.
The requirements:
- The programming language (and libraries) must be known to LLMs like GPT-5.x or Claude Opus/Sonnet, because I would create the log parser with the help of a coding agent.
- There must be well-maintained libraries for building high-fidelity GUIs and for parsing CLI arguments.
- It must be easy to start/install, e.g., by downloading a single binary, or by using package managers like
uvxornpx. - Log search must be efficient at any scale – even if I feed it with a 20+ MB file
After some research, I settled on the following technological decisions:
- Create a Node.js CLI, which users can download and run with a simple command like
npx renovate-log-parser <command> - Implement the code with TypeScript and use well-known libraries, like yargs (to parse CLI arguments) or Nuxt / Nuxt UI / Vue.js (for the web UI)
- Parse the log into an SQLite database with select indices, because
SELECTing data (even at large scale) performs very well, and Node.js includes SQLite bindings by default (so no separate database engine is required)
From the above problems, it was evident that renovate-log-parser needs several commands:
- Command to start a temporary web server that hosts the web UI to manually inspect (and filter) logs
- A CLI parser to be used by coding agents, providing them with statistics about which line ranges in the log contain specific information, and also offering advanced filter capabilities (beyond what grep can do) to the agent. A corresponding SKILL.md teaches the coding agent how to use the respective
renovate-log-parsercommand. - A parser that detects a preconfigured set of (non-fatal) problems in a Renovate log and exits with code 1. Meant be used in self-hosted Renovate setups where you run Renovate in a cron job (e.g., a GitHub Actions workflow), where Renovate exits “successfully”, but its log still contains problems that the Renovate-operator-team wants to know about. I distilled that “preconfigured set of (non-fatal) problems” from over 4 years of operating Renovate at a larger scale.
Solution: Renovate Log Parser
The first production-grade version of renovate-log-parser is now ready to use.
You can see its web UI (for manual problem analysis) in action here:
To try it now, download an example log and open it in the web UI:
curl -sSLO https://raw.githubusercontent.com/MShekow/renovate-log-parser/main/src/core/__tests__/fixtures/various-issues.jsonl npx renovate-log-parser web various-issues.jsonl
renovate-log-parser offers the following commands:
detect-errorsscans the log for potential problems and warnings. If it finds a problem, it exits with an error and reports the cause. This solves hidden Renovate issues you would otherwise miss.analyzereports the log structure. A SKILL.md teaches coding agents to read relevant lines and diagnose Renovate problems with fewer tokens.webstarts a temporary local web server. The server parses logs of any length and provides an interface for analysis and filtering. This interface replaces manual “grep”-like analysis that can overwhelm a text editor.install-analyze-skillwrites a SKILL.md to your project or home directory. It can include instructions to get logs from self-hosted Renovate runs in GitHub Actions. Your agent then knows how to get and read a log.
The repository provides many more details about its usage.
In case you wonder how to obtain the Renovate (debug) logs (the JSONL-formatted logs):
- If you use Mend’s official hosted Renovate App, you can manually download a Renovate log from their platform.
- If you self-host Renovate, you will need to set the
LOG_FILEenvironment variable (see documentation).
Conclusion and Feedback
If you ran into similar problems with Renovate as I did, I hope you found this article/tool helpful. I’m looking for feedback on how to improve renovate-log-parser. Feel free to comment here or create a GitHub issue.