Our 3D printer draws caricatures now

Two of us spent an afternoon turning an Ender 5 into a portrait machine. It draws a gleefully exaggerated version of whoever sits in front of it, in marker. The best part was getting it to talk to the printer.

Point a camera at someone, wait a couple of minutes, and our Ender 5 Pro starts dragging a marker across paper, working out a wildly exaggerated version of their face. Big head, big ears, bigger nose. When it finishes it letters REBEL DOT in the corner like a signature.

An Ender 5 Pro 3D printer partway through a drawing, a whiteboard marker clamped to the print head next to the hot end, drawing a line-art caricature of a face with glasses on white paper.
The Ender 5 Pro partway through a drawing. The hot end is still bolted on; the marker just rides next to it, and the printer never heats up.

The pipeline is short. A photo goes to an image model that comes back with a heavily exaggerated, line-only drawing. We trace that into vector paths, convert the paths to Marlin G-code, and send it to the printer, which never heats up or extrudes a thing. The marker lifts and drops, the bed and gantry handle the rest.

The photo A selfie of a young man with glasses and a short beard, taken in an office in front of a window.
What it drew The finished pen-plotted caricature: the same man as exaggerated black line art with oversized ears, big glasses and a long nose, REBEL DOT lettered above.

Left: the photo we fed in. Right: what the printer handed back. That's a real likeness out of surprisingly few lines.

From "let's try this" to the first real drawing took about four hours. Two of us split the work: one took the side that makes the caricature and turns it into pen strokes, the other took the printer. We stitched the halves together and it ran.

The bit I keep retelling is the printer half. It was plugged into the machine over USB and nothing else was set up. The instruction to the agent was roughly:

I've connected a 3D printer over USB. Figure it out and make it draw this.

We didn't give it a port, a baud rate, or the name of a library. It worked through the USB serial devices one at a time, sent each one a firmware query, and watched for the one that answered like the Ender's Marlin board. It opened that port without resetting the board, so the home position and pen height we'd set by hand survived. Then it streamed the G-code line by line, waiting for the printer to say ok after every move so it never overran the buffer.

And the printer started drawing.
The marker lifts between strokes and drops back down to draw. Pen up, pen down, the same trick plotters have used for decades.
Close-up of the print head: a Board Master whiteboard marker clamped to the carriage right next to the hot end, its tip touching the paper.
The hardware side of it: a whiteboard marker clamped to the carriage, right next to the hot end.

Nobody handed it a runbook. We didn't name the port, the firmware, or the trick about not resetting the board. We said figure it out, and it did, on hardware it had never seen, first try. Writing code that compiles is one thing. Watching it reach down a USB cable and correctly drive a physical machine you only mentioned in passing is another. Our office cameras pulled almost the same stunt a couple of weeks ago. I'm starting to think this is just what the good agents do now.

The caricatures come out gloriously ugly, and that's the point. Four hours, two people, and a 3D printer that draws faces in marker. Easily one of the most fun things we've built. 😀


The printer is an Ender 5 Pro running Marlin, with a whiteboard marker clamped to the print head next to the (unused) hot end. Caricatures come from an image model (Nano Banana 2), get vectorized to SVG, then converted to Marlin G-code. The agent located the board by sending M115 to each /dev/ttyUSB* and matching the firmware reply, opened the serial port with DTR/RTS held low so the board wouldn't reboot and lose its hand-set origin, and streamed the G-code line by line with an ok handshake. Built at RebelDot on 13 June 2026.

Keep Reading

Continue with the blog index, read how the agent figured out left from right on our robot cameras, or how I built Crayo in 3 days.