ShippedSep 2026 – Oct 2026Solo builder

Cat Breads

23 index-card cats my daughter drew, rebuilt as SDF clay in Blender and turned into an iPad lounge where every cat has a Comfy Cloud voice.

pythonnumpyopenvdbblenderthree.jsgltfweb-audiocomfy-cloudmcpelevenlabsace-stepchatterboxclaude-coderemotionplaywrightffmpeg
The Cat Breads lounge: 23 clay cats on a teal couch in a terracotta room, under a For Lane sign and the framed index cards they were drawn on

Overview

It started as an experiment: modelling organic shapes with signed distance fields in Blender 5.2. A small numpy toolkit of primitives, smooth booleans, gyroid lattices and noise warps, sampled on a grid and meshed with the OpenVDB module that ships inside Blender's Python, so there was nothing to install. Then my daughter drew 23 "Cat Breads" on index cards, and the experiment had its subject.

Every card became a cat: a smooth union of coloured SDF parts with paint layers for stripes, patches, eyes and mouths, baked into vertex colours so nothing needs a UV or a texture. The 23 cats are rigged with bones derived from the parts that built them, exported as Draco GLBs (the whole cast is about 5 MB) and placed in a procedural Three.js lounge that reflows to the screen. On her iPad, tap a cat and it hops, meows and looks at your finger. Double-tap the floor and a treat drops, and the nearest free cat comes to eat it. Night mode, glowing eyes, felted-fuzz shaders, ripples on the floor.

The lounge was finished and completely silent until the Comfy Cloud MCP: from the Claude Code session, one ElevenLabs sound-generation call per cat (a bell for the Lucky Cat, a buzz for the Bumble Cat), ACE-Step for the ambient loop, ffmpeg to trim and level, without leaving the editor. The 55-second demo tells that story, narrated in my own voice cloned with Chatterbox on Comfy Cloud. The demo was itself produced by Claude Code with a Remotion demo studio: scripted captures of the lounge synced to the real voices by a marker frame, a replay of the MCP session, and a mastered mix.

Media

Features

Tap a cat, it answers

Each of the 23 cats has its own 1.5-second voice and a move from a palette of eleven (hop, spin, wiggle, stretch, dance, bow), never the same one twice in a row. Every cat in the room turns its head to follow your finger.

Treats and rivalries

Double-tap the floor and a fish biscuit drops with a synthesized thud. The nearest free cat hops over and eats it in three bites. If a second cat is nearly as close, they fight for it: the bigger one usually wins, and the loser sulks home.

Night mode

Click the floor lamp and the whole rig cross-fades to moonlight: five nightlights come up near the cats and their eyes glow in their own colours, red for the Devil Cat, violet for the Unimeow. Cats drawn with closed eyes stay dark, which reads as asleep.

Built for an iPad

One finger orbits, two pinch, taps are told apart from drags with finger-sized thresholds, audio unlocks on the release of a gesture, and Add to Home Screen runs it full screen with its own icon.

The cards, as cards

All 23 index cards re-rendered with the titles transcribed exactly as written, "the show of! AND NO FARTING" included, plus the photo of the originals framed above the couch and a sign that says who it is for.

Every sound generated

The 23 voices and the music loop came from Comfy Cloud. The treat thuds, crunches and the lamp's switch click are synthesized in Web Audio, with impact speed setting pitch, gain and ring.

Technical

Modelling: sdf.py is a vectorised numpy toolkit (primitives, TPMS lattices, smooth booleans, shells, twist, bend, repeat, mirror and noise warps, Perlin and fBm) sampled on a grid and meshed with Blender's OpenVDB module. A second route builds the same idea from Blender 5.2's native grid nodes with live sliders. A character is a Model of coloured parts plus paint layers; the colour at each vertex is the softmin-weighted colour of the nearest parts with the paint composited on top, baked to a vertex-colour attribute.

Rigging and web: bones come from the anatomy each cat records as it builds, and the idle motion is F-curve noise with independent phases per cat, so the group moves without a keyframe. export_web.py writes Draco GLBs decimated to about 24k vertices per part and a layout file. The Three.js page assembles a pose per frame (spot, cursor look, idle sway, then the move's offsets) and injects GLSL into the standard materials with onBeforeCompile, so felted fuzz, petting ripples, floor ripples and the lamp cone keep lighting, shadows and skinning intact.

Sound and the demo: the voices came through the Comfy Cloud MCP's partner_generate (ElevenLabs sound generation) and the loop from an ACE-Step 1.5 template, trimmed and loudness-normalised with ffmpeg. For the demo video, a scripted mode in the page flashes a marker frame and logs each press; Playwright records the full Chromium with Metal (the headless shell renders the room at under one frame per second); ffmpeg finds the marker so the silent recording lines up with the real voices; a Remotion studio adds timed audio cues, music ducking and a terminal-replay scene; the narration is a Chatterbox clone checked with Whisper and levelled with a limiter; the mix is mastered to -14 LUFS.

Skin weights from the SDF itself

No weight painting and no heat solve: each vertex gets a softmin over its distances to the tagged parts, so the head and body blend exactly where the smooth union blends the surface. A tail splits its weight between a three-bone chain by arc length.

Paint without UVs

Stripes, patches, eyes and mouths are paint layers composited onto vertex colours at mesh time. A scarf that hugs the body is a slab intersected with an offset of a frozen snapshot of the surface; a rainbow tail is paint driven by arc length along the tail's polyline.

A room that reflows

The camera frustum sets the back wall's width, from 18 to 44 units, and the furniture rebuilds whenever it changes: shelves anchor to the wall's edges while the couch and rug stay centred. The orbit's tilt limit is recomputed from the zoom every frame, so the eye never dips below the floor.

Audio that survives iOS

Safari runs Web Audio in an ambient session the ringer switch silences, so the page asks for a playback session, unlocks on gesture release, resumes after calls and app switches, and plays the loop gaplessly through a buffer source.

One MCP call per sound

Each voice is a 1.5-second ElevenLabs sound effect from a one-line prompt, saved to the Comfy Cloud asset library with its graph attached. The loop came from ACE-Step 1.5 after YuE2's checkpoint turned out not to be deployed on the Cloud workers yet.

A demo synced by a flash

Playwright clips are silent, so the page flashes a white frame at t = 0 and logs every press against it; ffmpeg signalstats finds the luma spike and each voice lands within a frame of its hop. The whole video cost about one Comfy Cloud credit; the narration was GPU time only.

Social posts

x (Comfy account)

Draft · drafted 2026-10-20
M

23 index-card cat drawings became a playground, built in Claude Code. Every cat's voice came from the Comfy Cloud MCP: one ElevenLabs call per cat, ACE-Step for the music, no tab-switching. Even the narration is a Comfy Cloud voice clone.

Try the MCP: https://cloud.comfy.org

276 / 280

linkedin

Draft · drafted 2026-10-20
M

A small side project turned into my favorite demo of the Comfy Cloud MCP.

It started as an experiment: modelling with signed distance fields in Blender, with numpy and the OpenVDB module that ships inside Blender's Python. Then my daughter drew 23 cats on index cards, and the experiment had its subject. With Claude Code, every card became a 3D cat, rigged and exported to a Three.js lounge she can play with on her iPad.

The lounge looked finished. It was also completely silent.

So I asked Claude Code for sound. With the Comfy Cloud MCP connected, it called ElevenLabs sound generation once per cat, ACE-Step for a loop of lounge music, then trimmed and levelled everything with ffmpeg and dropped it into the page. I never opened another tab. That's the part I want to show: how little friction there is between "this needs sound" and sound.

The narration in the video is my own voice, cloned with Chatterbox on Comfy Cloud through the same MCP.

If you're building with an agent and need generated audio, images or video, the MCP is the fastest path I've found. Happy to share the workflow files if you're curious.

x / bluesky / threads

Draft · drafted 2026-10-20
M
1/4

Started as an SDF experiment in Blender. Then my daughter drew 23 cats on index cards and it became a lounge for her iPad. The cats were silent until Claude Code asked the Comfy Cloud MCP for a voice per cat and a music loop. I never left the editor.

250 / 280
M
2/4

How the sound got made: one MCP call per cat to ElevenLabs sound generation (a bell for the Lucky Cat, a buzz for the Bumble Cat, a bubbly echo for the Explorer), ACE-Step for the lounge loop, then ffmpeg to trim and level. 23 voices in a few minutes.

📎 No attachment
251 / 280
M
3/4

Even the narration is Comfy Cloud. It's my own voice, cloned with Chatterbox from a few reference clips I recorded, generated through the same MCP. No partner credits for that part, just GPU time.

📎 No attachment
196 / 280

threads / bluesky

Draft · drafted 2026-10-20
M

My daughter drew 23 cats on index cards. Claude Code turned them into a 3D lounge for her iPad, and the Comfy Cloud MCP gave every cat a voice without me leaving the editor. Even the narration is my cloned voice, made on Comfy Cloud. 🙂

235 / 280

youtube

Draft · drafted 2026-10-20
M

Title: 23 cat drawings, one Claude Code session, and the Comfy Cloud MCP

An SDF experiment in Blender became a Three.js lounge for my daughter's 23 hand-drawn cats. The cats were silent until Claude Code asked the Comfy Cloud MCP for sound: ElevenLabs sound generation for each cat's voice, ACE-Step for the music loop, and a Chatterbox clone of my own voice for the narration. Nothing left the editor.

0:00 Cat Breads
0:03 The experiment
0:08 Her cards
0:14 The build
0:20 The lounge
0:26 The Comfy Cloud MCP session
0:38 The cats answer
0:49 Built with Claude Code, voiced through the Comfy Cloud MCP

Lounge: https://cat-breads-lounge.vercel.app
Comfy Cloud MCP: https://cloud.comfy.org