What it is
A gh-style client for OneDev, the git host I run at home. Pull requests, builds, issues, projects, secrets. One Go binary, about 17,000 lines across 104 files, built between 28 August and 16 September 2026.
Its design rule is in the readme and it is the only one that matters: every command either does the thing, or tells you exactly what to do next.
Why I built it
Because no client existed. I had moved my own work onto OneDev and then found that everything I do from a terminal with GitHub, I could only do through a browser. That is fine for a human once a day and impossible for an agent, which is the actual reason it became urgent. An agent that can only open a web page cannot open a pull request.
The problem
The REST API is not documented in any way you could build against. So the work started as reverse engineering: call an endpoint, record what came back, work out what it meant, and write it down with the date and the exact curl that proved it. There are five of those findings files in the repository and they are the part I would keep if I had to throw the rest away.
The second problem was building it quickly without it turning to mush. I ran several agent workers in parallel, which only works if they cannot tread on each other, so the interface was frozen first and a file-ownership table assigned every file to exactly one worker. The contract came before the code, and the code was allowed to be written in any order after that.
What I learnt
Writing down what the API actually did, with the evidence, was worth more than the client. An undocumented API teaches you the same lesson repeatedly if you do not keep notes, and I have watched myself relearn things before.
Parallel workers need boundaries more than they need coordination. Every time I have tried to make agents negotiate at runtime it has gone badly. Deciding who owns which file in advance, and refusing to move the interface while they work, is duller and it holds.
What’s next
It is finished in the sense that I use it every day and it does not annoy me. The survey that produced these build log entries was run with it.