Nx Cloud Terms of Service
Effective May 21, 2020 (Version 1.0)
This Nx Cloud Terms of Service ("Agreement") is between you and Narwhal Technologies Inc ("we", "Nrwl", "The Company"), a Delaware Corporation with offices at 2200 E Williams Field Road, Suite 200, Gilbert, AZ 85295. This agreement may be entered into by you as an individual, or on behalf of your company, either of which shall be referred to as "The Customer" or "you". This agreement may be modified from time to time, in which case we will make reasonable efforts to notify you of such changes. Continued usage of services constitutes agreement with such changes.
- "Services" refers to the various services provided by Nx Cloud to the Customer.
- "Fees" refers to money paid by The Customer to Nrwl for use of Services.
- "Nx" refers to the open source Nx toolkit, sponsored and maintained by Nrwl, found at https://nx.dev.
- "Nx Cloud" refers to the web application at https://nx.app, the services and APIs that power Nx Cloud, and tools that communicate with Nx Cloud APIs from different user environments.
- "Nx Cloud Task Runner" a package available as "@nrwl/nx-cloud" from npm (npmjs.com) which facilitates communication between an Nx Workspace and Nx Cloud.
- "Nx Workspace" a workspace generated by Nx, containing source code. The workspace may or may not be connected to Nx Cloud.
- "Nx CLI" a command line interface to invoke tasks and commands in an Nx Workspace.
- "Nx Cloud Workspaces" are the representation of an Nx Workspace within Nx Cloud.
- "Computation Result" is the combination of process output and output files as the result of running an Nx task.
- "Computation Cache" refers to a cache stored locally on a machine, or in Nx Cloud. Each entry is a combination of file outputs, and process outputs, which can be replayed on different machines if appropriate.
- "The App" refers to the web application used to manage Nx Cloud Workspaces, which can be found at https://nx.app.
- "User" a user of Services, through the https://nx.app web application, or a contributor to an Nx Workspace that is connected with Nx Cloud.
- "Billable Time Saved" is the difference in time from running a task with no local or remote Computation Cache hits, minus the time it takes to run a task with remote Computation Cache hits.
Nx Cloud Account
All users of Nx Cloud must have an Nx Cloud account in order to manage their connected workspaces, manage billing, and use other features of Nx Cloud. Anyone can set up a free account by visiting https://nx.app and clicking "Register". The account may also be referred to as a "Nrwl Account", which can also be used to access other Nrwl services, such as Nrwl Connect (https://connect.nrwl.io). Nrwl Account registration and authentication are managed by a third-party service, Auth0 (auth0.com). You may delete your account by emailing firstname.lastname@example.org from the email address associated with your account, and requesting that your account be deleted.
Nx Cloud Workspaces
To connect an Nx Workspace to Nx Cloud, you must set up an Nx Cloud Workspace, then configure your Nx Workspace to interact with it. Workspaces are free to create, and can be deleted from within The App. Nx Cloud Workspaces may have 1 or more tokens associated with them, which are used to allow Nx to communicate with Nx Cloud. There are two types of Tokens, Read-Only tokens, and Read/Write Tokens. Read only tokens allow Nx Workspaces to pull from Nx Cloud's Computation Cache, but not push new computation results to the cache. Read-only tokens will still allow analytics data about builds to be sent to Nx Cloud. Read/Write tokens allow reading from the Nx Cloud Computation Cache, as well as pushing new Computations to Nx Cloud.
Data Stored by Nx Cloud
If an Nx Workspace is connected to Nx Cloud via the Nx Cloud Task Runner and either a read-only or read/write Token, it may send the following data to Nx Cloud:
- Analytics data - containing build timings, task names, and other data necessary data to power the advanced reporting and billing calculations in Nx Cloud.
- Computation Results - containing output files and process output from running an Nx Task.
Computation results are sent over https, and are encrypted at rest. Select engineers at Nrwl may access cache results at the Customer's request for the purpose of troubleshooting, unless the Customer has enabled end-to-end encryption, in which case Nrwl staff will only see obfuscated Computation Cache results.
Analytics data, user metadata, and workspace metadata are sent over https, and are stored in a database accessible by select Nrwl engineers.
Computation Results and Analytics data will be sent to Nx Cloud automatically by the Nx Cloud Task Runner when a User invokes a task using the Nx CLI, assuming the workspace has provided an Nx Cloud Token for the Nx Cloud Workspace either in nx.json or via an environment variable.
At this time, source code from an Nx Workspace is not shared with Nx Cloud. There may be additional services added to Nx Cloud in the future that would require sending and storing source code, but such services would explicitly state this requirement.
Nrwl strongly believes in User privacy, and focuses on collecting and storing the minimal amount of data needed to provide valuable services to our users. Critical User account information and credentials are stored and managed by Auth0, which is compliant with strict security standards and has been audited for compliance with SOC 2 Type II, ISO27001, ISO27018 and other guidelines available at https://auth0.com/security/. In addition to User profile data managed by Auth0, Nrwl stores the following metadata about Users, in order to facilitate usage of Nx Cloud:
- First and Last Name
- Email address
- An avatar URL (if an avatar has been associated with the User's email address at https://gravatar.com)
- Timestamps of account creation, changes, and logins.
If additional User metadata is necessary in the future, Nrwl will determine if the type of data is significant enough to warrant changes or amendments to the Agreement.
Users who find Nx Cloud a valuable addition to their Nx Workspace may wish to create a billing subscription to increase the available usage threshold, or to enable other paid services. Subscriptions may be created, edited, or deleted from the Workspace Settings page of The App.
The pricing for Nx Cloud is based on time savings from remote cache hits, referred to as Billable Time Saved. When an Nx Task is run, the Nx Cloud Task Runner checks to see if there is a corresponding locally cached computation result. If no result is found, the Task Runner then checks Nx Cloud's computation cache. If still no result is found, the Task Runner will run the task and measure the time for that task and record that timing in Nx Cloud. The next time the same task is run, Nx Cloud will compute a hash of the task to be built, then check local and remote computation cache's for a corresponding result. If the result is found in the remote cache, the Nx Cloud Task Runner will download and replay the result, and record the Time Savings as the original computation time minus the computation time with a remote cache hit, which is considered Billable Time Saved.
For example, if a task took 4 minutes (240 seconds) to run fresh, then took 10 seconds to run on a different machine thanks to a remote cache hit, the Billable Time Saved would be 230 seconds.
The current pricing for Billable Time Saved is $1 USD per hour saved.
Detailed information about time saved for an Nx Cloud Workspace can be found in the Workspace Overview screen of The App.
When setting up a subscription, Users can set a monthly billing limit to prevent surprising bills from appearing. If the limit is reached before the end of the month, the Nx Cloud Computation Cache becomes inaccessible until the monthly limit is increased, or until the next billing cycle. In such case, the Nx Workspace tasks will continue to work the same as they had prior to introducing Nx Cloud into the workspace.
Subscriptions will be billed monthly based on actual Billable Time Saved during the previous month, with each billing cycle starting on the day of the month the subscription was created (or nearest day to it).