Forgejo Overview
Since I started using blipblip, my agent, to do tasks inside my Forgejo instance, I ran into a problem.
The issues live across several repos, each one moving through a label workflow (status/research, then status/doing, then status/review, then closed) and the Forgejo UI does not give you any way to see all of that from a bird's eye perspective. If I wanted to know what was in flight I had to go repo by repo, and if I wanted to read a thread I had to navigate into it.
What already existed
- Forgejo's native Projects boards. Their columns are manual board columns, not labels, so moving a card does not change anything about the issue, and closing an issue does not move the card. The board and the reality drift apart.
- The kanban tools: Vikunja, Planka, Wekan, Focalboard. None of them sync two ways with Forgejo, so they copy the issues into a second store, and now you have two truths.
So I made my own.

One page
The repos are the rows, my status labels are the columns. There is no database, Forgejo stays the only source of truth, and the board writes almost nothing back.
It cannot change the status of an issue. That happens in Forgejo, and I preferred it over a nice drag and drop that silently disagrees with the labels. The untriaged issues are not hidden either, they get their own strip on top of each project with one-click chips, so triaging is one click and not a trip into the repo. And if Forgejo becomes unreachable, the last good board stays on the screen with a staleness banner instead of blanking out.
Design matters to me, so even if this is an internal tool that only I use, I did not want it to look like an internal tool that only I use. I designed it as a standalone HTML file before building the real thing. This is the change I mentioned in LLM Party, I do not prototype these things in Figma anymore, I iterate directly in code. There are three themes, and the vivid one gives each status column its own tinted lane, so you can tell where a card lives from its colour.
Then it kept growing
- Comments, so I can read and answer a thread without leaving the board.
- Merging PRs, and seeing the source code of a PR in a diff overlay.
- Status markers, a pill that lights up when blipblip is working on an issue, a marker when it stalled with an error, and a badge counting the open PRs it has left me to review.
At this point it has almost replaced the main Forgejo UI for me. I still go there for corner cases, but most of my interactions with blipblip happen here now. It runs as a single Go binary on the same machine as Forgejo and I reach it over Tailscale, so it works the same from my phone as from my laptop. That is what makes the workflow I described in Forgejo with agents work from anywhere.
Routines
The last thing I added is routines. The idea is to give blipblip standing orders per repository, written in plain language, like upgrade the dependencies, suggest improvements, refactor the long files, and let it work out for itself when to run them and what they mean. Whatever it does comes back as normal issues and pull requests, which the board already knows how to show.
It is a new feature and it is not well tested yet, so for now this is more an idea than a result. But I like where it points. As the models get better, the projects could keep improving over time on their own.
The code is not public, but I'm happy to share it if somebody is interested.