MOSS-Image on a Mac: Two-Minute AI Poster Drafts With Turbo, Then One Slow Final Render
Twelve and a half minutes is a strange amount of time. Too long to watch, too short to start anything else. That is how long one poster takes when you run MOSS-Image, the free open poster model from OpenMOSS, on an M4 Pro Mac at full quality. It is a lovely model for typography and layout. It is also a model you cannot really iterate with on a laptop, because by the third version you have forgotten what you were testing.
An add-on posted on October 22 brings that down to about two minutes. Same model, same Mac, same memory. The trick is not that the computer got faster. Each step of the image takes exactly as long as before. The add-on just needs 15 of them instead of 100.
That changes how you should work, and it is worth getting the routine right, because the fast version is not quite the same picture as the slow one.
What you are working with
MOSS-Image is the open poster model OpenMOSS released in mid-October under Apache 2.0, a licence that lets you use the output, and the model, commercially without a revenue cap. Its party trick is layout: instead of a paragraph of prompt, you can hand it a small JSON file that lists boxes on the canvas and the exact text that goes in each one. Think of it as a designer's rough comp written as data.
moss-image-mlx is an independent port by felix-ab that runs MOSS-Image on Apple Silicon without an NVIDIA card. It is Apache 2.0, needs macOS on Apple Silicon and Python 3.11 or newer, and picks a model size for you: the "8bit" version (a compressed copy of the model that needs less memory) on Macs with 24 GB of memory or more, and a smaller "compact" version below that. For a 1024 by 1024 image, the README measures peak memory at 9.3 GB for 8bit and 7.4 GB for compact. The README expects a 16 GB Mac to work from those peaks but says it has not been tested.
The turbo add-on, VisualInference/MOSS-Image-SFT-Turbo-MLX, is a 595 MB file trained to get a similar picture in far fewer steps. On the author's M4 Pro: about 2 minutes (the README splits it as 117 seconds of drawing and 2 of finishing) against about 12.5 minutes for the full model, with peak memory around 9.4 GB. It also applies another creator's stripe-removal add-on on every run, which targets the faint vertical banding the full model can leave on skies and walls.
Why the split matters
Here is the honest catch, in the author's words: "Compositions usually match the full model for the same seed, but not always." A seed is the random starting number that decides which version of an image you get; reuse it and you normally get the same picture again. With turbo, the same seed usually lands close to the full-quality version, but not every time.
The other differences are small and specific. Small, dense text slips more often in turbo, and regular geometry, a fence or a row of windows, can come out a little too organic. On the author's small-text test, text-reading software got 95.7 percent of the words right in turbo against 97.0 percent for the full model, across eight prompts. On a separate four-prompt check it came out the other way, 94.7 against 93.4. Read those as "about the same, watch the fine print," not as a ranking. They are the author's own tests, judged on one or two seeds.
So turbo is not a cheaper final. It is a draft tool. And a two-minute draft is exactly what a poster needs, because most poster problems are layout problems: the headline is too big, the date crashes into the image, the hierarchy is wrong. You can see all of that at draft quality.
Put this into practice: the draft-then-final routine
1. Install and run one test.
pip install -U moss-image-mlx
moss-mlx "A highway LED sign at sunset that reads \"HELLO MLX\"" --turbo -o sign.png
The first run downloads the base model, the turbo add-on and the stripe-removal add-on, so give it time and space on your drive. Every image also gets a matching .json file with the exact settings used. Keep those. They are your notes.
2. Write the layout, then check it before you render anything.
If your poster has real copy, use a layout file instead of a prose prompt. Boxes are written as [y_min, x_min, y_max, x_max] in pixels, measured from the centre of the canvas rather than the top-left corner, which trips up everyone the first time. The port includes helpers that convert from the top-left convention you are used to (from_top_left()), and a checker that draws your boxes as a preview before you spend any time:
moss-mlx-layout check poster.json --size 1024x1024 --preview boxes.png
Open boxes.png. If the headline box overlaps the date box, fix it now. This step costs seconds and saves whole renders.
3. Draft four seeds in one go.
The layout file goes in as the prompt text itself, which is what the $(cat poster.json) part does. Render it on several seeds with one model load:
moss-mlx "$(cat poster.json)" --turbo --seeds 1,2,3,4 --width 1024 --height 1024 -o draft.png
Four drafts is about eight minutes. Look at them as thumbnails first. You are judging hierarchy, balance and whether each line of copy landed in the right box. Do not judge texture or small type yet.
4. Change one thing at a time.
If the headline feels cramped, change the headline box and nothing else, keep the same seeds, and draft again. Because the port caches the prompt, re-rendering with a new seed or size does not reload the text part of the model. One change per round is how you learn what the model is responding to.
5. Render the winner once, at full quality.
Take the seed you like and rerun the same command with that one seed and without --turbo. That is the twelve-minute render. Start it, go do something else, and come back to a final.
Then compare the final with its draft. Most of the time it will be the same composition with crisper detail. Sometimes it will move. If the layout shifted, try the next-best seed rather than fighting it.
6. Proof the type like a typesetter.
Zoom to 100 percent and read every word, especially small lines like dates and URLs. Small, dense text is the model's weak spot in both modes. For anything that must be exact, like a ticket link or legal line, set it yourself in your layout app on top of the generated poster.
What to look for in a draft round
It helps to have a short checklist, because two-minute images invite you to keep rolling instead of deciding. When the four drafts land, I look for three things, in this order.
First, does every line of copy sit in its own box? If a headline spills into the subhead, that is a layout fix, not a seed problem, and no amount of rerolling will cure it.
Second, does the eye go where you want it? Squint at the thumbnails. The thing you notice first should be the thing the client cares about most, usually the headline or the act's name. If the image fights the type, shrink the image box or give the headline more room.
Third, is the background doing its job? Busy texture behind small type is the fastest way to lose legibility. If a seed has a gorgeous sky that swallows the date, note it and move on.
Write the verdict for each seed in one line next to its .json file. After two or three rounds you will have a record of what each change did, which is the closest thing to a style guide this model gives you.
Batching an overnight run
If you have a set of posters for a series, the port reads a jobs.jsonl file, one job per line, with --batch. Batch mode raises 8bit peak memory to about 10.8 GB, per the README. Draft the whole series in turbo during the day, pick seeds, then queue the full renders overnight.
Where it breaks
The final can differ from the draft. Same seed, usually similar, not guaranteed. Budget a second full render for an important piece.
Small type is fragile. Both modes garble dense text sometimes. Set critical copy yourself.
Repeating patterns wobble in turbo. Brick walls, fences and grids look hand-drawn.
Turbo is tuned for about 1 megapixel. It was trained for roughly 1 MP across nine shapes. Sizes far from that, and the compact and full-size versions in turbo, are untested.
Two minutes is still two minutes. On a Mac, this is a big improvement. Next to a hosted image model that answers in seconds, it is slow. The reason to bother is that it is free, private and commercially clean.
It is all very new and unofficial. The port and the add-on are independent projects, not OpenMOSS releases, and the add-on is a day old. The quality evidence is the author's eye on a handful of prompts. Layout prompting is still young on the base model too, so expect surprises.
The banding fix only rides on turbo. The README says the full-model path does not remove the faint vertical stripes yet, so check skies in your final.
The bigger point
Speed changes what a tool is for. At twelve minutes a poster, MOSS-Image on a Mac was something you fed one carefully written prompt and hoped. At two minutes, it becomes a sketchbook. That puts the work where a designer actually wants it: on the layout, the hierarchy, the five decisions that make a poster read from across a room.
Take a real brief, maybe a gig poster or an event flyer you have already designed by hand. Write its boxes into a layout file, run the checker, and draft four seeds. Compare them with the version you made yourself. You will learn in one coffee whether this belongs in your process.