Mascarpone 🧀
Interactive CLI tool for scaffolding Tiramisu game projects
Named after the Italian cream cheese used in tiramisu, Mascarpone provides a delightful TUI experience for creating new game projects with the Tiramisu game engine.
Installation
gleam add --dev mascarpone
Usage
Run the interactive project creator:
gleam run -m mascarpone
The TUI will guide you through:
- Lustre Integration: Choose whether to include Lustre for UI overlays (menus, HUDs, etc.)
 - Project Template (Optional): Select from:
- 2D Game - Orthographic camera and sprite setup
 - 3D Game - Perspective camera with lighting
 - Physics Demo - Physics-enabled objects
 - Skip - Don’t create template files (for existing projects)
 
 - Desktop Bundle: Set up NW.js for desktop distribution
 
What It Creates
Mascarpone sets up your Tiramisu project with:
- Lustre dev tools installed to 
priv/<project-name>/with bundled Bun runtime gleam.tomlwith all necessary dependencies (tiramisu, vec, lustre_dev_tools, optionally lustre).gitignorefor Gleam projectspackage.jsonandnode_modules/with Three.js and Rapier3D installed via Bun- Main source file with a working game example (if template selected)
 - Lustre dev tools configuration with Three.js and Rapier3D import maps
 
Features
- 🎨 Beautiful TUI powered by Shore
 - 🚀 Quick project setup with sensible defaults
 - 🎮 Multiple game templates to start from (optional)
 - 📦 Automatic dependency management via 
gleam add - 🖥️ Desktop bundling with NW.js for cross-platform distribution
 - ⚙️ Configurable options for Lustre UI and Rapier3D physics
 - ♻️ Can be run on existing projects to add NW.js support
 
After Creation
For Web Development
Run the dev server:
gleam run -m lustre/dev start
Then open http://localhost:1234 in your browser to see your game!
For Desktop Development (if NW.js bundling was selected)
Building Desktop Distributions
If you set up NW.js bundling during project creation, you can build platform-specific distributions with a single command:
gleam run -m mascarpone bundle
This command:
- Uses the Bun runtime from lustre-dev-tools
 - Runs 
bun run buildwhich executes the build script in yourpackage.json - Compiles your Gleam code with 
gleam build - Creates platform distributions with 
nwbuild 
The built distributions will be available in the directory specified in your package.json (typically ../<project-name>_build/).
Using Mascarpone with Existing Projects
⚠️ Important: If you’re adding NW.js support to an existing project, make sure to skip the template selection when prompted. Selecting a template will overwrite your existing game code in src/!
License
MIT