English · Nederlands
Structural calculations you can read back: every result shows its formula, numbers and units, and all your sheets end up in one report.
Open CalcSheet Studio is a desktop app for structural engineers. You write a calculation as text, line by line, and the app works it out with units, in readable formulas. Next to those calculation sheets, a project can hold spreadsheets, formula canvases, node graphs, drawings, Jupyter notebooks, Markdown and PDF files. Together they become one report.
It runs on Windows, macOS and Linux. It is under active development: see Current limitations.
Download the app, open it and choose Module, then Timber joist floor. Change the section or the span and watch the unity check follow. Then open Print preview to see the sheet on paper.
Get the latest release. The nightly build is made from main every day.
| Platform | Installer |
|---|---|
| Windows | .exe installer (x64), for all users or for one user |
| macOS | .dmg (universal: Apple silicon and Intel) |
| Linux | .deb, .AppImage |
The app has no built-in updater: install a new version over the old one. Your projects are ordinary files and stay where they are.
The release workflow refuses to publish files that are not signed: Windows with Authenticode, macOS with a Developer ID and notarized by Apple, Linux with a separate OpenPGP signature (.asc). SHA256SUMS.txt lists every file. See how to verify a download.
- Free and open. LGPL-3.0. No licence fees, no account.
- You can check every step. A result shows its name, formula, filled-in values and outcome, with units.
- Metric or US units. Pick a unit system per project: SI (mm), SI (m), US customary, or your own unit for each quantity. Results, input fields, drawings and the report follow it, and the checks stay exactly the same. Define your own units too, such as
.kipf = 1000 lbf. - One project, one report. Cover, table of contents and page numbers run through all sheets, whatever kind they are, and an optional site-location page shows OpenStreetMap maps of the project site. The side panel shows the contents and all numbers as you work.
- The right sheet for each part. Text, canvas, spreadsheet, node graph, drawing, notebook, Markdown or PDF, side by side in one project.
- Change a number, the check follows. Sheets recalculate while you type, and a drawing or a 3D model can take its sizes from the sheet.
- Your data stays open. The project file is IFCX, and you can export IFC4x3.
- Works with an AI assistant. A built-in MCP server and REST API run on your own computer, behind a token.
Open CalcSheet Studio is hugely inspired by Calcpad by Ned Ganchovski; that idea is what led to this app. You write a calculation as plain text and read back every step worked out, and we are grateful for it. The app has its own calculation kernel and also opens your .cpd files. The open-source line of Calcpad continues in the community edition CalcpadCE.
A project is a list of sheets. Each kind has a chapter in the sheet kinds documentation.
| Sheet | What it is |
|---|---|
| Calculation sheet | Text in the calculation language, with formulas, conditions, plots and drawings |
| Spreadsheet | An .xlsx workbook with formulas, cell pointing, fill and page edges |
| Canvas | Formula units placed freely, calculated top to bottom with the same kernel |
| Graph | Nodes for numbers, logic, lists, text and geometry, and code blocks, with a 3D preview. Reads graph files (.dyn) |
| Drawing | A4, A3 or A2 with views to scale: grids, levels, walls, steel sections, hollow-core floors and schemes |
| Jupyter | A notebook with Python, numpy, scipy, pandas and matplotlib, without installing anything. Optionally it runs again after every change |
| Marimo | A reactive Python notebook: move a slider and everything that depends on it follows |
| An existing PDF as part of the report. Zoom in, and add notes, highlights, arrows, boxes and revision clouds, on screen and on paper | |
| Markdown | Existing text, as part of the report |
Modules are ready-made sheets with an input screen: a timber joist floor and a beam in timber or steel to EN 1995-1-1 and EN 1993-1-1, and a two-pile cap to EN 1992-1-1, with the Dutch national annex. The online module library can add modules without a new release; so far it holds the floor. See how the floor check works and the pile cap check.
The two-pile cap has a 3D study model next to its drawing. It shows the cap, the piles, the column and every bar, and follows each field and blue dimension at once. Add module shows a picture for every choice, from a blank drawing to a Marimo notebook.
Section stresses is mechanics, not a code check: choose an I or H section, rectangle, circle, tube, box, T or U, set the axial force, moments and shear forces in two directions, and see the stress field in the section, the neutral axis and the diagrams of σ and τ follow at once. See what the sheet calculates.
The formula library holds 137 formulas you can insert with a click, each with a sketch that shows what it is about. The beams and section properties also bring a drawing into the sheet that follows your input: the moment diagram to scale, or the section to scale with its dimensions. The library in the project panel adds 15 worked examples from the Eurocodes and classical mechanics. Those examples are not in the installer: the app fetches them from this repository when it starts, so a correction reaches everyone without a new release. The examples guard their own limits: required reinforcement warns when a section is over-reinforced or the bars do not fit, and the links example keeps cot θ within its limits and checks spacing and minimum reinforcement.
The weights library holds over 2,300 self-weights, each with a source you can open: materials, soil and storage from open codes, and per supplier hollow-core slabs, composite decks, masonry, plasterboard partitions, roof tiles, green roofs and facade panels. Search and filter it, insert a value into a build-up with one click, and keep your own library as a .weightlibrary file to extend, merge and share. A report keeps the numbers, so it does not change when the library does.
A worked example from the library |
Two-pile cap with drawing and 3D study model |
Formula library with a sketch per formula |
Add module, with a picture for every choice |
| Format | Open | Save / export |
|---|---|---|
IFCX (.ifccalculation, .ifcx) |
Yes | Yes, this is the project file |
IFC4x3 (.ifc) |
No | Yes |
Calculation text (.cpd) |
Yes | No, it is saved as the project file |
Spreadsheet (.xlsx) |
Yes | Yes |
Markdown (.md) |
Yes | Yes |
Notebook (.ipynb, .py, data files) |
Yes | The work folder as .zip |
| As a sheet | Yes, the report | |
| DXF | Converted to a drawing in a sheet | No |
Every sheet with its text, input and results is in the IFCX file. Drawings that a module's input screen draws are not stored as figures, only what the calculation text draws itself. The two-pile cap does add its 3D model: in IFC4x3 every bar of the cage is an IfcReinforcingBar. Most sheets do not know where their part sits in the building, so elements without geometry are placed at the origin of the storey. See the IFC documentation.
The app has a built-in MCP server and a REST API with the same 43 tools: open and save projects, add sheets, set input, calculate, export and print. It only listens on your own computer (127.0.0.1), behind a token. You can switch it off, make it read-only or pause it under Settings › API and AI assistant. See the MCP documentation and the REST API.
- 72 check scripts in
scripts/, run withnpm run checkon every pull request, on Linux and on Windows. - 382 results against hand calculations: 313 in
scripts/check-formules.mjsand 69 inscripts/check-library.mjs, the latter where possible along another route, such as checking equilibrium. - A real PDF of a mixed project in
scripts/check-rapport-pdf.mjs: as many pages as sheets of paper, every page its number, and every line of the table of contents on the right page. - Security checks in the real app, run by hand:
scripts/proef-js-webrtc.mjsfor scripts in a sheet, andscripts/proef-jupyter-venster.mjsandscripts/proef-marimo-venster.mjsfor notebooks. They use a listening post to count what gets out. - Builds on all three platforms on every push to
main, with the signatures checked.
Count sources: the files named above and ls scripts/check-*.mjs. A module status tells you how far its check has gone: calibrated is compared against reference sheets, to be checked is not yet.
- The weights library is not complete. It holds what could be found with a source. Several large suppliers publish no readable weights and are missing, and sheets get replaced: check the sheet of the product you actually use.
- Check the results yourself. The beam, the two-pile cap and section stresses have the status to be checked. The app does not replace the judgment of a structural engineer.
- Jupyter and Marimo are only tested on Windows. On macOS and Linux the sheet will probably not start a kernel, because the webview there limits service workers. Saved files and printing do work.
- Notebooks have no network.
%pip installdoes not work, and libraries that rely on JavaScript in their output (plotly, bokeh, ipywidgets) show nothing. That is a deliberate choice for now. - A running cell cannot be stopped. Marimo also has no SQL cells and follows the dark or light theme only when it loads.
- Fonts are not embedded in the project. Apart from Inter and Space Grotesk, a font in your house style must be installed on the computer that prints.
- The library needs internet the first time. Without a connection it stays empty until it has been fetched once. After that it uses the last version.
- A graph file is not always complete. Nodes this app does not have, scripts and most geometry stay on the graph with a message and do not calculate.
- Spreadsheet values do not reach calculation sheets yet. A spreadsheet stands on its own for now.
- No feet-and-inches with fractions yet. You cannot type or show 5'-6 ½" yet, and temperatures stay in the unit of the sheet. Explanatory notes that quote values from a standard, the weights library and the drawings a sheet makes itself also keep their own units.
- Report straight to PDF is Windows only. Other platforms use the print dialog.
- Some text stays in Dutch for now. The app, the sheets, the Code tab and the report follow your language, but the variable names in the modules and some names in the IFC tree are Dutch.
- Page breaks can differ slightly between screen scales. At 100% and 150% a few lines can move to another page.
- No WebRTC in the app. It is blocked everywhere, so an external page in
@iframethat needs it will not work. - Open FEM Studio projects are not there yet. The menu item is visible but disabled.
Found something? Open an issue.
The calculation kernel (packages/core) is TypeScript on mathjs and also works as a package without the app. The app is a Tauri 2 shell in Rust with React 19, CodeMirror 6 and KaTeX; notebooks run on JupyterLite and Pyodide. The shared look and icons come from OpenAEC Blueprint.
- Try it on a real project and report bugs or missing features as an issue. Describe what you did, what you expected and what happened.
- Correct an example. The library is plain text; see how to fix one.
- Write code. Read AGENTS.md and the developer notes, and open a pull request.
git clone https://github.com/OpenAEC-Foundation/Open-CalcSheet-Studio.git
cd Open-CalcSheet-Studio
npm ci
npm run tauri:dev --workspace=@openaec/calcsheet-studioRequires Node 24 and Rust, plus Python 3.10 or newer once to build the Jupyter environment. npm run dev starts a browser preview that does not need Rust. See the developer notes. The images in this README come from scripts/maak-readme-beelden.mjs.
Versions follow the OpenAEC scheme YYYY.W.N: year, ISO week without a leading zero, and a number within the week that starts at 0, such as 2026.45.0.
Open CalcSheet Studio is part of the OpenAEC Foundation family of apps.
LGPL-3.0. See LICENSE. The Python environment for Jupyter and Marimo ships software under its own licences (BSD, MIT, MPL-2.0, PSF): see its licence list.
Jupyter, Marimo, Windows, macOS and other product names are trademarks of their owners. Open CalcSheet Studio is an independent project and is not affiliated with, endorsed by or sponsored by them.














