Massing — open AEC platform Open · self-hosted · IFC-native

The whole building lifecycle,
on one model.

Feasibility, design, construction, turnover and operations — on one open IFC model. Author it in the browser, issue the drawings, run the job, hand over verified as-built data. No proprietary format. No per-seat licence. Runs offline.

Making the most powerful thing in AEC feel like the simplest.

No account, no sign-up. The desktop app opens a real IFC in minutes; the browser demo runs the viewer with no backend at all on bundled sample models.

40–48%of construction rework is information-driven — miscommunication and bad data, not workmanship
$31.3Bdirect US rework cost per year, tear-out and rebuild alone
1open model instead of six tools converting between formats at every seam
$0to run it — open source, self-hostable, no seat licence

Rework figures: Construction Industry Institute (cause ranking, IR-153) and published US aggregate. Full capability list → · Guides · What's shipped · Run the full stack · GitHub

Four people, four clocks — one model

A developer checking whether it pencils and a superintendent logging a punch item in the sun are not the same user with different permissions. They are different products that happen to share a model. Massing routes to the ten things you touch today, and keeps the rest one keystroke away — deferred, not deleted.

DEVELOPERDoes it pencil, by Friday? Zoning → scheme → returns. One number, and the chain back to the slab it came from.
ARCHITECT / ENGINEERIs the model clean and issued? Model, IDS and clash, drawing set. Density, keyboard, and an undo you trust.
GC / PROJECT MANAGERWhat's in my court today? RFIs, submittals, change orders, pay apps — as a queue, not a catalog.
SUPERINTENDENTLog it before I forget it. Photo → punch or observation. Three taps, one thumb, offline, with a visible queue.

Why this shapes the product: 47% of contractors name getting people to use new technology their single biggest challenge — ahead of cost or integration (AGC, 2024) — and 12% of features drive 80% of daily use across 615 measured subscriptions (Pendo, 2019). Deferring advanced features rather than deleting them measures 30–50% faster first-task completion (Nielsen Norman Group). The full design audit →

The live demo — an IFC viewer & model checker, in your browser

The live demo doubles as a standalone openBIM viewer — no signup, no install, no upload: small IFC files parse right in the browser (web-ifc/WASM), so your model never leaves your machine.

Open your IFC

Model workspace → Open ▾ → pick your .ifc (or a bundled sample tower). Orbit, section, measure, isolate — and click any element for its full property sets, type, and quantities.

Check the model

Read-only model QA on what you opened: class/storey breakdown, property coverage, georeferencing sanity — the honest first look before a model goes into coordination.

When you outgrow viewing

The same app authors: blank IFC → walls, steel, MEP, drawings, code pre-check, 5D. Download the free desktop app or run the full stack — same viewer, whole platform.

Open the live demo →

Download

Free single-project desktop app — the whole platform in one offline install (no Docker, no login). Pick your platform; each opens the latest release. Builds are currently unsigned, so Windows SmartScreen / macOS Gatekeeper may warn on first launch.

All releases & checksums: github.com/ibuilder/massing/releases. Prefer the server stack? Run it with Docker ↓

Three pillars, one model

Acquisition & design · construction · development finance — all reading and writing the same IFC file, so a design change re-forecasts the deal and a field verification lands on the same element the estimator priced.

Seven rooms, the same seven for everyone

The app is organised into Deal · Design · Planning · Schedule · Cost · Work · Operate — one structure for every role, rather than a different rail per persona. A register lives in exactly one room, so what you learn in one transfers to the next; Work is simply whatever is in your court right now; and Operate is the asset in service, where it spends most of its life.

Six numbers that cannot disagree

A vitals strip runs along the bottom of every room — LOD · area · $/ft² · float · IRR · health — computed from the one model. That is the point of a single source of truth: two rooms cannot quote different figures, because there is only one set. And where it cannot compute a value it shows an em-dash and the reason, never a zero — a figure with a missing denominator is not a figure, and a confident wrong number is worse than an absent one, because a blank gets chased and a number gets cited.

See the full capability list →

Run it

The platform is a web app + services stack, run with Docker. It's an installable PWA, and ships as signed Tauri 2 desktop installers (Win/macOS/Linux) with auto-update — see Download; mobile is on the roadmap.

  1. Install Docker Desktop (Windows/macOS/Linux) and git.
  2. Clone the repo and start the stack — first build pulls the toolchain, so give it a few minutes.
  3. Open http://localhost:8080. Optionally seed a demo project.
# 1. get the code
git clone https://github.com/ibuilder/massing.git && cd Massing

# 2. configure (set strong secrets + AEC_RBAC=1 for anything but local dev)
cp .env.example .env

# 3. build + run the whole stack (web, API, Postgres, MinIO)
docker compose --profile full up --build       # → web http://localhost:8080

# 4. (optional) fill a demo project across all relation chains
docker compose --profile full --profile seed run --rm seed
The web container reverse-proxies /api to the API (same-origin, no CORS), serves the viewer with the cross-origin isolation web-ifc needs, and persists Postgres / MinIO / IFC volumes. Every config knob is documented in .env.example.

Requirements

OSWindows / macOS / Linux (anything Docker runs on)
DockerDocker Desktop / Engine 24+ with Compose v2
Ports8080 (web), 8000 (API), 5432 (Postgres), 9000/9001 (MinIO)
BrowserA current Chromium/Firefox/Safari (WebGL2 + WASM)

Developer setup

Run the web viewer and API directly for hacking on the code.

# web viewer (offline; copies WASM automatically)
cd apps/web && npm install && npm run dev          # http://localhost:5173

# backend API (Python 3.11+ preferred)
cd services/api && python -m venv .venv && .venv/Scripts/activate
pip install -r requirements.txt -r requirements-dev.txt
PYTHONPATH=src uvicorn aec_api.main:app --reload    # http://localhost:8000

# run the test gate
python services/api/run_tests.py

Full docs in the repo: the README, GC portal, and platform roadmap.