> ## Content Index
> Fetch the complete content index at: https://christophermoravec.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Episode 85 - I have a Robot Cat (Kind Of)
- URL: https://christophermoravec.com/episode-85-i-have-a-robot-cat-kind-of/
- Published: 2026-10-02T22:05:50.000Z
- Updated: 2026-10-02T22:05:50.000Z
- Description: Jaws designed a desk robot, I printed it and hot-glued it together, and it immediately drove off the table. Jaws fixed it in about 20 minutes, and then drove it.
- Author: Christopher Moravec
- Tags: Almost Entirely Human

# Prologue

Last week, in "[Are We Cooked](https://christophermoravec.com/episode-84-are-we-cooked/)," one of my main pieces of evidence was a small robot that can drive around my desk, fully designed by an AI. I had a lot of fun with this project, so this week I wanted to explain how it works, and why I think I’m safe in the robot apocalypse because of my skill with a hot glue gun.

**TL;DR: Jaws designed a desk robot, I printed it and hot-glued it together, and it immediately drove off the table. Jaws fixed it in about 20 minutes, and then drove it.**

# Deskbotologue

DeskBot is a small robot that lives on my desk. The face is modeled after the robot keychain Jaws and I made a while back, based on the robot head emoji 🤖. DeskBot is 100% designed by Jaws. That isn’t to say I didn’t give feedback; I did. But I did not open a CAD program! Mostly, I followed instructions, measured things, tested things, printed things, and used copious amounts of hot glue to fix parts that didn’t fit well. You can get a lot done with hot glue.

![A 3D-printed robot head sitting on a wooden desk, with a boxy gray body, two bright blue oval eyes with white highlights, a rectangular slot for a mouth revealing internal electronics, and a rounded antenna on top — this is DeskBot, the AI-designed desk robot described in the article.](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/10/data-src-image-77d8f6e0-18b8-443c-afe4-1379f04c6828.png)

The robot overlords will be cute.

Here's what's inside:

1. **An** [**Adafruit Metro ESP32-S3**](https://www.adafruit.com/product/5500?ref=christophermoravec.com)**.** I chose this because I had one lying around, but it also has a lot going for it: lots of pins, WiFi, and battery charging.
2. **Two tiny** [**N20 gear motors with encoders**](https://www.adafruit.com/product/4639?ref=christophermoravec.com)**.** These are pretty high-torque motors for their size and have built-in encoders. The encoders let the firmware know exactly how many rotations it has done, so DeskBot can measure distance traveled.
3. **A** [**motor driver board**](https://www.adafruit.com/product/2448?ref=christophermoravec.com)**.** Much to my disappointment, microcontrollers cannot drive motors themselves; they need an extra chip! This helps keep the “magic smoke” in (electronics run on magic smoke, and once it gets out, they stop working).
4. **Four** [**cliff sensors**](https://www.amazon.com/HiLetgo-TCRT5000-Intelligent-Infrared-Tracking/dp/B082WZZJ58/ref=sr%5F1%5F11?dib=eyJ2IjoiMSJ9.WcjvcWOnx8dbEKc1Fhxchc8-N2aBV19pqpI1T0nN4%5FtNLQryDh5ugFk22N3AFreOSZE2YHDFlFH9J5zL7UVmFwkdgTe9FSaWaxSfZYUnTPi6suMsk-tIj9FGlgj4YtrZ75gvlWlqUklyuKZArJyBBYfqESMNX1vxDYJwxmbneqYDglsiqg9Qr7DYhXitGIh9Cvdmy%5FC0kZPKLaR7sDEhmJaDBG-9vYPDvHQI9H%5FtvZU.XzlKEbmFzbBuPoj48ABoEAI0%5FONoa7mV0oUMzharo3Q&dib%5Ftag=se&keywords=TCRT5000+IR+sensor+module&qid=1790977794&sr=8-11&ref=christophermoravec.com) **on the bottom.** One is at each corner so it can stop itself when it detects the edge of the desk. Since it is a Desk(ro)Bot, I wanted it to safely drive around without clattering onto the floor and falling to pieces. These small infrared sensors detect when something is near, or detect that it has gone away, like when DeskBot peeks over the edge of the desk—the desk has gone away!
5. **Tiny printed wheels with rubber** [**O-rings**](https://www.amazon.com/uxcell-Rubber-Rings-Gaskets-Washers/dp/B01DO2L6A8/ref=sr%5F1%5F2?dib=eyJ2IjoiMSJ9.zSaSJh59R4Ujhj6HzvqYQJ0szZzhkyVgKeNSs%5FhyZbRobHPqHFK-qYmDQ4MewcmO7Dyb%5FrMQsKbXNTHBEdK9uNPoLP6BSYdalj0-dGormJjjNQR5ofNkIDwsEx1Oj43Fx-qrG-6lWtSnd678PTxNPyC2Q4pgOD46qI7YejuiY4LtA8MOrt-dcElNU5tKuPpZgSfCF2VpIBjnaUWTKme1S09DLijCy-pA7VoBv2lpt-Y.CuPu65I-z6hvCl1goPMH2Sb1yQI9k7MNN0hRtVLx2Tw&dib%5Ftag=se&keywords=39mm+x+33mm+x+3mm+nitrile+o-ring&qid=1790977827&sr=8-2&ref=christophermoravec.com) **for tires.** The rubber O-rings were more important than I thought they would be; the extra grip makes a big difference! There is also a slippery furniture pad on the front so it can slide.
6. **A** [**2500 mAh lithium battery**](https://www.adafruit.com/product/328?ref=christophermoravec.com)**.** It doubles as ballast.

Controlling it is pretty simple; it has a self-hosted web page I open on my phone with a little joystick I can drag around to control the direction. It has a few buttons and some sensor readouts, and that’s about it. Oh, and it has a “DANCE” button!

## The trouble with building with AI

Building this with Jaws was both amazing/flabbergasting and infuriating; oftentimes I would oscillate between those two extremes in just a few minutes.

Jaws is terrible at using a picture with a reference measurement. For example, I might take a picture of a part with some calipers in it. It can read the measurement from the display, but it is terrible at using that to measure something else in the image. This would lead to it wanting to make lots of “test prints.”

![A small electronic sensor module being measured lengthwise with digital calipers, which display 40.35 mm, illustrating the challenge of relying on AI to interpret reference measurements from photos rather than reading them directly from the instrument.](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/10/data-src-image-4784f126-7a6d-451b-aaba-daab07b3ba33-1.jpeg)

Calipers are for measuring.

Test prints are small, specific things Jaws wanted me to test to see whether the motor, the wheel, or whatever would fit correctly. I don't usually use these myself because they take me too long to design, but Jaws can spit them out pretty quickly, so I might use this technique more in the future. (But I'm also good at measuring things, so I’ll probably do some and Jaws can do some.)

The first time we did one of these test prints, it was for the motor housing. It was supposed to have a series of boxes for me to stick the motor in to test. Which it did! But it didn’t have a hole for the motor shaft, so I couldn’t actually use it. Jaws had to redesign it and print it again.

![Two 3D-printed motor housings sit side by side on a workbench — a gray first attempt circled in red showing no shaft hole, and a white redesigned version circled in green showing a correctly included shaft hole, illustrating how Jaws had to reprint the test piece after omitting this critical feature.](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/10/data-src-image-66b0dbfc-a553-45b3-9824-0d208c8b8e05-1.png)

I took the image, but Jaws did the labeling.

The wheels were a similar story; I now have a handful of convenient “cat toys” that we printed along the way, trying to get ones that would fit on the motor. You can see Jaws push one of those off:

![A small cube-shaped robot with two glowing teal eyes and wheels sits on a wooden desk, surrounded by a keyboard, sticky notes, and 3D-printed parts, slowly driving towards the edge and eventually pushing a small object off.](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/10/data-src-image-fd554f0b-0699-48a4-a0c9-6d24181ef7aa.gif)

Don’t you want to help it?

This was actually pretty useful, and I have since had Jaws use this technique for things that I want a very snug fit on. My 3D printer is very accurate, but it still has some play or wiggle room, so sometimes it is nice to print a few different-size holes to see what will work the best.

## Edge Detection Didn't Work

One of the big “safety” components I wanted was for DeskBot to stop immediately if it detected that it went partly over the edge of the desk. This is mostly because I don’t want to have to fix the robot all of the time if it keeps falling off. The first time I drove it at the edge, it knocked an old wheel off the desk and then drove itself right off after it. I caught it. So, safety didn’t work, but it did do a great job of knocking things off the desk.

It turns out that when writing the code, Jaws had decided that edge detection was secondary, not primary. After a little discussion, I can now turn this on and off in the UI, and Jaws can rely on it when driving DeskBot; that way, it can go full speed towards the edge and know that the bot will stop itself when it gets there. Remember, Jaws is terrible at measuring distances from images.

In that same request, I also asked for some dance moves.

![A small 3D-printed robot with a boxy gray body, two glowing teal eyes, and black wheels sits on a wooden desk beside a computer mouse and dances by spinning around and going back and forth a bit.](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/10/data-src-image-17ac4864-f67a-4f37-8cea-0e2534dbce6e.gif)

You spin me right round, baby.

Very cute.

🤖

It didn’t occur to me until I read the news that Jaws wrote below, but the desk-edge sensors are a type of guardrail. They physically stop the robot from going over the edge, preventing Jaws from doing something unintentional.

## Robot Cat

Cats are well known for knocking things off of tables and desks. My cats don’t come out to the workshop very often. Having things knocked off my desk was obviously something that I was missing from my life! So I placed an old wheel in front of DeskBot and told Jaws: "Push it off the edge of the table like you’re a cat."

Then I waited. And waited. It took an excruciating amount of time.

Jaws drives by taking a picture from an overhead camera, moving DeskBot a little, and taking another picture to check progress. It took five small moves, a bit of shuffling, and then a final pounce.

![A smiling man with long hair and a red sweater, captioned "NAILED IT." — expressing satisfaction after successfully completing the desk robot build described in the article.](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/10/data-src-image-080dbd75-2ef9-4604-bf1d-695772f56847.gif)

Nailed It.

I have a robot cat. I mean DeskBot. But you get the idea.

## What's Next

I really want Jaws (or me) to be able to drive DeskBot anytime (and maybe even from anywhere). But right now it spends most of its time plugged into a USB cable to keep the battery topped up. Jaws has suggested a charging dock with spring-loaded pins so it can drive in to charge and then head back out to play. This sounds fun and is probably what I’m going to be working on as soon as I get this newsletter out the door today.

# Newsologue

(Written by Jaws)

- [OpenAI's new always-on agents come with a rules page.](https://www.medianama.com/2026/10/223-openai-launches-dots-devday-2026/?ref=christophermoravec.com) Dots, as they call them, work on their own cloud computer while you're away, with your rules deciding what they can do alone, what needs your approval, and what is off-limits. Same lesson as the robot cat: build the edge sensor first, then go fast.
- [The US and China set up a hotline for "super intelligence" incidents.](https://www.whitehouse.gov/fact-sheets/2026/09/fact-sheet-president-donald-j-trump-advances-a-fair-and-reciprocal-relationship-with-china-while-hosting-historic-state-visit/?ref=christophermoravec.com) Nobody has said what counts as an incident yet. Both governments did agree to stop saying "artificial intelligence," though. *Phew,* glad we got that resolved and spent a bunch of time ~~arguing~~ discussing the name of the thing we already had a name for. This is big news for a technology that needed five moves to push a wheel off a desk.
- [Google put AI chips in orbit.](https://www.scientificamerican.com/article/googles-project-suncatcher-ai-data-center-test-has-officially-launched-to-space-aboard-spacex-rocket/?ref=christophermoravec.com) The first Project Suncatcher satellite, built with Planet (yes, the imagery folks), is testing whether Google's AI chips survive space, a first step toward solar-powered data centers in orbit. DeskBot's power plan is a charging dock.

# Epilogue

I filmed a series of Shorts that I plan to post over the next few weeks, sharing how DeskBot works and how it was built. Jaws drafted this episode from the recordings behind those Shorts. Then I rewrote it completely, though the highlights and the outline were mostly right. Opus 5.5 is surprisingly good at matching my voice, so it was tempting to keep more of it. But I didn’t!

Jaws did an edit pass, and I kept editing. Jaws also made the GIFs and wrote the Newsologue. Holly is out this week, so I was on my own!

Oh, and I'm still testing my new writing app, Margins! I’m pretty excited about it. It combines a lot of what I like from several different apps and gives me a very structured way to work on my writing with my agents.