An offline AI house designer for the Mac.
Write the house you want in plain English. Get floor plans, a roof plan, four elevations
and an 11×17 concept set to take to your architect. Nothing leaves your computer.
| Sheet | |
|---|---|
| A0.1 | What it draws |
| A1.1 | Install |
| A2.1 | Write a brief |
| A3.1 | How it designs |
| A4.1 | How good is it |
| A5.1 | Command line & Python |
“modern 4 bed 3.5 bath 3400 sqft 2 storey 70x140 2 car garage”
Every plan on this page was generated from a one-line brief and is shown unedited. The upstairs is laid out on top of the main floor: baths sit over the kitchen and laundry, upper walls stand on walls below, the stair is the same rectangle on both floors.
The concept set: cover and brief, site plan, a plan for every floor (basement too), roof plan and four elevations, in three looks: modern lines, blueprint and a 1920s pattern book. Eleven styles from craftsman to Japanese. Not for construction.
- Type the house and press Enter. Long, rambling briefs are welcome.
- Edit by name. Every room has a fixed title (Bedroom 3, Closet 2): “make Bedroom 3 bigger”, “swap the office and dining”, “move the kitchen to the back”.
- Drag walls and draw on the plan: circle to select, drag room to room to swap, an X to remove.
- ♥ and ✕ teach it your taste; Breed mixes two designs you like.
- Every change is a new version; nothing is ever lost.
One command. Needs an Apple-silicon Mac (M1 or later), Python 3.10+ and git.
curl -fsSL https://raw.githubusercontent.com/RyFinance/dreambuilt/main/install.sh | bashIt clones the repo into ~/DreamBuilt, sets up Python, pulls the AI model from
Hugging Face and puts Dream Built in ~/Applications. The app finds the model by
itself, so there's nothing to configure. Run the same command again to update.
Or step by step
git clone https://github.com/RyFinance/dreambuilt ~/DreamBuilt && cd ~/DreamBuilt
python3 -m venv .venv && .venv/bin/pip install -e ".[app,llm]"
.venv/bin/dreambuilt get-model # MiniCPM5-2B, about 1.4 GB, once
.venv/bin/python tools/make_app.py --install # "Dream Built" in ~/Applications| Part | Size |
|---|---|
| App and engine | under 1 MB of Python |
| Python environment (Qt, MLX) | about 750 MB |
| MiniCPM5-2B (Apache-2.0, 4-bit) | about 1.4 GB |
The model is optional. Without it a rule-based reader handles the brief, and the designs are exactly the same: the model only helps with chatty wording (“eleven hundred square feet”, “my bedroom on the ground floor so I don’t climb stairs”) and with free-form edit requests.
Plain English works. These are the words it acts on:
| You say | It does |
|---|---|
2 storey, bungalow, one level, 3 storeys |
storeys (a bungalow stays one storey) |
4 bed 3.5 bath, 4 bedrooms and 3 and a half baths |
rooms; .5 is a powder room |
3,200 sq ft, 3.2k, 4,200 sq ft above ground |
size (above ground: the basement comes on top) |
60x130 lot, 20 x 80, a 50 foot lot, 7,000 sq ft lot |
lot |
craftsman, colonial, foursquare, mid-century, west coast / Surrey, modern, modern farmhouse, mediterranean / spanish, tudor, scandinavian |
style |
big kitchen, small office, huge primary suite, spa ensuite, big walk-in |
that room's size |
kitchen at the back, office at the front, dining near the front |
where a room goes |
primary on the main floor, primary upstairs |
primary floor |
3 car garage, double garage, garage built in, no garage |
garage (built into the house; bedrooms or the primary go over it when the house needs the room) |
basement, small basement 600 sq ft, basement with a theatre, gym and wine room, 1 bed rental suite |
basement and what's in it |
townhouse, row house, infill |
townhouse: garage and den below, living on 2, bedrooms on 3 |
family room, office / den, mudroom, pantry, fireplace, porch, upstairs laundry |
rooms and features |
grand entrance, two-storey foyer, double doors, vaulted, open plan, dormers, symmetrical |
character |
stone, brick, board and batten, stucco, cedar, flat roof, hip roof, big windows |
outside |
Small things: oak floors, black frames, warm lighting |
kept as notes on the drawings |
no basement, not a fan of flat roofs, don't want a garage |
the opposite |
Custom rules stick to a design too: ensuite bathrooms only, front door in the middle, open floor plan, no bathrooms in a row, office near the entry.
No neural network draws the plan. The language model only reads your words; the house is designed by a rules engine that searches.
- Read the brief: rules first (every number, room, place and size word); the local model fills only the gaps.
- Program: rooms and target areas from beds, baths, size and your size words.
- Generate: dozens of candidates per brief, each a different set of decisions (core position, room order, what goes over the garage, plan shape). The upper floor is searched separately over hundreds of arrangements that fit the main floor below it.
- Check: every room reached properly, no pass-through bedrooms, no twin or rowed bathrooms, the primary clearly the biggest, plumbing stacked, walls over walls, plus an informal 2021 IRC pre-check (room sizes, egress, stairs, light).
- Choose: feasibility first, then what you asked for, then design quality, then variety, so the three options you see really differ.
- Draw: windows evened and aligned floor to floor, porches with an even column count and the door clear, ridges that meet, roofs and cladding per style.
Room shapes and neighbours are scored against statistics from 4,299 real floor plans (CubiCasa5K, aggregate numbers only).
tools/quality.py counts what an architect would mark on a plan: hard rule failures,
missing rooms, bathrooms in a row or with no plumbing below, narrow or cramped rooms,
long halls, closet waste, dark rooms, walls that don't stack, a primary that isn't clearly
the best room, and room pairings real plans almost never have.
| Engine | Tuning briefs (24) | Held-out briefs (15) |
|---|---|---|
| First version | 5.83 flaws / house | 5.53 |
| This release | 2.79 | 3.47 |
| This release + real-plan library | 2.79 | 2.73 |
Held-out briefs were never looked at while tuning. The real-plan library (one-storey plans
traced from CubiCasa5K) can be built locally with tools/fetch_cubicasa_svgs.py and
tools/build_plan_library.py but isn't redistributed here; the first-version numbers
were measured with it.
.venv/bin/python tools/quality.py.venv/bin/dreambuilt render --text "2 storey colonial 4 bed 2.5 bath 2400 sqft 70x140 office" -o out/
.venv/bin/dreambuilt design --text "tudor 5 bed 4.5 bath 4200 sqft 75x140 3 car garage" --options 3
.venv/bin/dreambuilt check --text "3 storey townhouse 3 bed 2.5 bath 20x80 with a garage"
.venv/bin/dreambuilt render examples/briefs/craftsman-bungalow.yaml --all-styles -o out/--llm reads the text with the local model; --save-model house.json keeps the design
for hand edits.
from dreambuilt.brief import parse_text
from dreambuilt.design import design
import dreambuilt
house = design(parse_text("modern farmhouse 4 bed 3 bath 3200 sqft 80x140 2 car garage"))
dreambuilt.render_pdf(house, "farmhouse.pdf", style="modern")The art on this page is drawn from live designs: .venv/bin/python tools/readme_art.py.
MIT licensed. Concept drawings only, not for construction. MiniCPM5-2B by OpenBMB (Apache-2.0) is downloaded separately. Floor-plan statistics are aggregates derived from CubiCasa5K (Kalervo et al. 2019, CC BY-NC-SA 4.0); the dataset itself is not included.
