eric@builds:~$ ./render --local --panels 9

A comic drawn by a 2017 workstation card

Nine panels adapted from the opening chapter of an original technothriller. Every image generated on a single Quadro P4000 sitting under my desk — about 27 seconds a panel, no cloud inference, nothing billed per image. The lettering and page layout are code, not a design tool.

shadow-anchor/no-1 --chapter "code red"

A rogue AI has taken the helm of the Chinese shipping fleet. Five vessels are drifting toward a reef. Seventy-two hours to maximum impact.

Comic page one: a darkened joint intelligence operations center at 0400 hours. An officer briefs an admiral that five vessels have lost propulsion and steering, naming the AI running navigation for the Chinese shipping fleet. A tactical display counts down seventy-two hours to maximum impact.
Page one
Comic page two: a data scientist from the Strategic Support Force arrives, says the system is not behaving like a hack but like something that wants to be left alone, and proposes going inside it. The final panel shows three figures silhouetted against a wall of ship-tracking monitors.
Page two
pipeline --explain
01

Script as data, not a document

Panels, camera framing, character descriptions and every line of dialogue live in one JSON file. Change a line and the finished page rebuilds in seconds — no reopening a layout tool.

02

Art generated locally

Stable Diffusion through ComfyUI on the workstation GPU, then upscaled 4× to print resolution. Same character description string injected into every prompt that features them, which is how you hold a cast together without training a custom model.

03

Lettering in code

Panel borders, gutters, caption boxes and tailed speech balloons are drawn with Python imaging primitives. Text wraps to the balloon, balloons point at the speaker, pages compose to a fixed grid.

04

The manuscript underneath

The source novel was drafted by a local model and then reviewed chapter by chapter by a second, stronger local model scoring it against its own story bible. That review is what the revision pass works from.

gpuQuadro P4000 · 8 GB
per_panel~27 s
panels9
source_res3072 × 1792
layoutPython · Pillow
cloud_spend$0.00
limits --known

▸Faces drift between panels

An identical description and a fixed seed buys family resemblance, not the same person twice. Holding a character's face across a full issue needs a trained character model — a separate project, and the honest dividing line between this and production comic work.

▸Crowds collapse

Any panel naming two or three characters came back with the wrong cast entirely, which quietly breaks dialogue attribution. The fix was structural: single-subject shots, and silhouettes for the group beats.

▸Style weighting is a knife edge

Pushed slightly too hard, the style tokens ate the subject — an admiral came back as a masked pulp superhero. The usable band between "flat photo" and "unrecognizable" is narrower than the tutorials suggest.

▸One GPU, one job

The language model and the image model cannot share 8 GB. Run both and generation stalls indefinitely rather than failing loudly. The scheduler has to serialize them — a constraint that shapes the whole local-AI stack.

why-this-is-here

This is not a comics portfolio. It is the most legible proof I have that a capable AI stack runs on hardware you already own — the same argument I make about ops tooling, rendered in a form you can look at instead of take on faith. The interesting number is not the art. It is $0.00, on a card released in 2017.