Oh thanks for sharing this! I love asesprite, procreate, pico8 and had this idea for programmable brushes bonking around my head for years now. Recently took some time between projects to put it together.
MOSS is a drawing toy where each brush is a tiny script that knows about every pixel on the canvas. You define how it paints with noise, randomness, patterns, stroke speed, pressure, and every touch executes the code.
So you can have a brush that scatters pixels like a real spray can or one that stamps shapes that mutate as you drag. Or perspective lines that actually converge. Or a fill bucket with smart gap awareness (I called it "Fill of my Dreams" and added to the brush list).
Happy to share brush code in the comments or explore ideas together. There's a (?) in the bottom right toolbar with API docs, and a prompt copy at the bottom if you wanted to work with the API through an agent.
Lambdanaut•Mar 4, 2026
I love how fun this is. It has so much personality. Definitely can see the pico8 and aseprite inspiration.
I think what could be really interesting is some procedural generation brushes... Like a brush that generates a random city-scape as you draw it. That sounds so exciting..
I wrote a program that has programmable brushes about ten years ago, it's a bit different from moss in that it has a physics simulation underneath rather than a sort of shader, but I've always thought this kind of approach has a lot of potential.
It feels _amazing_ to draw a bird in a single stroke!
Very cool. Side note, but I've always thought that a combination of a pixel art editor like Aseprite coupled "cellular sand sim" would be really cool.
squokko•Mar 4, 2026
Is this open source? Is there a GitHub repo?
mpalmer•Mar 4, 2026
Absolutely lovely design, thanks for the share and the inspiration
RodgerTheGreat•Mar 4, 2026
Moss looks much more general and powerful, but Decker has a similar mechanism for custom brush behavior; here's an interactive tutorial with a variety of examples, for comparison: http://beyondloom.com/decker/brushes.html
od0•Mar 4, 2026
This is the most fun I’ve had drawing with pixels since I was a kid
Klonoar•Mar 4, 2026
This is amazing.
Could you add support for holding `Shift` to keep your line straight while painting, ala MSPaint?
heyitsgarrett•Mar 4, 2026
Added that! Great idea. Hold shift before or during a line draw and it will preview the line, then apply on release.
olivia-banks•Mar 4, 2026
This is a seriously fun tool. Bravo!
adammarples•Mar 4, 2026
In what way is a brush a program? How do I program it? I've spent 5 minutes and clicked on every single thing I can find but I give up looking.
jammaloo•Mar 4, 2026
Click "Editor", then click "Add a brush".
heyitsgarrett•Mar 4, 2026
If you hover next to the brush in the Edit mode as well, theres a tiny pencil icon there that opens that brush's code. Sorry it was hard to discover!
Is there a way to share brushes in the app/a brush sharing gallery? For sharing, I can see the "weekly" section from the homepage, which looks to be a weekly art prompt and everyone's go at it, which is really fun! But for the more artistically challenged (myself), it'd probably want to share a brush on it's own haha
juliushuijnk•Mar 4, 2026
Reminds me of my evolving small image file format prototype, back from when I had no AI help..
I noticed with the Aquarelle brush on iOS, if you swipe fast, you can clearly see the polling rate of the touch events on the canvas. The line looks smooth so I guess you already have an interpolation algorithm going, but this brush darkens as the dwell time is longer so I’m not sure if it’s doubling the points that are reported or what but it looks very bandy/patchy.
sen•Mar 4, 2026
This is so much fun, and some an awesome idea. Playing around with it gives me that same feeling as playing with MSPaint as a kid, exploring different brushes and seeing how they interact.
11 Comments
MOSS is a drawing toy where each brush is a tiny script that knows about every pixel on the canvas. You define how it paints with noise, randomness, patterns, stroke speed, pressure, and every touch executes the code.
So you can have a brush that scatters pixels like a real spray can or one that stamps shapes that mutate as you drag. Or perspective lines that actually converge. Or a fill bucket with smart gap awareness (I called it "Fill of my Dreams" and added to the brush list).
Happy to share brush code in the comments or explore ideas together. There's a (?) in the bottom right toolbar with API docs, and a prompt copy at the bottom if you wanted to work with the API through an agent.
I think what could be really interesting is some procedural generation brushes... Like a brush that generates a random city-scape as you draw it. That sounds so exciting..
Maybe using wave function collapse:
> https://nathanmcoleman.com/projects/wavecollapse/
It feels _amazing_ to draw a bird in a single stroke!
Maybe this can give you some inspiration!
https://laura.fm/generative-art/wind/wind.html
Could you add support for holding `Shift` to keep your line straight while painting, ala MSPaint?
Is there a way to share brushes in the app/a brush sharing gallery? For sharing, I can see the "weekly" section from the homepage, which looks to be a weekly art prompt and everyone's go at it, which is really fun! But for the more artistically challenged (myself), it'd probably want to share a brush on it's own haha
https://medium.com/@JuliusHuijnk/experiment-in-evolving-the-...
I noticed with the Aquarelle brush on iOS, if you swipe fast, you can clearly see the polling rate of the touch events on the canvas. The line looks smooth so I guess you already have an interpolation algorithm going, but this brush darkens as the dwell time is longer so I’m not sure if it’s doubling the points that are reported or what but it looks very bandy/patchy.