Termi is back!
This is the third iteration of what is probably my most popular project: a vintage “typewriter” (actually a paper terminal) that answers questions the user types.
Type a question, press return, wait 2-3 seconds, and the answer will print out.
But while the first two versions required an internet connection, because they retrieved answers from the Wolfram Alpha API, this new version works entirely offline. That’s because it runs a local LLM model entirely on an Arduino UNO Q (2GB model).
HardwareThe star of this project is, of course, the “typewriter” itself. That is a Texas Instruments Silent 700 (Model 745) made in the mid-‘70s.
The only other components are the Arduino UNO Q (2GB) and a MAX3232-based RS232-TTL transceiver. The latter is necessary because the terminal operates at a much higher voltage (-/+ 15V) than the Arduino can safely touch.
For the past versions of Termi, I was pretty careless in that regard and was lucky nothing was damaged. For Termi3, I wanted to do things the right way.
A custom PCB, that I milled on my Makera Z1, acts like a mini shield to connect the Arduino’s header pins to the RS232 transceiver and the cable.
If you’re curious about the details of communication, check out my write-up about Termi2.
The Local LLMI wanted Termi3 to work entirely offline, which means it needed an LLM capable of running on the locally on the Arduino UNO Q. That would be a challenge in any case, but was particularly difficult because mine is only the 2GB model.
The model I chose is Llama 3.2-1B, which is a general purpose 1.23 billion parameter model intended for low-power applications like this one.
Even with that, the response time could be pretty slow. So, a few tricks help it appear to have better performance. Prefix-caching for prompts and token limits help a lot. But the biggest factor is that it begins returning an answer before it has finished generating that answer.
The user types on the terminal and as they do, the Arduino UNO Q’s STM32 receives characters through the MAX3232 with bit-banging. As the characters come in, STM32 sends them over the Arduino Router Bridge to a Python script on the Linux side, which seems them to the Llama server. Once a return character comes through, the prompt gets submitted.
As the Llama models begins generating a response, it sends characters back to the terminal through that same chain (just in reverse). The terminal faithfully prints them.
The time between pressing the return key and a response starting to print is only 2-3 seconds. That is just barely fast enough to be usable. But just in case, the LED matrix built into the Arduino displays status icons, so users know it is thinking and that they should wait a moment.
After it finishes, it is ready for the process to start over again from the beginning.
The EnclosureI really wanted a nice enclosure for this one, so I put a lot of effort into it. I designed that in Autodesk Fusion, then fabricated each of the pieces.
The base of the enclosure is a solid piece of 6061, which I machined on my Bostomatic 312 CNC mill. That weighs about 3, 500 pounds and was made in the early ‘90s. But it has been retrofitted with a more modern controller and runs through Mach3.
After milling, I cut that off the aluminum block using a Ramco horizontal band saw. I milled the bottom side flat using my Gorton 9-J manual mill, then used the same mill to drill the mounting holes. I tapped those M3 by hand.
Glass bead blasting then gave that a beautiful finish.
---
The middle piece is just PETG 3D-printed on a Bambu Lab H2C. I turned on subtle fuzzy skin for the outer surface to give it some texture and reduce visible layer lines.
---
The top piece is a solid piece of clear acrylic, milled on the Makera Z1.
I then used an xTool O1 Omni UV printer to add the graphics to the top of the acrylic. I think that looks really nice and give the whole thing a polished appearance.
ReceptionYou may have seen Termi3 (in a more basic enclosure) at Open Sauce 2026. I was exhibiting there and it was a big hit—so much so that everything else on my table was mostly ignored.
People really liked it! I was surprised to see that young people (and especially teenage girls) seemed to be the most interested in Termi3. I think there is something about the experience being novel, vintage, and tactile, but still fun and accessible, that made it intriguing. Kind of like how digicams and MP3 players are popular again.
But it is important to note that Termi3 is kind of an idiot. Some of the time, its answers are reasonable and accurate. Other times, however, the answers range from baffling to hilarious.
That is probably the reason it is fun to keep interacting with: you want to see what silly answers it will come up with.








Comments