Skip to main content

Open-FDD

open-fdd: fault detection & analytics plugin for the Normal Framework

NF app CI Open-FDD Grok bot skills Security (ZAP, audit, gitleaks)

Online docs FDD Rule Cookbook — 77 SQL + 71 pandas, SI units Open-FDD on PyPI Quick start: install the NF app Normal Framework plugin ADR-014: Open-FDD as an NF plugin Open-FDD skills on Grok bot

Open-FDD is open-source fault detection and diagnostics (FDD) and retro-commissioning (RCx) for HVAC, packaged as a Normal Framework app. It runs on the building's NF edge box, reads the Haystack model and point history directly, and works on the local network or through the Normal Online portal.

  • 77 SQL fault rules for air handlers, VAVs, plant, boilers, heat pumps, meters and sensors, run hourly inside NF. Results are written back as tagged NF points and can be served on NF's BACnet server.
  • 60 retro-commissioning charts, CSV export, and an RDF model with a SPARQL query panel.
  • All calculations in SI units; the display can be imperial or SI.
  • No site-specific code: equipment and points are bound by Haystack tags and NF classes.

Editions

Open-FDD (nf-app/) Open-FDD Lite (lite/)
Hardware 2 GB+ (4 GB+ for PGlite, TimescaleDB on larger hosts) 1 GB, e.g. Raspberry Pi 3
Includes FDD engine, RCx charts, CSV export, SPARQL Dashboard, charts, weather, BACnet mirror
Deploy python3 scripts/nf/hooks/nf_app_sync.py --env <env> push nf-app/app.json ... push lite/app.json

Quick start

Try it without an NF box, using a synthetic two-site building:

node nf-app/dev/mock-nf.mjs
# open http://127.0.0.1:8765/api/v1/apps/static/open-fdd/

Install on an NF box (NF 3.10+): see the install guide (editions, one-command install, upgrade, troubleshooting). How API users read the results: FDD data access.

Run the tests:

node --test nf-app/tests/*.test.mjs lite/tests/*.test.mjs
(cd nf-app && npm ci && npm run typecheck)
python3 -m pytest tests -q

Repository

Path Contents
nf-app/ Full edition: UI, hooks, rule packs, tests, mock NF
lite/ Lite edition
sql/fdd/ Fault rules (SQL), registry, role scales, tuning catalog
open_fdd/ PyPI package: pandas reference rules and NF agent tools
scripts/nf/ Build and deploy tooling
deploy/nf-caddy/ Optional Caddy front door
docs/ Documentation site
openfdd_agent_spec/ Guidance for AI coding agents

FDD rules in SQL and pandas

The fault rules also work on their own, without NF: as SQL on PostgreSQL / TimescaleDB, or as pandas in Python. Every rule runs in SI units. Imperial data (°F, inH₂O, cfm) is converted to SI before the rules run.

SQL (PostgreSQL / TimescaleDB) pandas (Python, used for testing)
Rules sql/fdd/postgres/rules/, one file per rule open_fdd/rules/, or pip install open-fdd
Cookbook SQL cookbook: each rule's inputs, SI parameters and full SQL pandas cookbook: source plus a runnable example per rule
Thresholds sql/fdd/tuning_catalog.json: defaults for every rule SI defaults in each rule; any difference from SQL is listed in the parity report

The two implementations are checked against each other in CI. The pandas vs SQL parity report shows which rules match and explains each known difference.

Python package

pip install open-fdd

Pandas versions of the fault rules plus command-line tools for working with NF data, reports and ECM analysis. The package is versioned separately from the NF app. See Python tools.

Support

Support this work

Donations fund ongoing development and independent security testing.

Donate $25 via PayPal Donate $50 via PayPal Donate $250 via PayPal Choose a custom PayPal donation amount

Questions and discussion: Discord.

License

MIT. See LICENSE and CHANGELOG.md.

Metadata

Release files for open-fdd 4.5.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for open-fdd 4.5.7
File Size Uploaded Provenance Actions
open_fdd-4.5.7.tar.gz 530.7 kB With provenance Details for open_fdd-4.5.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for open-fdd 4.5.7
File Interpreter ABI Platform Actions
open_fdd-4.5.7-py3-none-any.whl Python 3 none any Details for open_fdd-4.5.7-py3-none-any.whl

Total release size: 1.1 MB

Release files / open_fdd-4.5.7.tar.gz

Download URL open_fdd-4.5.7.tar.gz
Size 530.7 kB
Tags Source
SHA-256 checksum
How to use checksums
529766beb15749c2ff7f0fad499d6919569026b46b0fdb059b286aead2bbc046
BLAKE2b-256 checksum
How to use checksums
5e7a89830da699a4836c135ead59ff7b6c4745f81112434da464e2e0999c15e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.

Transparency log

Release files / open_fdd-4.5.7-py3-none-any.whl

Download URL open_fdd-4.5.7-py3-none-any.whl
Size 525.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4e369776fd268e1336756d0c2e652a3144ffc4a7435869d9cd6095003a789e77
BLAKE2b-256 checksum
How to use checksums
54079cddf6cd3dbb092ab314ad4bd7602a0e7a396faee74cce39fbd0ccd13835
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.

Transparency log

Security for open-fdd 4.5.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for open_fdd-4.5.7.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

4.5.7 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page