BIM OpenToolkit

Get schedules, checks, charts, and 3D views out of a building model, without a vendor's API.

BIM Open Toolkit stores a model as plain tables (BIM Open Schema, or BOS) and turns each question about those tables into a small graph you can inspect and run again. A person and an AI agent build the graph with the same four edits, so an agent's answer arrives with the steps that produced it.

124 node kinds48 sample graphsIFC and Revit in, Excel, Parquet, and DuckDB outMIT licence

Try it in the browser

Both demos run entirely in the page. Nothing is installed or uploaded.

Five ways in

One graph system, shown to five kinds of people. Each context is a profile of node packs, a page that says who it is for, and a handful of sample graphs over openly licensed buildings. The same graphs run by hand in the editor and by Claude through the MCP servers. The plan is docs/proposals/demo-contexts.md.

Analysis

for an analyst with a question

A table and a chart, with the query that made them one click away. Door schedules, rooms per storey, missing widths, source lineage.

Today: nine query graphs and an Ask box in the DuckDB studio, over a private model. Next: the same over Schependomlaan and DigitalHub (TKT-165).

3D

for a coordinator reviewing a model

A model coloured, sectioned, exploded, or ghosted by a query result, in the same pane the editor uses.

Today: eight 3D graphs over the Duplex and a seven-recipe lab. Next: both over a public building, every recipe a graph (TKT-166).

Checking

for a manager auditing a delivery

Rules as graphs: verdict tables, the model coloured by verdict, and an evidence report that names every input by hash.

Today: one door-width check from IFC to verdicts, 3D, chart, and report. Next: three checks over a public building (TKT-167).

Pipelines

for an engineer feeding other systems

IFC, BOS, DuckDB, Parquet, CSV, and XLSX in and out. Nothing writes until Run, and the run record says what was written.

Today: readers for every format; writers wait on Run from the editor. Next: four conversion graphs that run (TKT-168).

Research

for a researcher reproducing a result

A published paper's eight answers computed by graphs, each run pinned by content hash, and the IFC written back byte-exact.

Today: the NRC walkthrough and its page. Next: presented as one reproducibility demo (TKT-169).

The repositories

The toolkit is being split into one repository per product. A product marked moving has its repository and README, but its code is still inside the toolkit at the path given.

BIM OpenViewer

ara3d/bim-open-viewer

Draws building models in the browser with three.js: hundreds of thousands of instances, per-object colour, sections, exploded layouts, and picking. Reads BOS, BFAST, GLB, GLTF, OBJ, and STL.

Split out 2026-10-03; 17 npm packages.

BIM OpenNotebook

ara3d/bim-open-notebook

A session with an AI agent kept as a document. Every result keeps a snapshot, and one backed by a graph can be evaluated again to show whether it changed.

Split out 2026-10-04; the notebook and the 3D pane, in two npm packages.

BIM OpenFlow

ara3d/bim-open-flow

The graph system: node packs over tables, a headless host that evaluates graphs and records runs, the web editor, and an MCP server so an agent edits the graph a person sees.

Moving in phase 5. Code in src/flow and bimopenflow/web.

BIM OpenData

ara3d/bim-open-data

BIM Open Schema and IFC in .NET: read and write BOS, load and mesh IFC, convert IFC to BOS and DuckDB, and edit property sets without changing any other byte of the file.

Moving in phase 4, under way. Code in src/data and apps/.

BIM OpenToolkit

ara3d/bim-open-toolkit

The hub and the analyst application: the studio, the node packs that know about buildings, the samples over real models, the headless checks, and the NRC research work.

Hub. Holds every product not yet split out; phase 7 makes it the single entry point.

BIM OpenPlot

ara3d/bim-open-plot

The figure layer: charts, drawings coloured by data, and composed figures from result tables, for the notebook, the studio, and reports.

New on 2026-10-11, not split out. Brand, a brief, and a demo page of 34 figures; no library yet. Charts still come from Flow's viz package.

BIM OpenSchema

ara3d/bim-open-schema

The specification: five dependency-free C# files that define the BOS tables (entities, parameters, relations, geometry) stored as Parquet. No reader, writer, or converter.

Separate from the start.

Where the split stands on 2026-10-03: phases 0 to 2 of 7 done
PhaseStepState
0Clear stale ticket claims and stray filesDone
1Take Gratify through deps/ instead of a submoduleDone
2Split out the viewerDone
3Let the host and editor take node packs and panes from whoever composes themNext
4Move src/data to bim-open-dataUnder way
5Move the graph system to bim-open-flowNot started
6Move the notebook to bim-open-notebookNot started
7Make the toolkit the entry point; tag the first combination that passes every checkNot started

How the pieces fit

A model enters as an IFC file, or as a BOS file exported from Revit. Each layer below builds on the ones under it; the bottom row is general libraries that know nothing about buildings.

  1. bim-open-toolkit The analyst application: studio, BIM node packs, samples, checks. uses every product below
  2. bim-open-notebook Keeps a session with an agent as a document of graphs, tables, and views. uses flow, viewer
  3. bim-open-flow Turns a question into a graph of small nodes; nothing writes a file until an explicit Run, which records every input by content hash. uses ara3d-dataflow, gratify
    bim-open-viewer Draws the model; a graph's output colours it. uses gratify
    bim-open-data Reads IFC and BOS, converts to BOS, loads DuckDB, writes property sets back. uses bim-open-schema, ara3d-sdk
  4. ara3d-dataflowspecified graph engine
    gratifycanvas UI library
    bim-open-schemathe BOS specification
    ara3d-sdk.NET utilities

Each repository lists what it needs in deps.json and reads it only from its own deps/ folder. node deps.mjs fills that folder with a link to a sibling checkout or a clone at the pinned commit, so one checkout never holds two copies of a repository.

Run it yourself

Needs Windows, the .NET 8 SDK, Node.js 20.19 or 22.12 and later, and Git. This path ends at a table graph in the editor over committed sample tables; no private model is needed.

  1. Clone and fetch the dependencies
    git clone --recursive https://github.com/ara3d/bim-open-toolkit
    cd bim-open-toolkit
    node deps.mjs
  2. Check prerequisites and install the editor
    node scripts/preflight.mjs
    npm ci --prefix bimopenflow/web
  3. Build and start the host and the editor
    node scripts/start-bim-flow.mjs --profile tables

    Builds the host, starts it on port 5224 and the editor on 5310, and waits until both answer. Open http://127.0.0.1:5310/ and choose a sample analysis. --stop ends both.

The 3D, DuckDB, and Ask demos over the Snowdon Towers model need a private copy of that model; docs/START.md and docs/DEMOS.md list every demo and what it needs.