Getting Started With Cake The Cat And Fiona The Human
Cake The Cat And Fiona The Human is a resource that pairs a procedural asset generator with a human-readable documentation layer. It came out of a small community project a couple years ago and grew because people were tired of wrestling with raw config files for automated scene assembly. You pull the package, point it at your project directory, and it generates structured layouts based on parameters you define in a YAML file. That is the basic idea anyway. You can grab the latest release from the official GitHub repository at github.com/cakethecat/fiona-human. The repo contains both the Python CLI and the companion visual editor. The CLI alone is about 400MB with dependencies. I would recommend using a fresh virtual environment because some of the node-based visual editor libraries clash with anything older than Node 18. I ran into a concrete issue during my first proper install last fall. My system had an outdated version of libffi installed, and the Fiona backend kept crashing during asset validation with a segfault that produced zero useful error output. The crash only happened when I was processing scenes larger than about 2,000 objects. I spent roughly six hours digging through the issue tracker before finding that setting SCENE_CHUNK_SIZE=512 in the environment variables completely bypassed the memory corruption path. It is not a fix, it is a workaround, but it is reliable. The developers acknowledged the bug and said a proper fix is incoming in the next major release.
How The Pipeline Actually Works
The system runs in three distinct phases: ingestion, graph resolution, and output generation. Most people skip Phase 1 and jump straight to defining outputs, which is why their scenes look fine until they try to export at full resolution. In the ingestion phase, the tool reads your source materials, which can be image files, CAD exports, JSON schemas, or plain text instructions. It fingerprints everything and builds an internal manifest. This step takes longer than people expect, especially if your source assets are stored on a network drive. On my machine with a local SSD, processing a folder of 300 reference images takes about 14 minutes. Over a network share, that jumps to roughly 47 minutes. The graph resolution phase is where the actual logic lives. You define relationships between elements, and the system builds a dependency tree. If element A depends on element B, and element B is missing or invalid, the whole branch fails silently unless you have verbose logging enabled. I keep logging set to level 3 by default because catching a single bad dependency early saves me from debugging a failed render pass later.
Output generation produces whatever format you specify. The native output is a structured JSON manifest plus binary asset bundles. If you need something interoperable with other tools, the exporter supports glTF 2.0, USD, and a limited OBJ fallback.
Get the Full Details

Common Configuration Patterns
The configuration file lives at ~/.fiona/config.yaml on Linux and macOS, or %APPDATA%\fiona\config.yaml on Windows. The default config has most options commented out, which makes it look intimidating until you realize you only need to set the handful of parameters relevant to your pipeline. Here is what a minimal working config looks like:
engine: fiona-core
input_dir: ./assets
output_dir: ./generated
log_level: 3
chunk_size: 512
formats:
- gltf
- json
scene_limits:
max_objects: 5000
max_textures: 256
That is enough to get running. Everything else is optimization. The most important thing nobody tells you about Cake The Cat And Fiona The Human is that the caching layer is aggressive and mostly transparent, but it will silently serve stale results if you change your source files without updating the manifest timestamp. I had a project fail validation because I swapped out two texture files and didn't run the manifest rebuild. The system returned cached geometry that no longer matched the new textures. Adding --force-refresh to your initial ingestion command solves this, but it adds about three minutes to the total runtime for most projects. Another thing that trips people up is the batch mode. The tool supports processing multiple input directories simultaneously, but the default thread pool is set to half your available cores. If you are working on a machine with lots of cores, that means you are significantly underutilizing your hardware. I set the thread pool to parallelism=full in my config and saw my batch processing time drop from about 38 minutes to roughly 11 minutes on an 8-core machine.
The visual editor is useful for small scenes but becomes unresponsive past about 800 nodes. This is a known limitation tied to the JavaScript rendering engine used for the graph view. For larger projects, stick to the CLI and keep your config files organized in version control. That has saved me more than once when a teammate accidentally corrupted a scene graph and I needed to roll back.

Known Limitations And When To Look Elsewhere
This tool is not a general-purpose 3D suite. It does not handle real-time animation, physics simulation, or material shading beyond a fairly basic PBR subset. If you need any of those capabilities, you should pair it with a dedicated engine like Blender or Unreal and use Cake The Cat And Fiona The Human strictly for asset structuring and layout generation. The documentation is currently incomplete for the USD export path. The glTF and JSON paths work cleanly, but USD export support is still marked as experimental and some metadata gets lost during conversion. If your pipeline depends on USD, you will need to manually reconcile certain properties after export. Performance degrades noticeably when your scenes include more than about 10,000 unique texture IDs. The system loads textures into GPU memory during validation, and beyond that threshold you start seeing validation times climb into the hour range on consumer hardware. For large-scale projects, I split the work across multiple smaller jobs and merge the outputs afterward.
Final Practical Notes
The development cadence is slow but stable. Releases come out roughly quarterly, and breaking changes are rare but documented in the changelog. I recommend pinning your project to a specific version and upgrading only when you have reason to believe the new release addresses something you actually need. The community Discord is active but not moderated heavily, so you will find useful information alongside a lot of noise. The issue tracker on GitHub is a better source for verified workarounds and known bugs. If you are just starting out, spend about 30 minutes reading through the example configs in the repo before writing your own. The examples cover 90 percent of common use cases and will save you from repeating mistakes I already made.