A first attempt that only looked right
On October 2 a coding agent built a working Windows and Linux app with a native interface and CI on both platforms in one morning. It had its own data model and its own library on disk, so it couldn't open anything recorded on a Mac, and nothing would show when it drifted from how the Mac app behaves. That pull request was closed.
Specs before code
The second attempt spent its first hour on specs. Four agents read the Mac app's 150,000 lines of Swift without changing anything and wrote down the library format, the processing pipeline with every model prompt, every screen with its exact text, and the command-line tools and privacy rules. The core data types were written to match the Mac app's files, and every agent tested against a real library recorded by the Mac app. Six implementation agents then each took one part of the code.
How the work was checked
The port landed as one large pull request, so the checks mattered more than reading every line of the diff:
- CI runs the app on a virtual display on Linux and on Windows and takes a screenshot of every page.
- The live transcript is tested by playing a scripted conversation into virtual audio devices. That caught two bugs the unit tests had missed.
- Autocomplete is tested by typing into Notepad and checking that the suggestion appears after the cursor.
- End-to-end runs use the real models from an empty library: they download the models, process a short meeting, and ask a question about it.
- Meetings recorded on a Mac are played on Linux, with their timestamps required to line up exactly.
- Afterwards, the Mac and Windows/Linux apps were compared feature by feature, and the gaps were closed in five separate pull requests.
Read the full write-up
The full story, including the build machines, the rules for agents working side by side, and the decisions that were left to a person, is on Field Notes: Porting LokalBot to Linux and Windows with agents. The result is described in LokalBot is on Windows and Linux, in alpha.