Raylux End User License Agreement
Document version: 1.4 Applies to: Raylux platform generation 2026 or later Last revised: 2026-10-08
IMPORTANT — READ BEFORE INSTALLING
Raylux is industrial supervisory software. It is used to monitor and to command equipment that can move, heat, pressurize, electrify, or otherwise cause death, injury, or destruction of property.
Raylux is not a safety system. It is not certified to any safety integrity level, it has not been assessed under IEC 61508, IEC 61511, ISA-84, ISO 13849, or any comparable functional-safety standard, and it must never be the only thing standing between a hazardous condition and a person. Section 9 of this Agreement states this in binding terms and is the most important part of this document. If You cannot accept Section 9, do not install Raylux.
By installing, copying, or using the Software, You accept this Agreement. If You do not accept it, do not install the Software, and if You have paid a fee, contact support@rayluxscada.com within 30 days for a refund of that fee.
1. Parties and definitions
This End User License Agreement ("Agreement") is between Raylux L.L.C., a Colorado limited liability company with its principal place of business at 4845 Pearl East Cir Ste 118 #837445, Boulder, CO 80301 ("Licensor", "we", "us"), and the individual or legal entity that installs or uses the Software ("You", "Customer"). If You are accepting on behalf of an organization, You represent that You have authority to bind it, and "You" means that organization.
1.1 "Software" means the Raylux platform in object-code form, comprising:
| Component | Role |
|---|---|
| Raylux Nexus | The backend service — tag engine, historian, device drivers, scripting, REST/WebSocket API |
| Raylux Studio | The desktop designer application |
| Raylux Spectrum | The browser-based HMI runtime served by Nexus |
| Raylux Lens | The desktop shell that hosts Spectrum for plant-floor and kiosk use |
together with the installers, bundled runtimes, fonts, documentation, and any Updates supplied under Section 6. The AI Features (Raylux Iris), the map, video and document components of Raylux Spectrum, and the camera relay in Raylux Nexus are part of the Software, not separate products. "Software" does not include Third-Party Components, which are licensed to You under their own terms (Section 8 and Appendix A).
1.2 "Nexus Instance" means one running instance of Raylux Nexus on one physical or virtual machine.
1.3 "License Key" means the cryptographically signed license file (.raylux-license) issued by Licensor. The License Key is the authoritative statement of what You have purchased. Where a description in an order form, quotation, or marketing material conflicts with the License Key, the License Key governs, and Licensor will correct and reissue the License Key on request if it does not reflect Your order.
1.4 "Entitled Generation" means the calendar-year platform generation encoded in the License Key's entitledGeneration field, as described in Section 6. A License Key that carries no such field is treated as entitling generation 2026.
1.5 "Entitlements" means the set of separately licensable capabilities encoded in the License Key's entitlements field — currently advancedSecurity, alarms, historian, multiProject, reporting, spectrum (the browser-based HMI runtime), and the alarm notification channels alarmNotification, notifySms, and notifyVoice, and the AI Entitlements aiCore (the AI model provider layer, the designer assistant, and subsystem summaries), aiOperator (operator chat), aiAgents (agents, and the alarm root-cause stage), and mcp (what an AI client can do through the built-in MCP server beyond reading). Read-only access by AI clients through the built-in MCP server needs no Entitlement. Device drivers, OPC-UA (client and server), scripting, named queries, and user-defined types are not separately licensable — they ship in every License Key. alarms, advancedSecurity and multiProject are carried by every License Key Licensor issues as standard; the other Entitlements, including the AI Entitlements, are sold as add-ons and appear on Your order. Maps, camera video, and the document viewer are capabilities of Raylux Spectrum and run under the spectrum Entitlement.
1.6 "Capacity Limits" means the numeric and boolean limits encoded in the License Key — maximum tags, maximum device connections, and maximum user accounts. A value of -1 means unlimited.
1.7 "Third-Party Components" means the software listed in Appendix A, which is distributed with the Software under the licenses stated there.
1.8 "AI Features" means the parts of the Software known as Raylux Iris that let an AI client or an AI model read information from a Nexus Instance, or that send prompts and information from a Nexus Instance to an AI model provider. They are: the built-in MCP server and the API keys that connect AI clients to it; the designer assistant in Raylux Studio; subsystem summaries; operator chat in Raylux Spectrum and Raylux Lens; agents, including the alarm root-cause stage of a notification policy; the raylux.ai functions available to gateway scripts; user-defined MCP tools written in Python; and the proposal and approval workflow through which any of them suggests a change.
1.9 "Customer Content" means everything You or Your users put into, connect to, or collect with the Software: projects, screens, scripts, and tag configuration; process and historical data; audit records; map files, map-provider accounts and keys, and map tiles fetched with them; camera streams, still snapshots, and camera credentials; documents and images You upload or link; and the prompts, replies, and transcripts of AI Features.
1.10 "Third-Party Services" means services and equipment that Licensor does not provide and that You connect to the Software: AI clients and AI model providers, map tile providers and tile servers, cameras and their manufacturers' software, and message and telephony providers used for alarm notification.
2. License grant
Subject to Your compliance with this Agreement and payment of all applicable fees, Licensor grants You a non-exclusive, non-transferable, non-sublicensable license to install and use the Software strictly within the parameters encoded in Your License Key, as follows.
2.1 Scope — per Nexus Instance, node-locked. Each License Key authorizes one Nexus Instance. The License Key is bound to a hardware fingerprint derived from the permanent address of the machine's network adapter, the machine's system or board identifier (its system UUID or board serial number), and the serial number of the disk that holds the License Key. For platform generation 2026, a Nexus Instance running in a software container (for example, a Docker container) is not a supported licensed deployment: a container does not expose enough of these identifiers, so a License Key cannot be activated there. You may use the built-in unlicensed evaluation period (Section 2.5) in a container. You may install Raylux Studio and Raylux Lens on any number of machines within Your organization that connect to a licensed Nexus Instance; those components are not separately licensed and are not separately counted.
2.2 Term. If Your License Key carries an expiry date, the license granted in this Section runs to that date. If it carries no expiry date, the license is perpetual and continues indefinitely, subject to Section 12 (Termination).
2.3 Entitlements. You may use only those capabilities present in Your License Key's Entitlements. The Software enforces this at its API boundary and will refuse operations outside Your Entitlements. Configuring or authoring against a capability You have not licensed is permitted; executing it is not.
2.4 Capacity Limits. You may not exceed the Capacity Limits encoded in Your License Key. The Software enforces these limits when new tags, device connections, or user accounts are provisioned.
2.5 Trial licenses. A License Key marked as a trial, and the built-in unlicensed evaluation period, are granted for evaluation and non-production use only. They carry no warranty of any kind and no support obligation. Do not use a trial license to supervise live plant.
2.6 Cold standby and disaster recovery. You may install a second copy of Raylux Nexus on one standby machine for disaster-recovery purposes, provided that the standby instance is not run concurrently with the primary instance other than for brief testing of the failover procedure. On failover, contact Licensor and a replacement License Key for the standby hardware will be issued at no charge. A standby that runs concurrently with the primary in normal operation — for redundancy, load sharing, or any other purpose — requires its own License Key. A non-production or standby instance must run under its own License Key or a trial key issued for it. Running the same License Key on two machines at once is a ground for the notice in Section 5.4A.
2.7 Hardware replacement. Replacing components of a licensed machine does not terminate Your license. A License Key records each identifier in Section 2.1 that the machine exposed when the License Key was requested, and it continues to validate while at least two of the identifiers it recorded still match the machine. A License Key that recorded all three identifiers therefore tolerates the replacement of one fingerprinted component; one that recorded only two, as is typical of a virtual machine, tolerates none. On a machine where the License Key has already run, a hardware change that leaves fewer than two matching starts Emergency Mode under Section 5.4B. To move a Nexus Instance to new hardware or a new virtual machine, unactivate it on the old machine first and then activate it on the new one. If You cannot unactivate first, for example because the old machine has failed, or Your License Key stops validating after a hardware change, contact Licensor. Licensor will release the license from the old hardware at no charge, provided the original Nexus Instance is decommissioned. You then activate it on the new hardware using the normal activation steps. Licensor will not unreasonably delay or refuse such a release.
2.8 Backups and archival. You may make a reasonable number of copies of the Software and of Your License Key for backup and archival purposes.
2.9 Development and staging. You may install one additional non-production Nexus Instance for development, testing, or staging, per production License Key, provided it does not supervise live plant. It remains subject to the same Capacity Limits and Entitlements. A non-production or standby instance must run under its own License Key or a trial key issued for it. Running the same License Key on two machines at once is a ground for the notice in Section 5.4A.
3. Restrictions
Except as this Agreement expressly permits, and except as Section 8 permits for Third-Party Components, You will not:
(a) distribute, resell, rent, lease, lend, host as a service, or otherwise make the Software available to any third party, other than to Your own personnel, contractors, and service providers acting on Your behalf and bound to terms at least as protective as these;
(b) reverse engineer, decompile, or disassemble the Software, except to the extent that applicable law expressly permits it despite this restriction, and except as Section 8.2 permits in respect of the LGPL-licensed Third-Party Components;
(c) modify, tamper with, circumvent, or attempt to defeat the license validation, signature verification, hardware fingerprinting, capacity limits, or entitlement gating in the Software, or use a License Key that You know or should know was not issued to You;
(d) remove, obscure, or alter any copyright, trademark, or license notice in the Software or its documentation;
(e) use the Software in violation of any applicable law, including export control and sanctions law (Section 14); or
(f) publish benchmark or performance results for the Software without Licensor's prior written consent, such consent not to be unreasonably withheld.
4. Ownership
The Software is licensed, not sold. Licensor and its suppliers retain all right, title, and interest in and to the Software, including all intellectual property rights in it. No rights are granted other than those expressly stated in this Agreement.
Your data is Yours. Licensor claims no ownership of Your projects, screens, scripts, tag configurations, historical process data, or any other Customer Content.
What the Software sends to Licensor. A License Key is verified locally against a public key compiled into Nexus, and a Nexus Instance whose License Key is valid and has not been the subject of a notice under Section 5.4A is not affected by being unable to reach Licensor's license server (Section 5.1A). Activation and the daily check-in do use the network, as Sections 5.1 and 5.1A describe, and Licensor's license server receives the network address each of those requests comes from. The Software does not transmit usage data or process data to Licensor. Licensor does not receive Your camera video or snapshots, Your map requests, Your documents, or the prompts and replies of AI Features; the only information the Software sends to Licensor is what activation and the check-in in Sections 5.1 and 5.1A send.
5. License keys, activation, and enforcement
5.1 Activation. You activate a Nexus Instance with the license key issued when You buy it, either online (the Nexus Instance asks Licensor's license server for a signed license file) or offline (You carry a request file to Licensor's website from any computer and install the license file You receive). A license key may be active on one Nexus Instance at a time; You may move it to another by unactivating it first, as often as You need.
5.1A Daily check-in. A Nexus Instance with a license key contacts Licensor's license server about once a day when it can. It sends the license key, the license identifier, a separate hash of each hardware identifier in Section 2.1 that the machine exposes at that time (computed with the salt recorded in the installed license file), whether those hashes match the installed license file and, if they have stopped matching, since when, the host name, the Raylux version, the check-in token Licensor's license server issued at the previous check-in, and a copy of the installed license file (which Licensor issued), and nothing from Your process or plant. Activation (Section 5.1) sends the license key, a separate hash of each hardware identifier in Section 2.1 that the machine exposes and the salt used to compute those hashes, the platform generation, the time of the request, the host name and the operating system name; while an activation is waiting to be signed, the Nexus Instance asks for it by the job identifier the server returned; and unactivation sends the license key, the license identifier, the hardware hashes and salt recorded in the installed license file, the time and a random value. A Nexus Instance that cannot reach the license server is never penalized for that, and its license never lapses for that reason; the check-in only delivers what Licensor already knows, such as additions You have bought or the notice in Section 5.4A.
5.2 What enforcement does. Nexus verifies the License Key's signature and hardware binding at startup and periodically thereafter, and enforces Capacity Limits and Entitlements at its API boundary.
5.3 What enforcement does not do — no hard shutdown. If a License Key is missing, has been expired for longer than the grace period in Section 5.4, is invalid, or does not entitle the running version, the Nexus Instance process does not exit and does not refuse to run, and a Nexus Instance that is already configured keeps running Your process: it keeps polling and writing devices, evaluating alarms, recording history, and running scripts. It stops these functions (its "metered functions"):
- it refuses new connections from operator screens (Spectrum and Lens); screens already connected stay connected;
- it refuses requests to list active alarms, read the alarm journal, acknowledge an alarm, or subscribe to an alarm summary;
- it sends no alarm notifications by e-mail, SMS, or voice call;
- it refuses requests to read recorded history;
- it refuses to add tags, device connections, or users; and
- it refuses every other capability that needs an Entitlement, such as running reports on request and AI Features.
The configuration console remains reachable, including to an administrator already able to sign in, so that a License Key can always be installed or a trial restarted. This behavior is deliberate: a licensing fault must never lock You out of the one surface that lets You fix it. It is a design commitment, and Licensor will not introduce a release within Your Entitled Generation that terminates the Nexus Instance process on account of license state.
5.4 Grace period. A License Key that has expired within the previous seven (7) days continues to grant full Entitlements, with a warning, so that renewal does not interrupt operations.
5.4A Notice for a license key that is no longer valid. If Licensor's license server knows that a license key should no longer run on a Nexus Instance — because it was refunded or revoked, moved to another Nexus Instance, released by an unactivation, or found running on more than one machine — the check-in delivers a signed notice. The Nexus Instance then continues to operate normally for seven (7) days, displaying the reason and whom to contact ("Emergency Mode"), and afterwards enters the unlicensed state described in Section 5.3. Contact Licensor at support@rayluxscada.com to resolve it. A refund of a purchase made within thirty (30) days revokes its license key.
5.4B Emergency Mode after a hardware change. If, at startup or at a periodic check, fewer than two of the hardware identifiers recorded in the License Key match the machine (Section 2.7), and the License Key has already run on that Nexus Instance, the Nexus Instance continues to operate normally for seven (7) days from when the mismatch was first detected, displaying the reason and whom to contact (also "Emergency Mode"), and afterwards enters the unlicensed state described in Section 5.3. If enough of the identifiers match again within those seven days, the Nexus Instance returns to normal operation. Where a notice under Section 5.4A also applies, the earlier of the two ends applies: a notice can shorten this period but never extend it. This period exists so that a hardware failure does not stop Your plant without warning; it does not permit You to run a License Key on any machine other than the one it was activated on, and running one License Key on two machines at once remains a ground for the notice in Section 5.4A. Contact Licensor at support@rayluxscada.com to release the license from the old hardware (Section 2.7).
5.5 Continued operation in the unlicensed state is not a license. Section 5.3 describes what the Software does when no valid License Key applies; it grants You no right to use Nexus's metered functions during that time. Reconnecting a device, adding a tag, or otherwise attempting to use a metered function without a valid License Key is a breach of Section 2 even though the configuration console remains reachable.
6. Updates, platform generations, and support
6.1 Generations. Raylux versions are YEAR.FIX (for example, 2026.12). The YEAR denotes a platform generation — the calendar year — and changes once per year, at the first release of that year. The FIX component carries ordinary releases within that year, including new features, and restarts at 1 each new calendar year.
6.2 What Your license entitles. Your license entitles You to all releases within Your Entitled Generation, at no additional charge, for as long as Licensor publishes them. No maintenance subscription is required for those releases. A License Key issued for generation 2026 requires release 2026.21 or later; earlier 2026 releases cannot read it.
6.3 Crossing a generation is a paid upgrade. A release in a later generation than Your Entitled Generation requires an upgrade. If You install one, Nexus will run in the unlicensed state described in Section 5.3 and will state the reason; it will not refuse to start. Rolling back to a release within Your Entitled Generation that can read Your License Key restores full Entitlements.
6.4 No obligation to publish. Licensor is not obliged to produce any particular release, feature, fix, or generation, or to support any generation for any minimum period. Licensor's current intention — non-binding — is as follows: once the first release of a new generation is published, the immediately preceding generation receives fixes only (bug and security fixes; no new features), and any earlier generation receives nothing further. A fix to the preceding generation is published within that generation (for example, a fix to generation 2026 released during 2027 is numbered 2026.N), so a license for that generation covers it.
6.5 Support. Support, if any, is provided under a separate agreement or order form. This Agreement grants no right to support, response times, or professional services.
7. Fees and audit
7.1 Fees. Fees, payment terms, and any renewal terms are as stated in the applicable order form or quotation. Fees are non-refundable except as expressly stated in this Agreement or required by law.
7.2 Records. You will keep reasonable records of Your Nexus Instance deployments and License Key assignments. On not less than thirty (30) days' written notice, no more than once in any twelve (12) month period, Licensor may ask You to certify in writing that Your use conforms to this Agreement. Licensor has no right of access to Your systems, premises, process data, or networks under this Agreement, and nothing in this Section entitles Licensor to an on-site audit.
8. Third-Party Components
8.1 Generally. The Software incorporates and is distributed with the Third-Party Components listed in Appendix A. Each is licensed to You under its own license, not under this Agreement. Where a Third-Party Component's license conflicts with this Agreement, that license governs in respect of that component. Nothing in this Agreement limits any right You have under an open-source license.
8.2 LGPL components — Qt 6, libmariadb, mariadb-connector-cpp, FFmpeg. The Software uses Qt 6 under the GNU Lesser General Public License version 3.0, libmariadb and mariadb-connector-cpp under the GNU Lesser General Public License version 2.1, and FFmpeg (libavformat, libavcodec and libavutil) under the GNU Lesser General Public License version 2.1 or later. FFmpeg is built without its GPL, version-3, and non-free options and without any GPL-only codec library, as a minimal network-stream reader with no decoders, encoders, parsers, muxers, or filters, and Licensor has not modified its source. These components are dynamically linked, and their shared libraries are installed as separate files alongside the Raylux executables (DLLs on Windows, shared objects on Linux). Accordingly:
- You have the right to modify these libraries and to relink the Software against Your modified versions (or to replace them with Your own build that keeps the same library interface), for Your own use, and to reverse engineer the Software to the extent necessary to debug such modifications. Section 3(b) does not restrict this.
- The complete corresponding source code for these components, and the information needed to relink, is provided as described in Section 8.4.
- Replacing these libraries voids the warranty in Section 10 and the support arrangements (if any) for the affected Nexus Instance, and Licensor accepts no liability for the behavior of a Nexus Instance running modified libraries. This limitation is on Licensor's warranty and support obligations only; it does not restrict Your rights under the LGPL.
8.3 MPL-2.0 components — open62541, open62541pp, libplctag, libdatachannel, libjuice, plog. These are licensed under the Mozilla Public License 2.0. Source code for these components, including any modifications Licensor has made to MPL-licensed files (none for libdatachannel, libjuice, and plog), is provided as described in Section 8.4. libplctag is dual-licensed under MPL-2.0 and the LGPL; Licensor elects MPL-2.0. The packaging metadata for libjuice names the LGPL-2.1, while the license file in its source is the MPL-2.0; Licensor treats it as MPL-2.0 and, so that either reading is satisfied, ships it unmodified as a shared library, so that Section 8.2 applies to it as well to the extent it is LGPL.
8.4 How to obtain source. Source code for the LGPL and MPL components in Sections 8.2 and 8.3, at the versions shipped, together with the build scripts or vcpkg port, the build options used, and the information needed to rebuild the libraries and relink the Software, and Licensor's written offer to any third party, valid for as long as Licensor distributes that version and for at least three (3) years after the last such distribution, are available at https://rayluxscada.com/source, or by written request to 4845 Pearl East Cir Ste 118 #837445, Boulder, CO 80301. Licensor will supply the source on a physical medium for no more than the cost of performing the distribution.
8.5 Chromium. Raylux Studio and Raylux Lens embed the Chromium browser engine by way of Qt WebEngine. Chromium's notice set is reproduced in the file licenses/chromium/ in the installation directory and is incorporated into Appendix A by reference.
8.6 Fonts. Geist and Geist Mono are licensed under the SIL Open Font License 1.1. Material Symbols is licensed under Apache-2.0. The full texts accompany the font files. The glyph files that draw labels on street maps are generated from Geist and remain under the SIL Open Font License 1.1.
8.7 Python. The Software bundles CPython 3.14 (free-threaded build) under the Python Software Foundation License Agreement. Any Python code You write and run in the Raylux scripting engine is Your content, and this Agreement claims no rights in it.
8.8 Microsoft VC++ Runtime. The Windows installer installs the Microsoft Visual C++ Redistributable under Microsoft's own redistributable terms. It is installed permanently and is deliberately not removed when Raylux is uninstalled, because other software on the machine may depend on it.
8.9 AI clients and AI model providers. AI Features are off until an administrator turns them on, and each is turned on separately. Licensor ships no AI model, operates no AI service, and does not receive prompts, replies, or transcripts. Accordingly:
- What leaves Your Nexus Instance. When You turn an AI Feature on, information from Your Nexus Instance is sent, at Your direction, to the AI model provider or AI client that You choose and configure. Depending on the feature this can include tag names, descriptions, values and quality; alarm text and history; short tag history; device status; log lines; audit entries; scripts, expressions, SQL, and screen configuration; the text of what an operator or administrator types; and, for gateway scripts, whatever a script passes in. The Software removes passwords, tokens, keys, and similar secrets before sending, but that removal is a safeguard that can miss things; it is not a guarantee that no sensitive information is sent. If information must not reach a model, use a model on Your own network or leave the feature off.
- Unattended use. Agents, the alarm root-cause stage, and gateway scripts that call
raylux.airun when a trigger fires or a schedule comes round, not when a person asks. By enabling and configuring one You direct the Software to send information to Your provider each time it runs, and (where an agent's result is attached to a notification) to the recipients of that notification. Operator chat sends what each operator types, and what that operator can see, to Your provider. You decide which roles may use it and which screens carry it, including on kiosks that need no sign-in, and You are responsible for telling Your operators that AI is in use and that it can be wrong. - AI clients over MCP. An AI client connected through the built-in MCP server sends what it reads to its own model. You are responsible for the access keys You issue, the roles and tool lists You assign to them, and for restricting tag access before enabling any feature that proposes changes.
- Providers' terms. AI clients and AI model providers are Third-Party Services. Your use of them is governed by Your agreements with their providers, including how they store, use, and train on that information, in which country they handle it, and what they charge. You are responsible for having the right to send that information to them, including any personal data, confidential information of Yours or of others, and export-controlled data in it. Token budgets and rate limits in the Software are conveniences, and a call that crosses one can exceed it by its own size.
- Records kept on Your system. The Software keeps audit rows and, for a period You set (30 days by default), transcripts of AI conversations on Your Nexus Instance. They can contain plant data and personal data; You are responsible for their retention, access, and deletion.
- Your code. Scripts and Python tools You write for AI Features are Your content. The restrictions the Software places on them are defense in depth, not a security boundary against a hostile author.
- Licensor's responsibility. Licensor is not responsible for those services' availability, output, charges, or handling of data, or for any change a person approves on the strength of what an AI Feature produced (Section 9.12).
8.10 Customer Content and Third-Party Services — maps, cameras, documents. Licensor ships no map data, no map-provider account or key, no camera, and no documents. The Software can draw maps from files, tile servers, and providers that You choose, show video from cameras that You add, and display documents and images that You supply. Accordingly:
- Rights. You are responsible for holding every right and permission needed for Customer Content and for the Third-Party Services You connect, including the terms of Your map provider or tile server (account, key, usage limits, caching and storage, offline use, attribution), the license of any map data or imagery, and the rights in documents and images. The Software may relay and temporarily store (cache) tiles it fetches for You; whether Your provider's terms allow that is Your responsibility.
- Cameras and surveillance law. You alone decide whether, where, and how cameras are installed and viewed, and who may see or save what they show. You are responsible for compliance with every law and agreement that applies to video surveillance, audio recording, workplace monitoring, privacy, signage and notice, consent, retention, and access, in every place where a camera operates or a viewer is located. Licensor does not monitor, receive, or store Your camera video or snapshots, and You are responsible for the camera credentials and network access that You configure.
- What You display. Anything You show in the Software can be seen by every user who is allowed to open that screen. You decide what that is.
8.11 Video relay and codecs. Raylux Nexus can take a video stream from a camera and pass it to a browser. It passes the stream through as the camera sent it and does not decode or re-encode it. The browser or device that displays the video decodes it using its own codec support. Video compression formats such as H.264 and H.265 (HEVC) are covered by patents held by third parties, and patent licenses for them (including through codec patent pools) are a matter between those holders, camera manufacturers, device and browser makers and, where their use requires one, You. Licensor grants no patent license for any video codec and no right under any codec patent pool, and this Agreement licenses nothing that You need from a camera manufacturer or a codec patent holder. Licensor does not warrant that any camera, stream, or codec will work with the Software or that video will be timely, complete, or free of delay.
8.12 Map data and attribution. Map data You load comes with its own license. Data from OpenStreetMap is licensed under the Open Database License (ODbL) 1.0 and requires credit to "OpenStreetMap contributors"; the Software shows the credit for the source You configure, and for a street map drawn from a vector map file shows the OpenStreetMap credit in the corner of the map. You will not remove or hide it. You are responsible for any other obligation that a map data license places on You, including any share-alike or attribution obligation that arises if You publish, share, or redistribute map files, tiles, or databases derived from them outside Your organization. Licensor grants no license to any map data or imagery.
9. SAFETY — THE CRITICAL SECTION
9.1 Raylux is not a safety system. The Software is general-purpose supervisory control and data acquisition software. It is not and must not be used as:
- a safety instrumented system (SIS) or any part of one;
- an emergency shutdown (ESD) system;
- a burner management system, fire and gas system, or machine guarding or interlock system;
- a protective layer as that term is used in IEC 61511 / ISA-84 layer-of-protection analysis; or
- the sole or final means by which any hazardous condition is detected, prevented, contained, or terminated.
9.2 No functional-safety certification. The Software has not been developed to, assessed against, or certified under IEC 61508, IEC 61511, ISA-84, ISO 13849, EN 62061, or any other functional-safety standard, and it carries no Safety Integrity Level (SIL) or Performance Level (PL) rating of any kind. No statement by Licensor, in documentation, marketing, or otherwise, should be read as such a rating. Licensor has made no claim of suitability for safety-related use and makes none here.
9.3 Your responsibility for independent protective layers. You are solely responsible for ensuring that every hazardous process, machine, or condition under supervision by the Software is protected by independent safety systems that do not depend on the Software, on the computer running it, on its network, or on its correct operation. These include, without limitation, hardwired emergency stops, safety relays and safety-rated PLCs, mechanical and pressure-relief devices, independent alarm and trip systems, and appropriate operator procedures and training. Those layers must be designed to bring the process to a safe state when the Software fails, hangs, produces wrong values, produces stale values, produces no values at all, is compromised, or is simply switched off.
9.4 Modes of failure You must design for. Without limiting Section 9.3, You acknowledge that the Software may, in normal operation and without notice:
- display values that are stale, out of date, or of poor or unknown quality;
- fail to display, evaluate, or annunciate an alarm;
- lose communication with a device and continue to display the last value it received;
- write a value to a device late, out of order, or not at all;
- be delayed or interrupted by the operating system, the network, virtualization, disk or memory exhaustion, or ordinary software defects;
- be restarted, updated, patched, or shut down by Your own IT operations; and
- refuse new connections from operator screens (Spectrum and Lens), so that a screen that disconnects or restarts cannot reconnect; refuse requests to list active alarms, read the alarm journal, or acknowledge an alarm; stop sending alarm notifications by e-mail, SMS, or voice call; and refuse to add tags, device connections, or users, if Your License Key is missing, expires beyond the grace period, is revoked, is not valid for the running version, is the subject of a notice under Section 5.4A once its seven (7) days have passed, or has not matched the machine's hardware for the seven (7) days in Section 5.4B (Sections 5.3, 5.4, 5.4A and 5.4B), or if You install a release in a later generation (Section 6.3).
Your protective layers must be safe against every one of these.
9.5 The "safe state" feature is a convenience, not a protective layer. The Software can be configured to drive designated output tags to declared values on shutdown or device disconnect. This is a best-effort assist that runs on the same software, on the same computer, over the same network whose failure it is reacting to. It may not run, may run partially, and may run too late. It is not a fail-safe mechanism, and it must never be relied upon as one. Fail-safe behavior is the responsibility of the PLC, the safety PLC, and the hardwired protective equipment.
9.6 Prohibited uses. You will not use the Software in, or in connection with, the operation of nuclear facilities, aircraft navigation or flight control, life support or other medical devices, weapons systems, or any other application in which the failure of the Software could reasonably be expected to lead to death or serious personal injury — unless and to the extent that independent, certified protective systems meeting Section 9.3 render the Software's failure incapable of causing that harm. Licensor specifically disclaims all liability for any such use.
9.7 Qualified personnel. The Software is intended for use by personnel qualified in industrial control systems who understand the process being supervised and the consequences of a control action. You are responsible for the competence, training, and supervision of everyone who configures or operates it, and for testing every configuration before it supervises live plant.
9.8 Security is Your responsibility too. The Software is designed to be deployed on a protected control network. You are responsible for network segmentation, physical access control, credential management, patching of the underlying operating system, and backup and recovery. A Nexus Instance exposed directly to the public internet is outside the intended deployment and outside any warranty in Section 10.
9.9 Your indemnity for safety-related use. You will defend, indemnify, and hold harmless Licensor and its officers, employees, and suppliers from and against any claim, demand, proceeding, loss, damage, fine, penalty, cost, and expense (including reasonable legal fees) arising out of or relating to (a) Your use of the Software in breach of Section 9.1, 9.3, or 9.6, (b) any death, personal injury, or property damage arising from Your failure to implement the independent protective layers required by Section 9.3, or (c) any third-party claim arising from Customer Content, or from Your collection, viewing, recording, or display of camera video in breach of Section 8.10, including claims under surveillance, privacy, recording, and notice laws. This obligation survives termination.
9.10 Acknowledgment. You acknowledge that You have read Section 9, that the allocation of risk it describes is a material inducement to Licensor to make the Software available at its stated price, and that the price of the Software reflects this allocation of risk. Without it, Licensor would not license the Software at all.
9.11 AI Features are decision support and are not a protective layer. Output produced by or through AI Features, including any explanation, likely cause, recommendation, summary, chat reply, alarm note, agent result, or proposed change, comes from an AI model that Licensor does not control. It may be wrong, incomplete, out of date, influenced by text in Your plant data, or stated with more confidence than the evidence supports. The Software labels AI output as AI-generated; the label does not make it reliable. You will treat it as advisory only, have a qualified person review it before acting on it, and never rely on it as a protective layer, as a safety function, to decide that a condition is safe, or in place of the measures that Sections 9.3 and 9.4 require. You will not use AI Features as, or as a component of, a safety system, or as a safety component in the operation of critical infrastructure. Section 9 applies to AI Features in full.
9.12 Operator chat, agents, and approved changes. An AI Feature can propose a change, including the writing of a value to a tag, but it applies nothing until a person with the necessary permission approves it. Approving a proposal is Your act, exactly as if the approver had made the change by hand, and Licensor is not responsible for its consequences. The reason that accompanies a proposal is the model's and can be persuasive and wrong; read the change, not the reason. Operator chat gives operators a way to ask questions about what they can see, and it can propose a tag write for approval; it is not a substitute for plant procedures, interlocks, or the safety system. Agents act without a person present: an agent's result, including a note attached to an alarm notification, can be late, missing, or wrong, and a notification may be sent without it. You must not rely on any agent to detect, report, escalate, or respond to a hazardous condition, and You will make sure alarm and trip functions never depend on an AI Feature. Restrict tag access and roles so that only those You intend can approve a change.
9.13 Controls that write. The Software includes components that write values to devices and tags when someone touches them, including buttons, sliders and draggable setpoint handles, on-screen keypads and text entry, editable tables and grids, and schedule editors. Each is a way for a mistaken touch, a mistyped value, a stale display, a wrong row, a drag that lands in the wrong place, a clock or time-zone error, or an unauthorized user to command a value You did not intend, and a write can reach a device late, out of order, or not at all (Section 9.4). Range limits, confirmation prompts, staged Apply steps, electronic signatures, and access settings in the Software reduce mistakes; they are conveniences, not protective layers. You are responsible for enforcing limits, interlocks, and permitted ranges in the PLC or controller, for restricting who may write, and for testing every writable component before it supervises live plant. A schedule edited in the Software is a set of values written to tags; whether and when equipment follows it depends on the controller, its clock, and the network.
9.14 Video is not verification. Camera video shown by the Software may be delayed, frozen, compressed, incomplete, or stale, and can fail without warning. Do not rely on it to decide that a person is clear of equipment, that a guard is closed, or that a condition is safe.
9.15 Maps and positions. Maps, imagery, positions, and markers, including markers that reflect tag values or alarms, are for situational awareness. Licensor gives no warranty of their accuracy, currency, completeness, or alignment, and they must not be used for navigation, survey, property boundaries, emergency dispatch, or locating buried or hidden services or hazards. Use surveyed drawings and utility-locating services for those.
10. Warranty and disclaimer
10.1 Limited warranty. Licensor warrants to You that, for ninety (90) days from delivery, the Software will perform substantially in accordance with its accompanying documentation. Your sole and exclusive remedy, and Licensor's entire liability, for breach of this warranty is, at Licensor's option: (a) repair or replacement of the Software, or (b) refund of the fees You paid for the affected License Key, on return or destruction of all copies. This warranty does not apply to trial or evaluation licenses, to the unlicensed state described in Section 5.3, to a Nexus Instance running modified Third-Party Components under Section 8.2, or to any failure caused by Your hardware, Your network, Your configuration, Your scripts, third-party devices, cameras, map or tile services, AI clients and AI model providers, or use contrary to the documentation.
10.2 DISCLAIMER. EXCEPT FOR THE EXPRESS LIMITED WARRANTY IN SECTION 10.1, AND TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND. LICENSOR AND ITS SUPPLIERS EXPRESSLY DISCLAIM ALL OTHER WARRANTIES, CONDITIONS, AND REPRESENTATIONS, WHETHER EXPRESS, IMPLIED, STATUTORY, OR ARISING FROM COURSE OF DEALING OR USAGE OF TRADE, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, ACCURACY, OR QUIET ENJOYMENT.
10.3 No warranty of uninterrupted or error-free operation. LICENSOR DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED, TIMELY, SECURE, OR ERROR-FREE; THAT ANY VALUE IT DISPLAYS IS CURRENT, ACCURATE, OR OF GOOD QUALITY; THAT ANY ALARM WILL BE EVALUATED OR ANNUNCIATED; THAT ANY COMMAND WILL REACH A DEVICE OR BE EXECUTED BY IT; OR THAT DEFECTS WILL BE CORRECTED. THE SOFTWARE IS NOT A SUBSTITUTE FOR INDEPENDENT VERIFICATION OF THE STATE OF YOUR PROCESS.
10.4 Third-Party Components and Third-Party Services are provided under their own licenses or terms and, so far as those permit, without warranty of any kind from Licensor. This includes the accuracy of any map, the output of any AI model, and the availability of any camera or service.
10.5 Some jurisdictions do not allow the exclusion of implied warranties, so parts of Section 10.2 may not apply to You. In that case, any implied warranty that cannot be excluded is limited in duration to the ninety (90) day period in Section 10.1.
11. Limitation of liability
11.1 EXCLUSION OF INDIRECT DAMAGES. TO THE MAXIMUM EXTENT PERMITTED BY LAW, LICENSOR AND ITS SUPPLIERS WILL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR FOR ANY LOSS OF PROFITS, REVENUE, PRODUCTION, THROUGHPUT, YIELD, OR GOODWILL; PLANT OR PRODUCTION DOWNTIME; LOSS, SPOILAGE, OR CONTAMINATION OF PRODUCT OR MATERIALS; DAMAGE TO OR DESTRUCTION OF EQUIPMENT OR FACILITIES; ENVIRONMENTAL DAMAGE OR REMEDIATION COST; REGULATORY FINE OR PENALTY; COST OF SUBSTITUTE GOODS OR SERVICES; OR LOSS OR CORRUPTION OF DATA, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY (CONTRACT, TORT INCLUDING NEGLIGENCE, STRICT LIABILITY, OR OTHERWISE), EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND EVEN IF A REMEDY FAILS OF ITS ESSENTIAL PURPOSE.
11.2 CAP. TO THE MAXIMUM EXTENT PERMITTED BY LAW, LICENSOR'S TOTAL AGGREGATE LIABILITY ARISING OUT OF OR RELATING TO THIS AGREEMENT OR THE SOFTWARE, FROM ALL CAUSES OF ACTION COMBINED, WILL NOT EXCEED THE GREATER OF (a) THE AMOUNT YOU ACTUALLY PAID LICENSOR FOR THE LICENSE KEY GIVING RISE TO THE CLAIM IN THE TWELVE (12) MONTHS PRECEDING THE EVENT, AND (b) US$100.
11.3 Exceptions. Nothing in this Agreement excludes or limits liability to the extent that applicable law does not permit it to be excluded or limited. Sections 11.1 and 11.2 do not limit Your payment obligations or Your indemnity under Section 9.9.
11.4 Basis of the bargain. The limitations in Sections 10 and 11 apply notwithstanding any failure of essential purpose of any limited remedy, and are an essential and bargained-for element of the consideration between the parties. The fees for the Software are set on the assumption that these limitations apply. If You require a different allocation of risk for a safety-related or high-consequence deployment, contact Licensor to negotiate separate written terms and separate pricing; absent such a signed agreement, these limits govern.
11.5 Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so the above may not apply to You in full.
12. Term and termination
12.1 Term. This Agreement takes effect when You first install or use the Software and continues until terminated.
12.2 Termination by You. You may terminate at any time by ceasing all use and destroying or deleting all copies of the Software.
12.3 Termination by Licensor. Licensor may terminate this Agreement if You materially breach it and do not cure the breach within thirty (30) days of written notice. For a breach of Section 3(c) (tampering with license enforcement) or Section 9.6 (prohibited uses), Licensor may terminate immediately on notice.
12.4 Effect. On termination, the license granted in Section 2 ends and You must cease use and destroy all copies. Termination does not by itself stop an installed Nexus Instance, and ceasing use is Your obligation. License enforcement works only as Section 5 describes: a Nexus Instance whose License Key is missing, expired, revoked, not valid for the running version, the subject of a notice under Section 5.4A, or no longer matching the machine's hardware under Section 5.4B enters the unlicensed state in Section 5.3 and stops its metered functions. Licensor does not otherwise control or access Your Nexus Instance. Licensor may exercise its remedies at law for continued use after termination.
12.5 Survival. Sections 1, 3, 4, 8, 9, 10, 11, 12.4, 12.5, 13, and 14 survive termination.
13. Governing law and disputes
13.1 Governing law. This Agreement is governed by the laws of the State of Colorado, United States, without regard to its conflict-of-laws rules. The United Nations Convention on Contracts for the International Sale of Goods does not apply.
13.2 Venue. The state and federal courts located in Boulder County, Colorado have exclusive jurisdiction, and each party consents to personal jurisdiction and venue there and waives any objection based on inconvenient forum.
13.3 Injunctive relief. Either party may seek injunctive or other equitable relief in any court of competent jurisdiction to protect its intellectual property rights.
14. General
14.1 Export control. The Software is subject to United States export control laws and may be subject to those of other jurisdictions. You will not export, re-export, or transfer the Software in violation of them, and You represent that You are not located in, under the control of, or a national or resident of any country or entity subject to United States embargo or sanctions, and that You do not appear on any United States government restricted-party list.
14.2 U.S. Government end users. The Software is "commercial computer software" and "commercial computer software documentation" as those terms are used in FAR 12.212 and DFARS 227.7202. Government end users acquire only the rights stated in this Agreement.
14.3 Assignment. You may not assign this Agreement or transfer any License Key without Licensor's prior written consent, except that You may assign it in full to a successor in connection with a merger, acquisition, or sale of substantially all assets, on written notice to Licensor. Licensor may assign this Agreement freely. Any attempted assignment contrary to this Section is void.
14.4 Entire agreement. This Agreement, together with any order form or separate signed agreement between the parties, is the entire agreement about its subject matter and supersedes all prior proposals and communications. If a separate written agreement signed by both parties conflicts with this Agreement, that agreement governs. Any terms on Your purchase order or vendor portal are rejected and have no effect.
14.5 Amendment. Licensor may revise this Agreement for future versions of the Software. Revised terms apply to versions You install after they take effect; the terms You accepted continue to govern the versions You have already installed.
14.6 Severability. If any provision is held unenforceable, it is modified to the minimum extent necessary to make it enforceable, or severed if it cannot be, and the rest remains in force. The parties intend that if the limitations in Sections 10 or 11 are held unenforceable in whole or in part, Licensor's liability is limited to the maximum extent permitted by applicable law.
14.7 Waiver. A failure to enforce any provision is not a waiver of it.
14.8 Relationship. The parties are independent contractors. Nothing creates a partnership, agency, joint venture, or employment relationship.
14.9 Force majeure. Neither party is liable for a delay or failure caused by events beyond its reasonable control.
14.10 Notices. Notices to Licensor go to 4845 Pearl East Cir Ste 118 #837445, Boulder, CO 80301. Notices to You go to the address associated with Your license or order.
14.11 Language. This Agreement is in English. Any translation is for convenience only, and the English text governs.
14.12 Contact. Raylux L.L.C., 4845 Pearl East Cir Ste 118 #837445, Boulder, CO 80301, support@rayluxscada.com.
Appendix A — Third-Party Notices
The Software incorporates the components below. Each is licensed under its own terms, and those terms govern that component (Section 8.1). Full license texts are installed with the Software in the licenses/ directory of the installation folder and are also available at https://rayluxscada.com/notices.
This inventory was produced by reading the actual build — the vcpkg copyright file each package installs, the fetched source trees, and the resolved npm production closure. It is maintained in docs/THIRD-PARTY-NOTICES.md.
A.1 Copyleft components and source availability
| Component | License | Ships in | Linkage |
|---|---|---|---|
| Qt 6 | LGPL-3.0 | Raylux Studio, Raylux Lens | Dynamic |
| libmariadb | LGPL-2.1 | Raylux Nexus | Dynamic |
| mariadb-connector-cpp | LGPL-2.1 | Raylux Nexus | Dynamic |
| libplctag | MPL-2.0 (dual MPL-2.0 / LGPL; Licensor elects MPL-2.0) | Raylux Nexus | Dynamic |
| open62541 / open62541pp | MPL-2.0 | Raylux Nexus | Dynamic |
| FFmpeg (libavformat, libavcodec, libavutil) | LGPL-2.1-or-later (built without GPL, version-3, and non-free options) | Raylux Nexus (camera relay) | Dynamic |
| libdatachannel | MPL-2.0 | Raylux Nexus (camera relay) | Dynamic |
| libjuice | MPL-2.0 (package metadata says LGPL-2.1; see Section 8.3) | Raylux Nexus (camera relay) | Dynamic |
| plog | MPL-2.0 | Raylux Nexus (camera relay) | Header-only, compiled into libdatachannel |
Source code and relinking information for all of them: https://rayluxscada.com/source (Section 8.4).
A.2 Native components
| Component | License |
|---|---|
| brotli | MIT |
| c-ares | MIT |
| curl | curl (MIT-style permission notice) |
| Drogon | MIT |
| exprtk | MIT |
| FFmpeg | LGPL-2.1-or-later |
| fmt | MIT |
| jsoncpp | Public Domain / MIT dual |
| jwt-cpp | MIT |
| libdatachannel | MPL-2.0 |
| libharu | zlib/libpng-style |
| libjuice | MPL-2.0 |
| libmariadb | LGPL-2.1 |
| libpng | PNG Reference Library License v2 |
| libplctag | MPL-2.0 (elected) |
| libpq | PostgreSQL License |
| libsrtp | BSD-3-Clause |
| lz4 | BSD-2-Clause |
| mariadb-connector-cpp | LGPL-2.1 |
| nanobind | BSD-3-Clause |
| nayuki-qr-code-generator | MIT |
| nlohmann/json | MIT |
| open62541 / open62541pp | MPL-2.0 |
| OpenSSL | Apache-2.0 |
| plog | MPL-2.0 |
| Qt 6 | LGPL-3.0 |
| spdlog | MIT |
| SQLite | Public Domain |
| SQLiteCpp | MIT |
| trantor | BSD-3-Clause |
| usrsctp | BSD-3-Clause |
| zlib | zlib |
GoogleTest (BSD-3-Clause) is used for testing only and is not distributed with the Software.
A.3 Bundled runtimes
| Component | License | Notes |
|---|---|---|
| CPython 3.14 (free-threaded) | Python Software Foundation License Agreement | Installed as a required feature of the Windows package |
| Microsoft Visual C++ Runtime | Microsoft redistributable terms | Chained by the installer; installed permanently and not removed on uninstall |
A.4 Chromium
Raylux Studio and Raylux Lens embed the Chromium browser engine via Qt WebEngine. Chromium is distributed under BSD-3-Clause together with a large set of additional third-party notices. That complete notice set is reproduced in licenses/chromium/ in the installation directory.
A.5 Fonts
| Font | License |
|---|---|
| Geist, Geist Mono (including the glyph files generated from Geist for street-map labels) | SIL Open Font License 1.1 |
| Material Symbols Outlined | Apache-2.0 |
The OFL requires its text to travel with the font files; it is installed alongside them.
A.6 Web components
Every component below is permissively licensed. No copyleft component is present in the browser bundles.
MIT: @reduxjs/toolkit, @standard-schema/spec, @standard-schema/utils, @types/d3-array, @types/d3-color, @types/d3-ease, @types/d3-interpolate, @types/d3-path, @types/d3-scale, @types/d3-shape, @types/d3-time, @types/d3-timer, @types/react, ag-charts-community, ag-charts-core, ag-charts-locale, ag-charts-react, ag-charts-types, clsx, csstype, decimal.js-light, es-toolkit, eventemitter3, immer, react, react-dom, react-is, react-redux, react-router, react-router-dom, recharts, redux, redux-thunk, reselect, scheduler, tiny-invariant, use-sync-external-store, zustand
ISC: d3-array, d3-color, d3-format, d3-interpolate, d3-path, d3-scale, d3-shape, d3-time, d3-time-format, d3-timer, internmap, lucide-react
Apache-2.0: material-symbols, pdfjs-dist (PDF.js, the document viewer)
SIL OFL 1.1: @fontsource/geist-mono, @fontsource/geist-sans
BSD-3-Clause: d3-ease, maplibre-gl 6.12.0 (MapLibre GL JS, the street map), pmtiles 4.5.0 (PMTiles reader)
MIT AND ISC: victory-vendor
Map component dependencies (loaded only when a project shows a street map from a vector map file): maplibre-gl has 24 permissively licensed dependencies and pmtiles has one (ISC, MIT, BSD-2-Clause, BSD-3-Clause, and @maplibre/mlt under MIT or Apache-2.0 at Your option), listed with their licenses in licenses/maps/.
Map data is not part of the Software. Licensor ships none. Data You load is licensed by its publisher; OpenStreetMap data is (c) OpenStreetMap contributors under the ODbL 1.0 (https://www.openstreetmap.org/copyright), and Section 8.12 applies.
Raylux, Raylux Nexus, Raylux Studio, Raylux Spectrum, and Raylux Lens are trademarks of Raylux L.L.C. All other trademarks are the property of their respective owners.
Copyright © 2025-2026 Raylux L.L.C. All rights reserved.