selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

OpenTakeoff logo

Self-host OpenTakeoff

mcp-v0.9.100

AI-native construction takeoff engine for PDF plans

BetaOpen SourceAGPL-3.0
Updated8 hours ago
LanguageTypescript
Setup difficultyModerate
Stars
712
Install with Docker
One-Click Area on a real finish plan: one click inside a patient room and the whole room traces itself wall to wallAI agent in terminal running takeoff over MCP, exporting to web app as dashed pencil proposals

What is OpenTakeoff?

OpenTakeoff is a construction takeoff engine for measuring quantities from PDF building plans. It provides two interfaces sharing the same geometry and quantity engine: a browser canvas for human estimators and an MCP server for AI agents. Estimators drag in PDF plans or ZIP plan sets, set scale per sheet, trace rooms and finishes, and export CSV, Excel, marked-up PDF, and DXF. The MCP server (opentakeoff-mcp) exposes 58 tools over stdio for agents to load plans, set scale, measure polygons, derive base and transitions, sweep symbols, and export marked plansets. Every measurement records its scale, method, and authorship for full provenance. Agent work lands as dashed pencil proposals until a human approves it. The app is client-only with no backend, no account, and no uploads. Self-hosting is done by building the static web/dist and serving it from any static host, with a noted MIME-type fix for .mjs files. The MCP server runs via npx, Docker, or as an MCPB bundle for Claude Desktop.

Should you self-host OpenTakeoff?

OpenTakeoff scores 56/100 on selfhost.directory (how scoring works) and ranks #22 of 45 in Project Management. It has 712 GitHub stars.

It shipped 9 stable releases in the past year. The latest, mcp-v0.9.100, came out on 25 October 2026. New versions land roughly every 4 days.

Setup is moderate: expect some configuration beyond a single command. It is AGPL-3.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Plane (86/100, 61 588 stars). It scores higher overall, so compare the two before you pick. See OpenTakeoff vs Plane side by side.

Features

  • Browser canvas
  • Human review workflow
  • Markups and annotations
  • Microsoft 365 annotation syncExperimental, engine-proven but tenant-unproven
  • Multi-format exports
  • PDF takeoff measurement
  • Provenance tracking
  • Revision History
  • Roll goods seam layout
  • Schedule import
  • Stitched sheetsHuman-only in canvas; not exposed via MCP
  • Symbol sweep
  • Transitions derivationWall-separated transitions withheld as questions since doorway location unknown
  • Voice takeoffGated off by default; enable with VITE_COMMAND_BOX=1

OpenTakeoff README

How to install OpenTakeoff

Install OpenTakeoff with Docker

Docker
Environment variables
OPENTAKEOFF_ONE_CLICK=1, OPENTAKEOFF_MCP_STAGED_TOOLS=1, OPENTAKEOFF_MCP_TRACE=1

docker build -f mcp/Dockerfile -t opentakeoff-mcp . docker run --rm -i opentakeoff-mcp

Mount plans: docker run --rm -i -v "$PWD/demo:/plans:ro" opentakeoff-mcp

Builds from repository root to bundle shared web engine

How to configure OpenTakeoff

  • OPENTAKEOFF_MCP_STAGED_TOOLSEnable staged tool exposure for MCP server (only setup tools enabled by default)

    Enable staged tool exposure for MCP server (only setup tools enabled by default)

    values: 1

  • OPENTAKEOFF_MCP_TRACEEnable structured stderr tracing for MCP tool calls

    Enable structured stderr tracing for MCP tool calls

    values: 1

  • OPENTAKEOFF_ONE_CLICKEnable one_click and detect_rooms MCP tools (default: gated off)

    Enable one_click and detect_rooms MCP tools (default: gated off)

    values: 1

  • VITE_CLOUD_SYNCEnable local-first sync to Google Drive

    Enable local-first sync to Google Drive

    values: 1

  • VITE_COMMAND_BOXEnable voice takeoff command box (default: gated off)

    Enable voice takeoff command box (default: gated off)

    values: 1

  • VITE_GRAPH_DRIVE_IDMicrosoft Graph drive ID for SharePoint/OneDrive library

    Microsoft Graph drive ID for SharePoint/OneDrive library

  • VITE_GRAPH_FOLDER_IDrootMicrosoft Graph folder item ID (default: root)

    Microsoft Graph folder item ID (default: root)

  • VITE_MSAL_CLIENT_IDMicrosoft Entra app registration client ID for Microsoft 365 annotation sync

    Microsoft Entra app registration client ID for Microsoft 365 annotation sync

  • VITE_MSAL_TENANTorganizationsMicrosoft Entra tenant ID or domain (default: organizations)

    Microsoft Entra tenant ID or domain (default: organizations)

    values: organizations, consumers, common

  • VITE_ONE_CLICKEnable One-Click Area tool in the canvas (default: gated off)

    Enable One-Click Area tool in the canvas (default: gated off)

    values: 1

OpenTakeoff releases & version history

More in Project Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…