Claude and I built an app
Announcing Roboterm. It’s a minmal terminal emulator that basically does what I want, and not much else. It supports tabs, and split panes.
There were a few motivators for me to write it, if you can call it that. The first was that I simply wanted to write a terminal emulator that I wanted to use. I’ve maintained Terminator for over 5 years now, and I like it and still use it, but it’s macos integration isn’t great and I have stopped using Linux on the desktop completely in favour of MacOS. Even though Terminator is still designed around systems administrators who log into dozens if not hundreds of servers a day, my workload doesn’t really fit that mold. I wanted something different.
I also wanted to see working examples of python gtk4 code on macos. The terrible macos integration on Terminator has always bothered me, and I couldn’t find any examples of python gtk code that ran well on a mac that I could follow. Also, I wanted to update Terminator to GTK4, so I wanted to have a good example of Python GTK4 code that worked seamlessly on a mac.
Lastly, I wanted to test out the abilities of AI. I have tried to have AI write this code for a few years now. Every 6 months or so, I would pick up whatever the best, latest AI coding tool and tried to code, basically, this. Up until last month, I gave up in frustration.
This was written using claude tui. Just telling claude what I wanted, and had it write most of the code. It was fairly slow going at first, until I figured out how to work with claude, and claude was able to build up a good CLAUDE.md. Now it’s fairly smooth to add new features.
This has been a real education in the ability of AI. In some ways, it is a much better coder than I am, it writes far more thorough tests, and documents it’s decisions in CLAUDE.md, leaving me with something that I can easily read and make sense of. The entirety of the python code is less than 2000 lines for a fairly capable terminal emulator.
It has also allowed me to produce decent code without getting into a “flow state”. I can sit in the evening and watch TV with my wife and direct claude at the same time. When you have a full-time job and a bunch of other hobbies and a family, this ability to multitask and still produce something worth using is nice.
Having said that, what I’m having it write is toy code. It’s handy, but it’s light-years away from the code that I deal with at work, where uptime is golden, and the stakes are much higher. At work I use AI mainly as a research assistant, and still write my code myself where I know exactly what the code is doing. I can’t imagine an AI that I would trust to write the code I need to write for work.
Anyway, if you want a simple, hackable terminal emulator where you can probably have claude add any feature you want, give it a try.