npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@synefex/node-red-sila2

v1.0.0

Published

Node-RED nodes for SiLA 2 lab-device servers (gRPC over HTTP/2). Bundled SiLAFramework + SiLAService protos; static proto loading with optional extras.

Readme

@synefex/node-red-sila2

Node-RED nodes for talking to SiLA 2 lab-device servers from Node-RED. SiLA 2 is the open standard for lab automation, layering a Feature / Command / Property contract on top of gRPC over HTTP/2.

This package gives you a connection node and two action nodes built on @grpc/grpc-js and @grpc/proto-loader. Static proto loading (not reflection) so it works against every SiLA 2 server, regardless of implementation language.

npm version License: Apache-2.0

Install

In your Node-RED userDir (typically ~/.node-red/):

npm install @synefex/node-red-sila2

Restart Node-RED. Three new nodes appear in the palette under the Synefex SiLA 2 section.

Nodes

| Node | Purpose | |---|---| | sila-connection | gRPC channel + bundled proto registry. Config node. | | sila-call-command | Invoke an unobservable SiLA 2 command on a feature. | | sila-get-property | Read an unobservable SiLA 2 property (Get_<Name>). |

Quick start

  1. Drop a SiLA 2 connection config node and point it at your SiLA 2 server (host + port). Leave Insecure ticked for a dev server without TLS.
  2. Wire an inject -> SiLA 2 get -> debug flow.
  3. In the SiLA 2 get node:
    • Connection: the one you just made
    • Feature: SiLAService
    • Property: ServerName
  4. Deploy and click inject. payload becomes the server's name string, e.g. "MettlerToledoAX205SiLAServer".

For commands, use SiLA 2 call instead. The bundled SiLAService feature exposes GetFeatureDefinition and SetServerName; for domain features (balances, liquid handlers, etc.) you bring your own .proto files (see "Adding more features" below).

Bundled features

The package always loads two .proto files from protos/:

  • SiLAFramework.proto -- canonical wrapper types (String, Real, Boolean, ...) used by every SiLA 2 feature.
  • SiLAService.proto -- the mandatory core feature every SiLA 2 server implements (ServerName, ServerType, ServerUUID, ServerDescription, ServerVersion, ServerVendorURL, ImplementedFeatures, plus GetFeatureDefinition and SetServerName). Hand-derived from the FDL in sila_base.

That's enough to talk to any SiLA 2 server's identity surface out of the box. For domain features (your actual lab devices) you provide their .proto files via the connection's Extra proto dirs / Extra proto files config.

Adding more features

SiLA 2 features are defined in FDL XML; the .proto is generated from the FDL by the SiLA 2 codegen. If your server is the sila2 Python reference implementation, the generated .proto files live inside the running container and can be copied out with one shell command (see the extract_protos.sh helper in this repo's sila-handoff/ notes).

Once you have the .proto files, drop them in a directory and point the connection node's Extra proto dirs at it (comma-separated list of dirs and/or individual files). The picker dropdowns automatically include any feature that's loaded.

Picker

Open a SiLA 2 call or SiLA 2 get node in the editor and you'll see two dropdowns above the manual fields:

  • Feature: lists every loaded feature.
  • Command / Property: lists the methods on the selected feature, classified by SiLA 2 naming convention (Get_<X> -> property <X>, everything else -> command).

The picker writes the chosen values into the manual text fields below; you can also type by hand.

Why static protos and not reflection

An earlier draft used gRPC reflection. The Python sila2 reference server enables reflection by default, but other SiLA 2 implementations (Java, C#) often do not, and even some sila2 deployments turn it off. Static proto loading is universal -- the package works against every SiLA 2 server we've tested.

Limitations / roadmap

This is the v1.0.0 release. Out of scope for now:

  • Observable commands (the CommandExecutionUUID flow with progress).
  • Observable properties (server-streaming subscriptions).
  • Pinned-cert TLS (insecure and default-trust TLS are available).
  • Decoded sila-error-bin trailer (SiLA 2 framework errors currently surface as generic gRPC errors).

If any of these is blocking for you, open an issue.

License

Apache License, Version 2.0. See LICENSE and NOTICE.