Security
Most organizations want answers to a questionnaire before they let a new tool near their network model. This page is the short version of that answer, for a reader who is already in the help center. The full account is at epanetjs.com/security. That page covers:
- The four ways to deploy epanet-js.
- The cloud, customer-managed storage and on-premises options.
- A generic security questionnaire you can lift answers from.
The short version is this. Your model is never uploaded. The app downloads to the browser, and the hydraulic engine runs on your own machine. You save project files to a location you choose on your own storage. What reaches us is account data. This is the email address you registered with, your plan, and the telemetry you consented to. Accounts and privacy covers the controls you see on screen. This page is what sits behind them.
This page describes epanet-js in its standard configuration. Every self-service plan runs this way.
Who runs epanet-js
Section titled “Who runs epanet-js”Iterating Inc. runs epanet-js. It is a corporation registered in Ontario, Canada, with its registered office at 2967 Dundas St W #536, Toronto, Ontario, M6P 1Z2. It owns and operates epanetjs.com, masteringwater.com and iterating.ca. The European Commission recognizes Canada as a country with an adequate level of data protection under GDPR.
| What you need | Where to write |
|---|---|
| Security questions and vulnerability reports | support@epanetjs.com |
| Privacy and data-subject requests | support@iterating.ca |
| Enterprise configurations and procurement | sales@epanetjs.com |
Where your model is processed
Section titled “Where your model is processed”On your machine. The app loads over HTTPS, and the browser downloads all of it: the interface, the map, and the EPANET engine compiled to WebAssembly. The app then runs on your own CPU and memory, inside the browser sandbox. The network layout, the results of a run, and the customer data inside them are created, computed and stored there. None of it goes to our servers, and none of it is stored on them.
Project files live on your hard drive or network drive as ordinary files. This is the same pattern as a desktop modeling package. The files move between colleagues through the channels you already use. epanet-js adds no new data pathway, so your existing file-handling policy applies to it without change.
The app does not get access to your file system. It uses the File System Access API of the browser. When you open or save a project, the browser shows its own file picker. The app then gets read and write access to the one file or folder you selected. It cannot see the rest of the disk, the operating system or a network share.
After the app loads, it keeps working without a connection. This includes a run of the model, because the engine is part of the page and not a service. See Storage and recovery for what degrades offline.
What we hold, and what we do not
Section titled “What we hold, and what we do not”| Data | Why | Held by |
|---|---|---|
| Email address, first and last name | Registration and sign-in | Clerk |
| Name, email and payment status | Subscriptions. The payment processor handles all card and bank details, and they never reach us | Stripe |
| In-app usage events | Which features you use, so we can decide what to build. We keep them no longer than 18 months. They are subject to the Product analytics consent | PostHog |
| Error diagnostics (the error trace, browser and session context) | To diagnose crashes. Subject to the Error reporting consent | Sentry |
| Name, email, phone | The newsletter, on express consent. Every message has an unsubscribe | Kit |
| Whatever you write to us | Support correspondence | Iterating Inc. |
Those five companies are the subprocessors. Each one receives only what its row describes. Nothing in the table is your model. Hydraulic models, asset data, consumption data and everything else inside a project file never reach our infrastructure. Your own file-storage practices govern the retention, classification and deletion of model data. We do not use project files, network layouts or the data inside them to train machine-learning or AI models.
Iterating Inc. is the data controller for account data. You have rights of access, rectification, erasure, restriction, objection, portability and withdrawal of consent. To exercise them, write to support@iterating.ca. The privacy policy has the detail for each category.
Encryption, sign-in and access
Section titled “Encryption, sign-in and access”Everything between your machine and us travels over HTTPS, with TLS encryption. This includes the app itself, sign-in, and account traffic. You set the encryption at rest of your model data. The files are on your systems, under your own disk-encryption policy.
Clerk manages identity. On the self-service plans you sign in with an email address, Google or Microsoft. The app supports multi-factor authentication. On the Teams plan, a workspace administrator can enforce it across the members. Single sign-on through SAML 2.0 and OIDC is part of the enterprise configurations, not the self-service plans. epanetjs.com/security names the identity providers.
Access to a model is access to its file. There is no sharing layer to administer. Your existing permissions and your existing joiner and leaver processes apply without change. No member of our staff has a technical path to your model data. Our access to account data covers only the work of running the service and answering support requests.
The source code
Section titled “The source code”The source of the app is public from the day it ships, under the Functional Source License. Each commit becomes MIT two years later. Your security team can read exactly how the app handles data, dependencies included. The code is at github.com/epanet-js/epanet-js. It is not necessary to take the data-flow claims on this page on trust.
We deliver updates centrally over HTTPS, so everyone loads the current version. There is no local install to patch. Administrator rights on your machine are not necessary.
Vulnerabilities and incidents
Section titled “Vulnerabilities and incidents”Report a suspected vulnerability to support@epanetjs.com. We will then work with you to investigate and correct it. A compromise of our infrastructure cannot expose your network models or the customer data in them, because they were never stored there. The exposure surface is the account data in the table on this page. We hold that data, and so do the five subprocessors.
If the service goes away
Section titled “If the service goes away”Your project files are ordinary files on your own storage. After the app loads, it keeps working offline. The source is public, and it turns MIT two years after each release. For this reason epanet-js cannot become abandonware in the way a closed-source tool can. Your organization, or the community, keeps the legal right and the practical means to run it and maintain it. Whatever happens to us, there is no lock-in over your data.
- Generic security questionnaire — the same answers in the wording a vendor assessment form asks for, ready to lift.
- epanetjs.com/security — the full security page, including the enterprise deployments.
- Accounts and privacy — the consent switches you see, and what each one turns off.
- Storage and recovery — what the browser holds between saves, and what happens with no connection.
- Projects — the project file, where it goes and what is in it.