# Can a local AI agent draw an SVG illustration? Three tried, none got there URL: https://onticpost.com/local-ai-agent-draw-svg-illustration-test/ Published: 2026-10-04 Updated: 2026-10-04 By: Onticpost > Can a local AI agent draw an SVG illustration? We gave Pi, OpenCode and Hermes one brief on Gemma 4 31B. All had the idea. None could draw it. We gave three local coding agents the same job: read a short article summary, think of a picture for it, and draw that picture as SVG. All three ran Gemma 4 31B on one Mac. Each came up with a sound idea. None produced a drawing we could publish. ## Can a local AI agent draw an SVG illustration? Not to a usable standard, on this test. Pi, OpenCode and Hermes each wrote a script that ran and each produced a picture. One could be read at a glance, one was a tangle, and one was a set of plain rectangles. The thinking was fine. The drawing was not. ## What did we ask the agents to draw? A cover for an article about a default setting that cuts the start off a long prompt. Each agent got the same four files: a seven step process, a small drawing kit with three functions (a filled shape, a line and a dot), one worked example, and the topic. The process asked for one idea made of two or three everyday objects, stated in a sentence, then drawn inside an area 600 units wide and 400 high. Shapes are written as SVG paths, which means every corner and curve is a pair of numbers the model has to choose. ## Can a local model think of an idea for an illustration? Yes. All three landed on the same family of idea, paper being cut, without seeing each other’s work. | Agent | The idea it wrote down | | --- | --- | | Pi | A long strip of paper being fed into a small slot, with a pair of scissors cutting off the beginning of the strip. | | OpenCode | A long strip of paper entering a small slot, with the front end of the strip cut off and lying on the floor. | | Hermes | A long roll of paper being cut at the top by a large pair of scissors. | Any of the three would brief an illustrator well. The idea step is not where a local model falls short. ## What did the three drawings look like? Pi drew the most parts: 11 shapes and 6 lines for a box, a strip of paper and a pair of scissors. It placed all of them in a band 110 units high, out of the 400 available, and put the scissors on top of the strip. The parts are there. The picture is a knot. OpenCode drew 5 shapes, every one a rectangle. Its two strips of paper are 20 units tall. Nothing in the picture reads as paper, a slot or a cut. The process asked for three to eight shapes for each object. OpenCode used one or two. Hermes drew 9 shapes and 2 lines and was the only one to fill the space, with a sheet running from the top of the area to the bottom. A reader can tell what it is. The scissors are thin and small against the sheet, and two ovals meant as the curl of the roll sit loose at its corners. ## Why do local models draw badly in SVG? Our reading is that the agent cannot see what it has drawn. It chooses numbers, runs the script, gets a message that a file was written, and stops. Nothing in that loop tells it that the scissors sit on the paper or that a strip 20 units tall will look like a line. A person drawing this way, eyes shut, would make the same mistakes. We did not test that reading. The next step is to let an agent look at a picture of its own drawing and correct it. ## Is a local agent good enough to illustrate articles? For ideas, yes. For finished drawings, no, not from one pass with this model. The useful split on this evidence is to let the local agent propose the picture in a sentence and have the drawing done by something that can look at it. ## How we tested One machine: a Mac with an M4 Pro chip and 48 GB of memory, on macOS 27.0.1. One model for all three: Gemma 4 31B QAT in LM Studio, loaded with a context window of 65,536 tokens, the same build we measured in [our review](https://onticpost.com/gemma-4-31b-qat-m4-pro-48gb-tokens-per-second/). Agents: Pi 0.99.1, OpenCode 1.18.31 and Hermes 0.21.5. Each ran once, on 4 October 2026, from the command line with the same instruction: read the process file and follow it. One run each is a small sample, so the order of the three could change on a second try. The times and what each agent got wrong along the way are in [our comparison of the three](https://onticpost.com/pi-vs-opencode-vs-hermes-same-local-model/), and the commands are in [our guide to running one prompt through all three](https://onticpost.com/run-pi-opencode-hermes-one-prompt-command-line/). ## Sources - [MDN: SVG paths](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorials/SVG_from_scratch/Paths) - [Google's Gemma 4 31B QAT model card](https://huggingface.co/google/gemma-4-31b-it-qat-q4_0-gguf)