Arrow-native HVAC fault detection runtime — lint, test, and run apply_faults_arrow rules on columnar telemetry (PyPI). Use GHCR Docker images for the full edge operator stack.
Project description
Open-FDD
Open-source supervisory fault detection for buildings — Arrow-native rules, optional DataFusion SQL rules for Rust-ready migration, optional PyPI embeddable runtime, and a full Docker/GHCR edge operator stack (BACnet, bridge API, dashboard, MCP).
Install / run
Full Open-FDD edge stack (Docker / GHCR)
Use GHCR (GitHub Container Registry — GitHub’s OCI image registry at ghcr.io) for BACnet polling, Operator Bridge API, React dashboard, historian, and MCP sidecar in a docker pull workflow.
| Image | Role |
|---|---|
ghcr.io/bbartling/openfdd-bridge |
API, dashboard, historian |
ghcr.io/bbartling/openfdd-commission |
BACnet discover, read, poll |
ghcr.io/bbartling/openfdd-mcp-rag |
MCP + doc-search |
Prefer pinned release tags in production (not floating latest). Set OPENFDD_IMAGE_TAG / --image-tag / NEW_TAG to the current release (today 3.1.3 — bump these on every release):
# Bootstrap a new edge host (no git clone) — creates ~/open-fdd, auth.env.local, BACnet bind
curl -fsSL -o /tmp/openfdd_edge_bootstrap.sh \
https://github.com/bbartling/open-fdd/raw/refs/heads/master/scripts/openfdd_edge_bootstrap.sh
OPENFDD_IMAGE_TAG=3.1.3 bash /tmp/openfdd_edge_bootstrap.sh --start --image-tag 3.1.3
# Update an existing site — backup workspace, pull pinned GHCR tags, recreate containers
cd ~/open-fdd
./scripts/openfdd_site_backup.sh
NEW_TAG=3.1.3 ./scripts/openfdd_site_update.sh
From a repo checkout: ./scripts/openfdd_edge_bootstrap.sh --start --image-tag 3.1.3
Edge bootstrap: Run with Docker images · Site updates: Updating the stack
Python package (PyPI)
Use PyPI when you only need the embeddable Arrow-native FDD runtime — lint, test, and run rules in your own pipelines (cloud, IoT, notebooks) without Docker.
pip install open-fdd
import pyarrow as pa
import pyarrow.compute as pc
from open_fdd.arrow_runtime import run_arrow_rule
def high_sat(table, cfg, context=None):
return pc.greater(table["SAT"], float(cfg["high"]))
table = pa.table({"SAT": [70.0, 90.0]})
result = run_arrow_rule(high_sat, table, {"high": 85})
print(result.true_count) # 1
Develop
git clone https://github.com/bbartling/open-fdd.git && cd open-fdd
python -m venv .venv && source .venv/bin/activate
pip install -e ".[test,dev,analytics]"
pytest open_fdd/tests -q
Contributor layout: AGENTS.md and developer docs.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file open_fdd-3.1.3.tar.gz.
File metadata
- Download URL: open_fdd-3.1.3.tar.gz
- Upload date:
- Size: 63.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc37914443716f4c7db844bd1a5baf9fe482a21216b75889ea05621ebf61cacc
|
|
| MD5 |
13519686a968ed38362eb4d8aa4c70e1
|
|
| BLAKE2b-256 |
4402f92ba1a0a82268885995179d33037732e82b8a63344f5a43f55c6bc2c01e
|
Provenance
The following attestation bundles were made for open_fdd-3.1.3.tar.gz:
Publisher:
publish-open-fdd.yml on bbartling/open-fdd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
open_fdd-3.1.3.tar.gz -
Subject digest:
fc37914443716f4c7db844bd1a5baf9fe482a21216b75889ea05621ebf61cacc - Sigstore transparency entry: 1827131706
- Sigstore integration time:
-
Permalink:
bbartling/open-fdd@66fb483ea80914400fd42a659814d00707f67bec -
Branch / Tag:
refs/tags/v3.1.3 - Owner: https://github.com/bbartling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-open-fdd.yml@66fb483ea80914400fd42a659814d00707f67bec -
Trigger Event:
push
-
Statement type:
File details
Details for the file open_fdd-3.1.3-py3-none-any.whl.
File metadata
- Download URL: open_fdd-3.1.3-py3-none-any.whl
- Upload date:
- Size: 71.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90f977b46d5593a954740ef0ac7b8958e32c5092f0436f7be5751f91d6319071
|
|
| MD5 |
dd10f48e44288fe13ae3bec66941ce54
|
|
| BLAKE2b-256 |
ccff7a4c87a31f56816f8b40c87dd4677ff58efb0be0fa4169b38291bbf64c97
|
Provenance
The following attestation bundles were made for open_fdd-3.1.3-py3-none-any.whl:
Publisher:
publish-open-fdd.yml on bbartling/open-fdd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
open_fdd-3.1.3-py3-none-any.whl -
Subject digest:
90f977b46d5593a954740ef0ac7b8958e32c5092f0436f7be5751f91d6319071 - Sigstore transparency entry: 1827132324
- Sigstore integration time:
-
Permalink:
bbartling/open-fdd@66fb483ea80914400fd42a659814d00707f67bec -
Branch / Tag:
refs/tags/v3.1.3 - Owner: https://github.com/bbartling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-open-fdd.yml@66fb483ea80914400fd42a659814d00707f67bec -
Trigger Event:
push
-
Statement type: