Holoplan CLI is a deterministic local-first CLI tool that generates wireframe layouts (in Draw.io XML format) from a YAML file of user stories. It uses a modular LLM pipeline to chunk stories into UI views, generate layouts, critique and correct them, and validate the result—without relying on a rigid DSL.
Goal: Replace domain-specific UI compilers with zero-temperature LLMs for fast, reviewable wireframe generation.
- YAML-based User Story Input
- LLM-based Story Chunking
- Qwen2.5 Coder Model Layout Builder
- Automated UI Critique + Correction Loop
- Go-based Spatial Validation
- Draw.io XML Output + Deterministic Output
- Merge All Views into a Single File
-
Go 1.20+
-
Ollama installed and running locally
-
And the following models:
qwen2.5-coder:7b-instruct-q6_K(for layout and correction)llama3.1:8bandqwen2.5-coder:3b-instruct-q8_0(for critique and chunking)
Run the included PowerShell script to build and install the CLI to your local ~/bin directory:
.\install.ps1This will:
- Build
holoplan.exefromsrc/ - Install it to
C:\Users\<you>\bin\holoplan.exe - You’ll see a success message if it worked
👉 Make sure C:\Users\<you>\bin\ is added to your system's PATH:
- Search "Environment Variables"
- Edit your
Pathsystem/user variable - Add:
C:\Users\<your-username>\bin\
Once installed, you can run it from any terminal:
holoplan --stories examples/user_stories.yamlYou can build and run directly:
go run src/main.go --stories examples/user_stories.yamlOr install the binary:
go build -o holoplan-cli
sudo mv holoplan-cli /usr/local/bin/holoplan
holoplan --stories examples/user_stories.yamlOnce installed, you can generate UI layouts from a user story file using the run command:
holoplan run --stories examples/user_stories.yamlOr use the shorthand flag:
holoplan run -s examples/user_stories.yamlThis command will:
- Load and parse the user stories from the provided YAML file
- Chunk each story into UI views using an LLM
- Generate a Draw.io layout for each view
- Audit and correct layouts if needed
- Validate component positioning and spacing
- Save the resulting
.drawio.xmlfiles into theoutput/directory
| Flag | Description | Required |
|---|---|---|
--stories, -s |
Path to the YAML file of user stories | ✅ Yes |
If the
--storiesflag is omitted, the CLI will prompt you to enter the file path manually.
- All generated views saved to
./output/ - Final merged layout:
output/final.drawio.xml - Critique files:
output/[view_name].critique.txt(if needed)
UserStory.yaml
↓
[Chunker Agent] → ViewPlan
↓
[Builder Agent] → XML layout
↓
[Auditor Agent] → Critique
↓ (resolve if needed)
[Validator] → Geometry check
↓
Save XML + critique logs
↓
Merge all → final.drawio.xml
- All LLMs are called locally through Ollama
- Temperature is
0for deterministic output
# examples/user_stories.yaml
- id: US-001
title: Sign-in screen
narrative: >
As a user, I want to log in securely with a username and password, so I can access the app.- Critique Logs
- CLI flags for output path, skip audit, etc.
- Add support for Figma export
- GUI wrapper for non-CLI users
- Multi-language prompt templates
- Uses LLMs to emulate deterministic UI compilers
- Prompts live in
src/agents/prompts/ - Builder uses Qwen2.5; chunker/auditor use Llama3/Qwen2.5 variants
If you're actively working on Holoplan, use the built-in Makefile for common dev tasks:
make wireframesRuns the full Holoplan pipeline on examples/user_stories.yaml, regenerating all layouts and merged output.
make emptyDeletes all .drawio and .drawio.xml files from the output/ directory.
make installTriggers the PowerShell-based installer to rebuild the holoplan.exe binary and place it in C:\Users\<you>\bin.
MIT © soyuz43