Skip to content

Repository files navigation

Roomsmith

The open-source AI interior design agent. Photographs of a room go in. Measured drawings, photoreal renders and a design report where every single change is justified come out.

License: MIT Python 3.9+ No dependencies PRs welcome

AI generated photoreal interior render of a Victorian home office with fitted alcove bookshelves either side of a chimney breast
Scaled architectural floor plan generated by Roomsmith showing furniture layout and circulation route Isometric dollhouse cutaway drawing of the same room Photoreal render of the window wall showing the sash window and radiator
One direction, from one room model: photoreal render, measured floor plan, isometric cutaway, and a second view — all consistent with each other.

Roomsmith is an AI interior design tool that runs as a team of agents in Claude Code. Give it photos of a real room and it interviews you, surveys the space, produces scaled floor plans and wall elevations, generates photoreal renders, and writes a client-ready PDF report — with approval gates so nothing expensive happens without your say-so.

It is not a mood-board generator. Every design direction is a spatial thesis with a measured layout, and every change carries a specification, a reason, and a validation against the room's real constraints.

./bin/design init my-room
cp ~/photos/*.jpg projects/my-room/refs/

then in Claude Code:

/interior-design

What it produces

For each design direction:

Output What
Floor plan Scaled, dimensioned, with furniture and the circulation route
Blueprint The same plan in drafting style
Wall elevations One per wall, square-on, with every opening dimensioned
Isometric A dollhouse cutaway
Photoreal renders One per camera view — hero, reverse, seated eye-level, corner overview…
Justified changes Every item: specification, design reason, and validation

Plus one PDF report containing all of it, a site survey, and a comparison matrix proving the directions genuinely differ.

Why not just prompt an image model?

Because it will draw you a room you cannot build.

Problem What Roomsmith does
Invents doors and windows that don't exist The opening inventory and a "these walls are solid" clause are generated from the room model and pinned into every prompt
Draws a small room as a spacious one Scaled drawings are passed in as references; every direction carries arithmetic proving the layout fits
Silently deletes furniture you can't part with must_appear items are pinned into every prompt and checked by an adversarial critic
Gives you five variations of one idea Two directions count as distinct only if they differ on 4+ of 7 axes
Looks like a hotel lobby The cultural register is part of the brief, not an afterthought
Costs a fortune before you notice it's wrong One direction is built and reviewed before the rest run; spend ceilings are enforced against real API costs

Geometry never comes from the image model. Plans, elevations and isometrics are drawn by code from a single room model, then handed to the renderer as references. The image model does light, material and atmosphere — it gets no say in what the room is.

How the pieces fit

  Claude Code  ──  the six agents: interview, survey, strategise, author, critique, report
       │
       ├── design CLI (Python) ── room model · scaled drawings · prompts · report   ← no AI at all
       │
       └── image backend ─── codex CLI  (free, quota-limited)   ┐ both default to
                          └─ OpenRouter (paid, ~$0.18/image)    ┘ the same model

Claude does the design thinking — reading your photographs, writing the specifications, and reviewing the results. It does not draw the plans and it does not generate the images. Geometry is computed; images come from a dedicated image model through whichever backend you choose.

Roomsmith vs. prompting an image model directly

Image model alone Roomsmith
Floor plans none scaled, dimensioned, drawn by code
Wall elevations none one per wall, square-on
Room dimensions respected no yes — geometry is computed, not generated
Invents doors and windows frequently cannot — the opening inventory is generated from the model
Keeps furniture you can't part with no must_appear, enforced and audited
Options genuinely different usually variations of one 4-of-7-axis difference rule
Justification per change none specification + reason + validation
Client report none PDF with survey, matrix and full spreads
Cost control none spend ceiling on real per-image cost

The agents

Agent Job
design-intake Interviews you. Asks the question most designers forget: is there anything here that cannot leave?
design-surveyor Reads every photo, counts the openings out loud, builds the measured room model
design-strategist Plans the direction set and proves each one is genuinely different
design-author Writes one direction: thesis, measured layout, every change justified
design-critic Read-only by design, so it reports root causes instead of patching one image
design-reporter Compiles the report and reads the PDF back to catch layout errors

Approval gates

Nothing expensive or irreversible happens without a decision. The tool refuses rather than asking twice.

briefroom-modeldirection-setpilotspendreport

./bin/design status
./bin/design approve room-model --note "measured on site"

Worked example

projects/study-terrace/ is the one project kept in the repository — a 3.4 × 3.8 m Victorian back bedroom becoming a full-time home office, carried end to end through every gate:

6 directions planned · 2 authored in full · 35 justified changes · 8-wall room model with a chimney breast · every approval gate signed

Client work is not committed. docs/EXAMPLE.md walks that example, and documents the seven mistakes a real 20-direction job took to get right — a missed window, a mirrored floor plan, a design whose own arithmetic was impossible — and how each one is now prevented structurally.

FAQ

What do I need to run it?

Python 3.9+ (no third-party packages), Chrome or Chromium, and one render backend. That's it.

How much does it cost?

A default report is free. The room template is 6 directions × 3 views = 18 images, and a free codex quota window fits about 45 — so it completes in one session with room to spare.

Beyond that, on OpenRouter it's $0.183 per image, measured over 29 billed renders:

Job Images Free backend Paid
Default report (6 × 3) 18 one session ~$3.30
One direction (6 views) 6 one session ~$1.10
Large set (20 × 6) 120 ~3 sessions, with pauses ~$22

design render tells you which of these you're in for before it starts. render.max_spend_usd is a hard ceiling enforced against the real per-image cost the API returns.

Can I test it without using quota or spending money?

Yes — ./bin/design render --dry. It builds every prompt, resolves every reference image and validates them, but calls no image model and writes nothing. It runs fine while a quota is exhausted, and catches the things that would otherwise burn quota to discover: a missing drawing, a photo named in the config but absent, a view with no camera, a spec with no scene.

Will it finish in one free session?

A codex quota window yields roughly 45–50 images before the limit, then resets in about 4–5 hours. Both shipped templates (18 and 20 images) fit inside one window. Anything above ~45 images will pause; ./bin/design render --wait sits out the reset and continues automatically, and finished views are always skipped so nothing is rendered twice.

Does it work for kitchens / bedrooms / offices / L-shaped rooms?

Yes. The room model takes rectangles, rectangles with alcoves, or arbitrary polygons with walls at any angle. Ships with room and kitchen templates; adding more is the easiest useful contribution.

Can I use my own image model?

Yes. A backend is one function in engine/render.py. Two ship: codex (free, via the Codex CLI's built-in image generation) and openrouter (paid, any model it hosts). Both default to the same model so a set rendered partly on each still looks like one document.

Is my room data private?

Client photographs and all generated output are gitignored by default. Only the brief, survey and design specs are committed — they regenerate everything else.

Do I need Claude Code?

For the agents, yes. The design CLI works standalone if you'd rather write the specs yourself.

Who it's for

  • Interior designers and architects producing option sets a client can choose between
  • Homeowners planning a renovation who want justified proposals, not mood boards
  • Anyone who needs measured drawings and photoreal visuals from a single source of truth

Not for you if you want one quick styling image with no dimensions — a general image model is faster for that. Roomsmith is also not a CAD package: it produces presentation drawings, not construction drawings, and every dimension read from a photograph is flagged for verification on site.

Documentation

SETUP Install and first run
USAGE Commands and recipes
WORKFLOW The full job, gate by gate
CONFIG Every project.yml option
AGENTS The team, handoffs, customising
ARCHITECTURE How it works and why
TROUBLESHOOTING When something goes wrong
FAQ Short answers to the common questions
EXAMPLE The worked 20-direction job

Requirements

Python 3.9+ · Chrome or Chromium · one render backend (Codex CLI free, or an OpenRouter key)

Contributing

New room templates, render backends, drawing types and validation rules are all welcome — see CONTRIBUTING.md.

Licence

MIT — see LICENSE.


Roomsmith — AI interior design agent · AI room design · AI floor plan generator · architectural drawings from photos · interior design automation · Claude Code agents

About

Open-source AI interior design agent. Turn room photos into scaled floor plans, wall elevations, photoreal renders and a design report where every change is justified. Runs as a team of agents in Claude Code.

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages