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 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 for BACnet polling, Operator Bridge API, React dashboard, historian, and MCP sidecar.
| 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):
export OPENFDD_IMAGE_TAG=3.0.30 # match your release
docker pull ghcr.io/bbartling/openfdd-bridge:${OPENFDD_IMAGE_TAG}
docker pull ghcr.io/bbartling/openfdd-commission:${OPENFDD_IMAGE_TAG}
docker pull ghcr.io/bbartling/openfdd-mcp-rag:${OPENFDD_IMAGE_TAG}
Edge bootstrap: Run with Docker images.
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
from open_fdd.arrow_runtime import run_arrow_rule
code = '''
import pyarrow.compute as pc
def apply_faults_arrow(table, cfg, context=None):
return pc.greater(table["SAT"], float(cfg["high"]))
'''
result = run_arrow_rule(code, pa.table({"SAT": [70.0, 90.0]}), {"high": 85})
print(result.true_count)
| Need | Use |
|---|---|
| Run FDD in your Python / cloud pipeline | PyPI open-fdd |
| BACnet + UI + bridge on an edge host | GHCR Docker images |
| Portfolio / MCP agent over Tailscale | Docker stack + portfolio docs |
Examples: examples/. Release: developer/release-process.
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.0.31.tar.gz.
File metadata
- Download URL: open_fdd-3.0.31.tar.gz
- Upload date:
- Size: 54.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73cab68124bd2217c0d60d93f816573439af7a50132875a84676ac08aa18c26c
|
|
| MD5 |
cc2c214a75681a260ea62fdf84163a0d
|
|
| BLAKE2b-256 |
4c8612cecabcbd2f091bf2a1f3aff4f33efc801cc64644c7ac9770ff9399f7f8
|
Provenance
The following attestation bundles were made for open_fdd-3.0.31.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.0.31.tar.gz -
Subject digest:
73cab68124bd2217c0d60d93f816573439af7a50132875a84676ac08aa18c26c - Sigstore transparency entry: 1791862848
- Sigstore integration time:
-
Permalink:
bbartling/open-fdd@40601a5bf8bff49813315dd78c52e2e59f41e5fe -
Branch / Tag:
refs/tags/v3.0.31 - Owner: https://github.com/bbartling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-open-fdd.yml@40601a5bf8bff49813315dd78c52e2e59f41e5fe -
Trigger Event:
push
-
Statement type:
File details
Details for the file open_fdd-3.0.31-py3-none-any.whl.
File metadata
- Download URL: open_fdd-3.0.31-py3-none-any.whl
- Upload date:
- Size: 61.9 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 |
35b2110baed3646cc234af71f17c220fd624ca2046a66f7a1eadce9f159ac3b5
|
|
| MD5 |
7b57a3c61c4775b87e3c70728d7b0bd7
|
|
| BLAKE2b-256 |
da69f65c51cdfcd86fb5b19c71c6b445ab2778babcd3fca00b9aa3d137806482
|
Provenance
The following attestation bundles were made for open_fdd-3.0.31-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.0.31-py3-none-any.whl -
Subject digest:
35b2110baed3646cc234af71f17c220fd624ca2046a66f7a1eadce9f159ac3b5 - Sigstore transparency entry: 1791862929
- Sigstore integration time:
-
Permalink:
bbartling/open-fdd@40601a5bf8bff49813315dd78c52e2e59f41e5fe -
Branch / Tag:
refs/tags/v3.0.31 - Owner: https://github.com/bbartling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-open-fdd.yml@40601a5bf8bff49813315dd78c52e2e59f41e5fe -
Trigger Event:
push
-
Statement type: