{"id":45720017,"url":"https://github.com/rnwolfe/node-pxgrid","last_synced_at":"2026-02-25T05:46:20.365Z","repository":{"id":34840343,"uuid":"168768903","full_name":"rnwolfe/node-pxgrid","owner":"rnwolfe","description":"A Node.js module to work with Cisco PxGrid 2.0 (REST + WebSockets)","archived":false,"fork":false,"pushed_at":"2023-01-07T23:59:40.000Z","size":2725,"stargazers_count":4,"open_issues_count":8,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-17T01:17:57.958Z","etag":null,"topics":["cisco-ise","devnet","pxgrid"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rnwolfe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-01T22:33:57.000Z","updated_at":"2021-04-28T16:09:35.000Z","dependencies_parsed_at":"2023-01-15T09:29:29.531Z","dependency_job_id":null,"html_url":"https://github.com/rnwolfe/node-pxgrid","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/rnwolfe/node-pxgrid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnwolfe%2Fnode-pxgrid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnwolfe%2Fnode-pxgrid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnwolfe%2Fnode-pxgrid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnwolfe%2Fnode-pxgrid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rnwolfe","download_url":"https://codeload.github.com/rnwolfe/node-pxgrid/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnwolfe%2Fnode-pxgrid/sbom","scorecard":{"id":779514,"data":{"date":"2025-08-11","repo":{"name":"github.com/rnwolfe/node-pxgrid","commit":"857c32b942ede31389380f487affd44e38454dad"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/14 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"34 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-cph5-m8f7-6c5x","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-6vfc-qv3f-vr6c","Warn: Project is vulnerable to: GHSA-5v2h-r2cx-5xgj","Warn: Project is vulnerable to: GHSA-rrrm-qjm4-v8hf","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-mxhp-79qh-mcx6","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-cf4h-3jhx-xvhq","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T04:34:47.403Z","repository_id":34840343,"created_at":"2025-08-23T04:34:47.403Z","updated_at":"2025-08-23T04:34:47.403Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29811626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T05:36:42.804Z","status":"ssl_error","status_checked_at":"2026-02-25T05:36:31.934Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cisco-ise","devnet","pxgrid"],"created_at":"2026-02-25T05:46:19.614Z","updated_at":"2026-02-25T05:46:20.358Z","avatar_url":"https://github.com/rnwolfe.png","language":"JavaScript","readme":"# node-pxgrid\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://npmjs.org/package/node-pxgrid\"\u003e\u003cimg src=\"https://badgen.net/npm/v/node-pxgrid\" alt=\"npm version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://travis-ci.org/rnwolfe/node-pxgrid\"\u003e\n  \u003cimg src=\"https://travis-ci.org/rnwolfe/node-pxgrid.svg?branch=master\" alt=\"Build Information\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://badgen.net/badge/code%20style/prettier/f2a\" alt=\"Code Style: Prettier\" /\u003e\n  \u003cimg src=\"https://badgen.net/github/license/rnwolfe/node-pxgrid\" alt=\"license\" /\u003e\n  \u003ca href=\"https://developer.cisco.com/codeexchange/github/repo/rnwolfe/node-pxgrid\"\u003e\u003cimg src=\"https://badgen.net/badge/cisco devnet/published/049FD9\" alt=\"Published on Cisco Code Exchange\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis is a Node.js module for interacting with Cisco PxGrid 2.0 that uses REST and WebSockets along with a STOMP-based messaging protocol. You can read more about how pxGrid works [on Cisco DevNet](https://developer.cisco.com/docs/pxgrid/#!introduction-to-pxgrid-2-0).\n\nIt has great performance improvements over using Cisco ISE's standard REST API as well as PxGrid 1.0, as well as the obvious benefits that come with a subscribe/publish model over a general pull model.\n\n## Documentation\n\n[Please view the documentation here](https://rnwolfe.github.io/node-pxgrid/).\n\nFeel free to open an issue or otherwise contact me if you feel the documentation could be improved upon.\n\n## Installing\n\nInstall using `npm`:\n\n```bash\nnpm i node-pxgrid\n# or save\nnpm i node-pxgrid --save\n```\n\n### Creating a pxGrid account on Cisco ISE\n\nIn order to get started, you will need to create a pxGrid account on Cisco ISE. To my knowledge, Cisco ISE is the only pxGrid controller that exists today, but the package should, theoretically, support any other accurate implementation of pxGrid 2.0. This involves getting a certificate for authenticating your client. [Please follow the steps here to create an account](https://github.com/rnwolfe/node-pxgrid/blob/master/pxgrid-setup.md). Unfortunately, there is no public API that can allow us to do this programmatically at this point.\n\nAfter you have an account, you can use it in your app. Note, that the initial time it registers, it will need to be approved in the pxGrid controller. If you used the above guide, this will be done automatically. The `Control.activate()` function will automatically retry every 30 seconds if it's initial state is pending. Sometimes, the auto-approval may take 1 try before completing.\n\n## Using in an App\n\n### Simplest Setup\n\n```javascript\nconst fs = require('fs');\nconst Pxgrid = require('node-pxgrid');\n\ncerts = [];\ncerts.certPath = './certs/';\ncerts.clientCert = fs.readFileSync(certs.certPath + 'my-node-app.cer');\ncerts.clientKey = fs.readFileSync(certs.certPath + 'my-node-app.key');\ncerts.caBundle = fs.readFileSync(certs.certPath + 'ise-chain.cer');\n\nconst options = {\n  hosts: ['dnaise.ironbowlab.com'],\n  client: 'my-node-app',\n  clientCert: certs.clientCert,\n  clientKey: certs.clientKey,\n  caBundle: certs.caBundle,\n  clientKeyPassword: 'Pxgrid123'\n};\n\nconst client = new Pxgrid.Client(options);\n\nclient.connect().then(session =\u003e\n  client.subscribeToSessions(session, function(message) {\n    console.log(message.body);\n  })\n);\n```\n\n**Note**: In version 1.1.0, the [Client#connect](https://rnwolfe.github.io/node-pxgrid/Client.html#connect) method was added in order to provide a simpler, non-jargon way to connect the broker. All examples and documentation has been updated to use this method. It was also unnecessary in a previous version to use the [Control#activate](https://rnwolfe.github.io/node-pxgrid/Control.html#activate) method; however, it was still in some examples and documentation. This should not have affected usage, but needlessly overcomplicated the examples.\n\n### Manually Instantiate `Control` Class\n\n**Note**: In v1.2.0, I wanted to simplify the setup of the client `Control` versus `Client` pxGrid sessions. You can now pass the options for your client directly into the `Client` class and it will automatically handle the setup of your client. However, if you need to access the `Control` class directly, you can still pass the `Control` instance to `Client` and it will handle activation if it is not already activated.\n\n```javascript\nconst fs = require('fs');\nconst Pxgrid = require('node-pxgrid');\n\ncerts = [];\ncerts.certPath = './certs/';\ncerts.clientCert = fs.readFileSync(certs.certPath + 'my-node-app.cer');\ncerts.clientKey = fs.readFileSync(certs.certPath + 'my-node-app.key');\ncerts.caBundle = fs.readFileSync(certs.certPath + 'ise-chain.cer');\n\nconst pxgridControlOptions = {\n  hosts: ['dnaise.ironbowlab.com'],\n  client: 'my-node-app',\n  clientCert: certs.clientCert,\n  clientKey: certs.clientKey,\n  caBundle: certs.caBundle,\n  clientKeyPassword: 'Pxgrid123'\n};\n\nconst pxgrid = new Pxgrid.Control(pxgridControlOptions);\nconst client = new Pxgrid.Client(pxgrid);\n\nclient.connect().then(session =\u003e\n  client.subscribeToSessions(session, function(message) {\n    console.log(message.body);\n  })\n);\n```\n\nFor a full list of functions, please see [the documentation](https://rnwolfe.github.io/node-pxgrid/). For more example usage, see the [examples](examples/).\n\n## Bugs\n\nFor bugs, [please open an issue](https://github.com/rnwolfe/node-pxgrid/issues).\n\n## License\n\nThis module is licensed under the [MIT license](LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frnwolfe%2Fnode-pxgrid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frnwolfe%2Fnode-pxgrid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frnwolfe%2Fnode-pxgrid/lists"}