Open Editable BIM Format
← Back to OverviewA path-first, human-readable building model format designed for direct editing by people and language models alike. All geometry is stored as plain JSON — paths, profiles, elements, junctions — in a structured directory bundle.
Inspect OEBF bundles and compressed archives in 3D. Includes a sample model you can load immediately.
.oebf folder (Chrome/Edge) or .oebfz file (all browsers)
Draw walls and slabs, manage storeys, add reference grids and guides.
Saves directly to an .oebf folder or downloads as a
.oebfz archive.
.oebf folder or .oebfz fileEdit the cross-sections that walls and slabs are swept from: the layers, their materials and thicknesses, and the origin the path runs through.
.oebf folder (Chrome/Edge), or use View profiles in the viewerView junction details as axonometric drawings: the swept wall profiles plus each detail's own regions, with the junctions that use it.
Draw and edit junction details: regions, members from profiles, repeating units, annotations, plan and section views, and small multi-part objects such as wall ties.
Every wall, path, profile, junction, and storey is a separate JSON file. No binary, no proprietary encoding — open a bundle in any text editor.
All solid geometry derives from sweeping a cross-section profile along a polyline path. Junctions and slabs are first-class entities, not auto-computed.
Bundles live as a plain .oebf directory for editing, or are
compressed to a single .oebfz file (Zstd) for sharing.
One small model, the example terraced house (four walls, a slab, a door, 24 wall ties, five junctions and a
corner detail), written both ways. Token counts use the cl100k_base tokeniser as a stand-in for a
language model's; other models count differently.
The OEBF bundle's data is 33 files and about 8,300 tokens. The same model as plain IFC, with no OEBF records, is 911 lines and about 18,600 tokens, 2.2 times as many. OEBF's own IFC export, which also carries the records needed to round-trip, is about 30,500.
A wall is two small files, the element and its path: 350 tokens. In IFC the same wall's placement and shape are 19 linked entities reached by following numeric references, before its materials and properties.
In OEBF, the wall's length is two points in its path file, so lengthening a wall changes one line. In IFC the length is held twice, as the start point and as the extrusion depth, in different entities.
Every entity has a JSON Schema and oebf validate reports broken references and missing files by
name. oebf apply runs a file of commands on a copy and writes back only if the result validates.
What this does not show. It is one small model and one edit, and it measures tokens, not how fast or how accurately a language model makes changes: that has not been tested. The OEBF count leaves out the guide a model should read first (about 9,800 tokens, read once) and the schemas. The formats also do not hold the same things: OEBF stores paths, profiles and the relations between them, and derives the geometry; IFC stores far more semantics than OEBF reads. The comparison is of equal content, not equal capability. Method and issue: #128.
A Python CLI converts between IFC4 and OEBF bundles. Walls, slabs, openings, doors, windows, storeys and material layer sets are mapped to OEBF entities and back, and an OEBF export imports again with every file restored. IFC from other tools is read for wall axes (including curved and multi-segment), build-ups and property sets. Some shapes are not read yet: see the issue list.
Convert an IFC4 file to an OEBF bundle. Walls, slabs, openings, doors, windows, storeys and material layer sets are mapped to OEBF entities.
Point a language model at the bundle directory. Because files are plain JSON, the model can read, modify, and write entities directly — changing geometry, profiles, or metadata with natural-language instructions.
Convert the modified OEBF bundle back to IFC. The result opens in Revit, FreeCAD, BIMvision, or any IFC-compatible viewer.
uv run oebf ifc-import model.ifc --output my-model.oebf
uv run oebf ifc-export my-model.oebf --output model-out.ifc
Requires Python 3.12+ and uv.
Run uv sync in ifc-tools/ to install dependencies.
Full setup instructions and entity mapping are in the
ifc-tools README.
A browser-based IFC converter is planned — no local Python install required. Possible approaches include a WASM build of IfcOpenShell or a lightweight server-side conversion endpoint.