Open your On-Screen Takeoff projects and review them in 2D plan view. Upgrade to visualize in 3D, edit conditions, and export to DXF, PDF, and OBJ.
Built for estimators and construction teams who work with OST project files daily.
Download | Commercial License | Release Notes
- 2D Plan View -- Interactive view with annotations overlaid on project pages, including detached Annotation and View windows
- PDF Plan Sheets -- View PDF drawings at any scale
- Multi-database -- Open and browse multiple project files at the same time
- Bid Organization -- Full project hierarchy for navigating bids and conditions
- 3D Visualization -- See takeoff geometry rendered in full 3D with transparent overlays (Commercial)
- Import/Export -- Move data between OST, OSP, PDF, DXF, OBJ, and FBX formats (Commercial)
- Condition Management -- Create, edit, duplicate, and organize conditions across bids (Commercial)
- Realtime Sync -- Detects when On-Screen Takeoff is active and picks up changes automatically (free companion tool)
Download the latest installer from the download page:
ost3dvisualizer-1.2.3-64.msi-- Windows 64-bit installer (Windows 10+)
A commercial license is required for production use. See Licensing.
This software is source-available under the Elastic License 2.0.
| Free (Viewer) | Commercial License | |
|---|---|---|
| Open and browse projects | Included | Included |
| 2D plan view (read-only) | Included | Included |
| 3D visualization | -- | Included |
| Edit takeoffs, conditions, bids | -- | Included |
| Import/Export (PDF, DXF, OBJ, FBX) | -- | Included |
| Production use | -- | Included |
| Support | Community | Email (fabian@fabianhad.com) |
| Price | Free | Get a license |
- View source code -- Read, study, and learn from the codebase
- Contribute -- Submit pull requests and improvements
- Non-production use -- Run the software for development, testing, and personal evaluation
- Production use with a license -- Use all features in commercial environments with a valid license key
- Circumvent the license key -- You may not disable, remove, or bypass license key functionality
- Offer as a hosted service -- You may not provide the software to third parties as a managed service
- Remove notices -- You may not alter or remove licensing or copyright notices
A commercial license unlocks 3D visualization, editing, and import/export for production use. One license key per machine.
For licensing questions, contact fabian@fabianhad.com.
- Estimators reviewing On-Screen Takeoff projects visually before bidding
- Project managers inspecting bid scope across multiple databases
- Construction teams working with takeoff data in 2D and 3D
| Component | Technology |
|---|---|
| UI | PySide6 (Qt 6.10.2) |
| Language | Python 3.8+, C++17 |
| 3D Rendering | OpenGL via custom C++ renderer |
| Geometry | Manifold, Earcut |
| PDFium, QPDF | |
| Database | Microsoft Access (.mdb) via pyodbc |
| Build | Nuitka, CMake |
| C++ Bindings | nanobind v2.4.0 (13 extension modules) |
| Local AI Context | Model Context Protocol via stdlib stdio helper |
OST Visualizer includes an optional read-only local MCP server for MCP-compatible
clients such as Claude Desktop, Cursor, and Codex. It runs as a separate stdio
process and exposes only checked .mdb databases from
~/.ost_visualizer/file_state.json. The desktop GUI does not start the stdio
server; it only provides a live-context bridge when the app is running.
The MCP server exposes project, bid, page, area, PDF metadata, condition,
takeoff, condition summary, selected-page summary, selected-takeoff summary,
search, quantity-summary, page-context, duplicate-condition, zero-quantity,
unplaced takeoff, and lightweight scope-gap review tools. Broad result sets use explicit
limits and include status/metadata such as returned count and truncation state.
It does not support --database, arbitrary database paths, shell execution,
arbitrary SQL, arbitrary file reads, PDF rendering/text extraction, OCR, page
text, exports, CSV, or database mutation.
When the desktop app is running, get_current_context also includes a live
read-only UI snapshot through a local app bridge, including active tab/view,
selected bid/page/conditions, and selected takeoff UIDs.
Developers can run the source checkout MCP helper directly:
.\venv\Scripts\python.exe -m ost_visualizer.mcp_server.mainClaude Desktop / Cursor style configuration:
{
"mcpServers": {
"ost-visualizer": {
"command": "C:\\path\\to\\OSTVisualizerLicense\\venv\\Scripts\\python.exe",
"args": ["-m", "ost_visualizer.mcp_server.main"],
"env": {
"PYTHONPATH": "C:\\path\\to\\OSTVisualizerLicense"
}
}
}
}The MCP server uses an internal stdlib stdio implementation. There is no
separate MCP dependency install or extra MCP setup step. Production builds
include a lightweight ostv-mcp.exe helper. Use Tools > Options... > MCP Setup
in the desktop app to copy client configuration for the packaged helper. The
setup tab only generates and copies text; it does not edit Claude Desktop,
Cursor, or Codex configuration files. After adding the configuration, restart or
reload your MCP client so it launches the helper:
{
"mcpServers": {
"ost-visualizer": {
"command": "C:\\Program Files\\OST Visualizer\\ostv-mcp.exe",
"args": []
}
}
}Codex production setup uses the helper directly:
codex mcp add ost-visualizer -- 'C:\Program Files\OST Visualizer\ostv-mcp.exe'If a client reports that the server is unavailable, confirm that
C:\Program Files\OST Visualizer\ostv-mcp.exe exists and that at least one
database is checked in OST Visualizer. The checked database list is stored in
~/.ost_visualizer/file_state.json; unchecked or missing databases are not
visible to MCP clients.
This repository is the desktop client checkout:
- Client root: repository root
- App package:
ost_visualizer - Entry point:
Visualizer.py - MCP entry point:
McpServer.py - License server implementation: outside this client checkout
Run client setup, development, architecture, and build commands from the repository root.
Requires Python 3.8+, Visual Studio 2022 (MSVC x64), CMake 3.20+, and Qt 6.10.2.
.\scripts\setup.ps1 # Create venv, install Python dependencies
.\scripts\setup-cpp.ps1 # Download vendor libs, build C++ extensions
.\scripts\run.ps1 # Run the applicationFor release builds:
New-Item -ItemType Directory -Force .secrets
# Copy your license_public_key.pem into .secrets\license_public_key.pem first.
.\scripts\build.ps1 # Nuitka standalone builds -> dist_visualizer/ and dist_mcp/
.\build-msi.ps1 # Package into MSI installerContributions are welcome under the Elastic License 2.0. By submitting a pull request, you agree that your contribution will be licensed under the same terms.
Architecture rules, conventions, and development setup are documented in AGENTS.md. Read it before making changes. Architecture checks run automatically via pre-commit hook and CI:
python tools/check_architecture.pyTests may require the client virtual environment with PySide6 and native-extension prerequisites installed.