Windows
Windows 10/11, 64-bit. WebView2 runtime bundled, so first install needs no download.
- 1Download the Windows installer.
- 2Run the file and allow WebView2 if Windows asks.
- 3Open the app. The first local setup can take about a minute.
Download
A native build of OpenConstructionERP. No Python, no pip, no Docker, no database to set up. One file, run it, done. Your data stays on your machine.
Windows 10/11, 64-bit. WebView2 runtime bundled, so first install needs no download.
Apple Silicon (aarch64), macOS 10.15+.
.deb, .rpm and .AppImage, 64-bit.
View all builds and checksums on GitHub Setting it up for a whole team?
The first time you open the app it spends about 40 to 90 seconds setting up a local database. It is not frozen. Every launch after that opens fast. Nothing is sent anywhere, the database lives on your own machine.
Self-hosted
There is no account to create and no cloud of ours to sign into. You install the platform on a machine you own: your laptop, a computer in your office, or a server you rent. Pick the one that matches how many people will use it.
Projects, drawings, models, cost bases and prices are written to a database on your own hardware. The platform does not phone home, does not upload your files anywhere, and works with the network unplugged. When you stop using it, the data is still yours and every format it exports is open. That is what self-hosted means here, and it is the same in all three setups below.
For one person
The installer above. It brings its own database and its own web engine, so there is nothing else to install.
You need: Windows 10/11, macOS 10.15+ on Apple Silicon, or 64-bit Linux. The installer is 0.8 to 0.9 GB, so leave about 3 GB of free disk for it and your first projects.
What opens: a normal desktop window. Nothing to type in a browser.
For a team on one network
One machine that stays switched on holds the database. Colleagues use it from their own desks through a browser, over your office network only.
You need: a computer that stays on, with Docker installed, 2 GB of RAM and around 10 GB of free disk. It does not have to be a rack server; a spare office PC is enough.
curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/docker-compose.quickstart.yml -o docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/docker-compose.quickstart.image.yml -o docker-compose.override.yml
echo "POSTGRES_PASSWORD=$(openssl rand -base64 24)" > .env
echo "JWT_SECRET=$(openssl rand -hex 32)" >> .env
echo "OE_ALLOWED_ORIGINS=http://192.168.1.50:8080" >> .env
docker compose pull app
docker compose up -d
What to open: http://<server-address>:8080 in any browser on the same network. Before you start it, put that same address into the OE_ALLOWED_ORIGINS line in place of the example, otherwise the login page appears and then stays empty: the browser, not the server, refuses the calls behind it.
For a team working from anywhere
The same setup on a rented server with a public address, so the site office and the head office reach one instance. The machine is yours; we have no access to it.
You need: a 64-bit Linux VPS with 2 GB of RAM, about 20 GB of disk, Docker, a domain name pointing at it, and a reverse proxy holding the certificate.
curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/docker-compose.quickstart.yml -o docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/docker-compose.quickstart.image.yml -o docker-compose.override.yml
echo "POSTGRES_PASSWORD=$(openssl rand -base64 24)" > .env
echo "JWT_SECRET=$(openssl rand -hex 32)" >> .env
echo "OE_BIND=127.0.0.1" >> .env
echo "OE_ALLOWED_ORIGINS=https://erp.example.com" >> .env
docker compose pull app
docker compose up -d
What to open: your own address, https://erp.example.com. Put your domain in the OE_ALLOWED_ORIGINS line first. The platform does not handle certificates itself, which is why the OE_BIND line is there: it keeps port 8080 private and lets your proxy be the only way in.
Both server setups run the image we publish with every release, so nothing is compiled on your machine and a 2 GB server is enough. Updating is the same two commands again, pull then up -d; your database sits in a Docker volume and survives it. For a larger installation with a separate frontend, Redis and a vector service, the repository also carries a production compose file, and the documentation walks through it. Questions about a company rollout: info@datadrivenconstruction.io.
Which one
Most people want the native app. The other two are for developers and servers.
For developers
Secondary paths. Each opens the same app in your browser at localhost:8080.
curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/docker-compose.quickstart.yml -o docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/docker-compose.quickstart.image.yml -o docker-compose.override.yml
echo "POSTGRES_PASSWORD=$(openssl rand -base64 24)" > .env
echo "JWT_SECRET=$(openssl rand -hex 32)" >> .env
docker compose pull app
docker compose up -d
Then open localhost:8080. The two secrets are written once and kept, and your data lives in a Docker volume between runs.
git clone https://github.com/datadrivenconstruction/OpenConstructionERP
pip install -e ./backend[server]
Editable dev install with the server extras. Read the docs first.
190+ modules. Estimating and BOQ, takeoff, CAD and BIM, cost databases, tendering, reporting, and more.