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.8

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.8
File Size Uploaded Provenance Actions
open_fdd-4.5.8.tar.gz 530.9 kB With provenance Details for open_fdd-4.5.8.tar.gz

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / open_fdd-4.5.8.tar.gz

Download URL open_fdd-4.5.8.tar.gz
Size 530.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7a038a70ef1d6260d85629a41ab02a03b41ab59ed9d3f3faebf1511682f6c01a
BLAKE2b-256 checksum
How to use checksums
35f14095e27940a9747f33b9732551e3d657ab067c30136bb8fd7d9eb9ac81aa
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.8-py3-none-any.whl

Download URL open_fdd-4.5.8-py3-none-any.whl
Size 526.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b89e629d01afff7e47a3c845ef22a936d7664d8d50513d46924bf9f3ee7e71ad
BLAKE2b-256 checksum
How to use checksums
523f500a661ea328eeb4333996ee53f8674746d1e72ccb35f6530208cf59db79
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.8

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.8.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.8 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