Nemo

Latest version: v6.0.3

Safety actively analyzes 693883 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 22 of 23

1.4.0

Not secure
New feature

* Tools can now have multiple backup owners, instead of a single secondary owner.

1.3.2

Not secure
Bug fix

Fixed a bug where non-PI users' billing reports were not displaying correctly

1.3.1

Bug fix

Fixed a visual display bug for the billing section of the Usage page

1.3.0

Not secure
New features

News
* Added a News page, where staff can post general news stories about the lab. Stories can be updated when things change, and archived when they're no longer relevant.
* Sample news stories have been added to the Splash Pad.

Notifications
* Landing Page Choices can now be associated with Notifications, a count of unread items (displayed by the icon on the landing page)
* Notifications are created per-user when an event happens:
* A news notification is created for a user when there is a new news story, or an update to a news story.
* A safety notification is created when a staff member has an unread safety issue to address.
* Notifications are automatically cleared for the user after the view the unread item (news story or safety issue)
* Archiving a story clears all notifications for that story
* Only active users receive notifications. If a story is updated, inactive users will not receive a notification

Billing report
* A billing report can now be displayed in the Usage page, at /usage/
* NEMO only accepts very specific data formats from REST endpoints. This is currently completely undocumented. We plan to improve this portion of the code over time, to make it easy to present billing data from external sources.

Minor changes
* The URL for /nanofab_usage/ has been updated to /usage/ for brevity.

1.2.3

Not secure
Stability improvement

Gunicorn performance improved in the Docker image:

Gunicorn was creating and destroying sockets at a very fast rate (when many users are using NEMO). This was resulting in a large number of sockets remaining in the TCP TIME_WAIT or CLOSE_WAIT states, eventually choking NEMO. The culprit was a default setting in Gunicorn: keepalive = 2 seconds.

The Gunicorn process inside the Docker image now has its own configuration file: `/etc/gunicorn_configuration.py`. Inside this file, the keepalive is set to 60 seconds. This will work well behind a reverse proxy (Nginx). Furthermore, the Gunicorn configuration file automatically creates the appropriate number of workers based on how many CPU cores are available (`workers = 2 * cpu_count + 1`). This is recommended by the Gunicorn documentation and reduces the amount of performance tuning required to get NEMO working well in any production environment.

1.2.2

Not secure
Bug fix

* Fixed a bug where tool status for scheduled outages weren't always displayed or referenced properly (generating templating errors).

Page 22 of 23

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.