{"id":142726,"name":"VILLASnode","description":"Connecting real-time power grid simulation equipment.","url":"https://git.rwth-aachen.de/acs/public/villas/node","last_synced_at":"2026-04-20T08:31:13.587Z","repository":{"id":249123549,"uuid":"79039","full_name":"acs/public/villas/node","owner":"acs","description":"This a CI-only mirror of https://github.com/VILLASframework/node","archived":null,"fork":false,"pushed_at":null,"size":null,"stargazers_count":0,"open_issues_count":null,"forks_count":0,"subscribers_count":null,"default_branch":"master","last_synced_at":"2025-10-27T11:10:18.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":null,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":null,"icon_url":"https://git.rwth-aachen.de/uploads/-/system/project/avatar/79039/villas_node.png","metadata":{},"created_at":"2022-12-02T12:18:34.986Z","updated_at":"2025-10-20T12:12:09.883Z","dependencies_parsed_at":null,"dependency_job_id":"be0e6c53-0c7b-48c0-bdda-4d7837702255","html_url":"https://git.rwth-aachen.de/acs/public/villas/node","commit_stats":null,"previous_names":["acs/public/villas/node"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:gitlab/acs/node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/owners/acs","download_url":"https://git.rwth-aachen.de/acs/public/villas/node/-/archive/master/node-master.zip","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode/sbom","scorecard":null,"host":{"name":"git.rwth-aachen.de","url":"https://git.rwth-aachen.de","kind":"gitlab","repositories_count":1634,"owners_count":120,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2024-07-18T11:24:06.694Z","updated_at":"2024-07-18T11:24:06.694Z","status":"online","status_checked_at":"2025-10-29T02:23:55.654Z","response_time":180,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T07:09:31.054Z","robots_txt_url":"https://git.rwth-aachen.de/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/owners"}},"owner":{"login":"acs","name":"ACS","uuid":"organization-294","kind":"organization","description":"Institute for Automation of Complex Power Systems","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":null,"repositories_count":1,"last_synced_at":"2024-07-18T17:01:06.720Z","metadata":{},"html_url":"https://git.rwth-aachen.de/acs","funding_links":[],"total_stars":0,"followers":null,"following":null,"created_at":"2024-07-18T17:01:56.778Z","updated_at":"2024-07-18T17:01:56.778Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/owners/acs","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/owners/acs/repositories"},"packages":[],"commits":{"id":1638830,"full_name":"acs/public/villas/node","default_branch":"master","total_commits":6252,"total_committers":49,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":127.59183673469387,"dds":0.5055982085732565,"past_year_total_commits":292,"past_year_total_committers":16,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":18.25,"past_year_dds":0.726027397260274,"last_synced_at":"2025-10-29T04:29:07.788Z","last_synced_commit":"bbc951f10df887daa6a39f242ad7122ec7bad3b6","created_at":"2024-07-24T20:00:23.488Z","updated_at":"2025-10-29T04:29:07.471Z","committers":[{"name":"Steffen Vogel","email":"post@steffenvogel.de","login":null,"count":3091},{"name":"Steffen Vogel","email":"stvogel@eonerc.rwth-aachen.de","login":null,"count":1449},{"name":"Niklas Eiling","email":"niklas.eiling@eonerc.rwth-aachen.de","login":null,"count":296},{"name":"Manuel Pitz","email":"manuel.pitz@eonerc.rwth-aachen.de","login":null,"count":242},{"name":"Daniel Krebs","email":"github@daniel-krebs.net","login":null,"count":223},{"name":"Steffen Vogel","email":"steffen.vogel@opal-rt.com","login":null,"count":189},{"name":"Dennis Potter","email":"dennis@dennispotter.eu","login":null,"count":169},{"name":"Pascal Bauer","email":"pascal.bauer@rwth-aachen.de","login":null,"count":102},{"name":"Philipp Jungkamp","email":"Philipp.Jungkamp@opal-rt.com","login":null,"count":98},{"name":"Georg Reinke","email":"georg.reinke@rwth-aachen.de","login":null,"count":72},{"name":"Philipp Jungkamp","email":"philipp.jungkamp@rwth-aachen.de","login":null,"count":62},{"name":"Sonja Happ","email":"sonja.happ@eonerc.rwth-aachen.de","login":null,"count":48},{"name":"Marvin Klimke","email":"marvin.klimke@rwth-aachen.de","login":null,"count":30},{"name":"Alexandra","email":"alexandra.bach@eonerc.rwth-aachen.de","login":null,"count":22},{"name":"Sonja Kolen","email":"skolen@eonerc.rwth-aachen.de","login":null,"count":18},{"name":"Jitpanu Maneeratpongsuk","email":"jitpanu.maneeratpongsuk@rwth-aachen.de","login":null,"count":15},{"name":"Umar Farooq","email":"ufarooq@eonerc.rwth-aachen.de","login":null,"count":15},{"name":"Leonardo Carreras","email":"leonardo.carreras@eonerc.rwth-aachen.de","login":null,"count":12},{"name":"Steffen Vogel","email":"svogel2@eonerc.rwth-aachen.de","login":null,"count":12},{"name":"Philipp Jungkamp","email":"p.jungkamp@gmail.com","login":null,"count":11},{"name":"Hatim Kanchwala","email":"hatim@hatimak.me","login":null,"count":9},{"name":"Niklas Eiling","email":"niklas@eil.ing","login":null,"count":7},{"name":"Marija Stevic","email":"mstevic@eonerc.rwth-aachen.de","login":null,"count":6},{"name":"Divya Laxetti","email":"divya.laxetti@rwth-aachen.de","login":null,"count":5},{"name":"Iris Köster","email":"ikoester@eonerc.rwth-aachen.de","login":null,"count":4},{"name":"Juan Pablo Noreña-Monsalve","email":"jpnorenam@unal.edu.co","login":null,"count":4},{"name":"Daniel S. Katz","email":"d.katz@ieee.org","login":null,"count":3},{"name":"Divya Laxetti","email":"laxetti.divya@gmail.com","login":null,"count":3},{"name":"Felix Wege","email":"fwege@eonerc.rwth-aachen.de","login":null,"count":3},{"name":"IgnoreWarnings","email":"119685519+IgnoreWarnings@users.noreply.github.com","login":null,"count":3},{"name":"Philipp Jungkamp","email":"p.jungkamp@gmx.net","login":null,"count":3},{"name":"Steffen Vogel","email":"steffen.vogel@rwth-aachen.de","login":null,"count":3},{"name":"Anju","email":"ameghwani@gmail.com","login":null,"count":2},{"name":"Calvin Katt","email":"katt.calvin@gmail.com","login":null,"count":2},{"name":"Divya Laxetti","email":"divyalaxetti@190-001.eduroam.rwth-aachen.de","login":null,"count":2},{"name":"Juan Pablo Noreña-Monsalve","email":"34222866+jpnorenam@users.noreply.github.com","login":null,"count":2},{"name":"Markus Mirz","email":"mmirz@eonerc.rwth-aachen.de","login":null,"count":2},{"name":"Philipp Jungkamp","email":"56401138+PJungkamp@users.noreply.github.com","login":null,"count":2},{"name":"Bekir Altindal","email":"bekir.altindal@rwth-aachen.de","login":null,"count":1},{"name":"Eyke Liegmann","email":"eliegmann@eonerc.rwth-aachen.de","login":null,"count":1},{"name":"Iris Köster","email":"Ikoester@eonerc.rwth-aachen.de","login":null,"count":1},{"name":"Jonas Schroeder","email":"jonas.schroeder1@rwth-aachen.de","login":null,"count":1},{"name":"Markus Grigull","email":"web@grigull.me","login":null,"count":1},{"name":"Matthias Marcus Nowak","email":"marcus.nowak@rwth-aachen.de","login":null,"count":1},{"name":"Niklas Eiling","email":"niklas.eiling@rwth-aachen.de","login":null,"count":1},{"name":"SystemsPurge","email":"naktiyoussef@proton.me","login":null,"count":1},{"name":"Ubuntu","email":"ubuntu@jbu-pju.osc.eonerc.rwth-aachen.de","login":null,"count":1},{"name":"matthiasnowak","email":"55640102+matthiasnowak@users.noreply.github.com","login":null,"count":1},{"name":"root","email":"svg-dla@acs-ubuntu-svg-dla","login":null,"count":1}],"past_year_committers":[{"name":"Steffen Vogel","email":"post@steffenvogel.de","login":null,"count":80},{"name":"Steffen Vogel","email":"steffen.vogel@opal-rt.com","login":null,"count":51},{"name":"Pascal Bauer","email":"pascal.bauer@rwth-aachen.de","login":null,"count":42},{"name":"Niklas Eiling","email":"niklas.eiling@eonerc.rwth-aachen.de","login":null,"count":30},{"name":"Philipp Jungkamp","email":"philipp.jungkamp@rwth-aachen.de","login":null,"count":24},{"name":"Alexandra","email":"alexandra.bach@eonerc.rwth-aachen.de","login":null,"count":20},{"name":"Jitpanu Maneeratpongsuk","email":"jitpanu.maneeratpongsuk@rwth-aachen.de","login":null,"count":15},{"name":"Leonardo Carreras","email":"leonardo.carreras@eonerc.rwth-aachen.de","login":null,"count":12},{"name":"Niklas Eiling","email":"niklas@eil.ing","login":null,"count":7},{"name":"Daniel S. Katz","email":"d.katz@ieee.org","login":null,"count":3},{"name":"Calvin Katt","email":"katt.calvin@gmail.com","login":null,"count":2},{"name":"IgnoreWarnings","email":"119685519+IgnoreWarnings@users.noreply.github.com","login":null,"count":2},{"name":"Bekir Altindal","email":"bekir.altindal@rwth-aachen.de","login":null,"count":1},{"name":"Matthias Marcus Nowak","email":"marcus.nowak@rwth-aachen.de","login":null,"count":1},{"name":"SystemsPurge","email":"naktiyoussef@proton.me","login":null,"count":1},{"name":"matthiasnowak","email":"55640102+matthiasnowak@users.noreply.github.com","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode/commits","host":{"name":"git.rwth-aachen.de","url":"https://git.rwth-aachen.de","kind":"gitlab","last_synced_at":"2025-10-30T00:00:26.421Z","repositories_count":32,"commits_count":5522,"contributors_count":193,"owners_count":12,"icon_url":"https://github.com/gitlab.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories"}},"issues_stats":{"full_name":"acs/public/villas/node","html_url":"https://git.rwth-aachen.de/acs/public/villas/node","last_synced_at":"2025-10-31T09:21:36.870Z","status":"error","issues_count":null,"pull_requests_count":null,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":null,"pull_requests_closed_count":null,"pull_request_authors_count":null,"issue_authors_count":null,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":null,"bot_issues_count":null,"bot_pull_requests_count":null,"past_year_issues_count":null,"past_year_pull_requests_count":null,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":null,"past_year_pull_requests_closed_count":null,"past_year_pull_request_authors_count":null,"past_year_issue_authors_count":null,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":null,"past_year_bot_pull_requests_count":null,"past_year_merged_pull_requests_count":null,"created_at":"2024-07-19T17:30:26.439Z","updated_at":"2025-10-31T09:21:36.871Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories/acs%2Fpublic%2Fvillas%2Fnode/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{},"pull_request_author_associations_count":{},"issue_authors":{},"pull_request_authors":{},"host":{"name":"git.rwth-aachen.de","url":"https://git.rwth-aachen.de","kind":"gitlab","last_synced_at":"2025-10-31T00:00:39.823Z","repositories_count":0,"issues_count":0,"pull_requests_count":0,"authors_count":0,"icon_url":"https://github.com/gitlab.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/git.rwth-aachen.de/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":null,"keywords":[],"dependencies":[],"score":null,"created_at":"2023-11-23T17:27:35.071Z","updated_at":"2026-04-20T08:31:13.589Z","avatar_url":"https://git.rwth-aachen.de/uploads/-/system/project/avatar/79039/villas_node.png","language":null,"category":"Energy Systems","sub_category":"Energy System Modeling Frameworks","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# \u003cimg src=\"doc/pictures/villas_node.png\" width=40 /\u003e VILLASnode\n\n[![build status](https://git.rwth-aachen.de/acs/public/villas/node/badges/master/pipeline.svg)](https://git.rwth-aachen.de/acs/public/villas/node/-/pipelines/)\n[![status](https://joss.theoj.org/papers/37c2509d36586f4cec2885d5c2088e8f/status.svg)](https://joss.theoj.org/papers/37c2509d36586f4cec2885d5c2088e8f)\n\nThis is VILLASnode, a gateway for processing and forwarding simulation data between real-time simulators.\nVILLASnode is a client/server application to connect simulation equipment and software such as:\n\n- OPAL-RT RT-LAB,\n- RTDS GTFPGA cards,\n- RTDS GTWIF cards,\n- Simulink,\n- LabView,\n- and FPGA models\n\nby using protocols such as:\n\n- IEEE 802.2 Ethernet / IP / UDP,\n- ZeroMQ \u0026 nanomsg,\n- MQTT \u0026 AMQP\n- WebSockets\n- Shared Memory\n- Files\n- IEC 61850 Sampled Values / GOOSE\n- Analog/Digital IO via Comedi drivers\n- Infiniband (ibverbs)\n\nIt's designed with a focus on very low latency to achieve real-time exchange of simulation data.\nVILLASnode is used in distributed- and co-simulation scenarios and developed for the field of power grid simulation at the EON Energy Research Center in Aachen, Germany.\n\n## Documentation\n\nUser documentation is available here: \u003chttps://villas.fein-aachen.org/docs/\u003e\n\n## Related Projects\n\n- [MIOB](https://github.com/RWTH-ACS/miob)\n- [DINO](https://github.com/RWTH-ACS/dino)\n\n## Contributing\n\nAll contributions are welcome!\nIf you want to contribute to VILLASnode, please visit the [contribution guidelines](https://villas.fein-aachen.org/docs/node/development/contributing/) in our documentation.\n\n## License\n\nVILLASnode is licensed on a per-file basis under multiple open-source licenses.\nEach source file contains an SPDX license identifier and copyright attribution in accordance with the [REUSE Software guidelines](https://reuse.software/).\nFor attribution, please refer to the SPDX headers in each file.\nThe [Apache 2.0 license](./LICENSE) covers most of the codebase and is preferred for new contributions.\nLicense compliance is automatically checked in CI, including validation of licenses in the `LICENSES/` directory.\n\nWe kindly ask all academic publications employing components of VILLASframework to cite the following paper:\n\n- S. Vogel, N. Eiling, M. Pitz, A. Bach, M. Stevic, and P. A. Monti, “VILLASnode: An Open-Source Real-time Multi-protocol Gateway,” Journal of Open Source Software, vol. 10, no. 112, p. 8401, Aug. 2025, doi: [10.21105/joss.08401](https://doi.org/10.21105/joss.08401).\n\nMore publications using, or about VILLASnode [can be found in the documentation](https://villas.fein-aachen.org/docs/publications/).\n\nFor other licensing options please consult [Prof. Antonello Monti](mailto:amonti@eonerc.rwth-aachen.de).\n\n- SPDX-FileCopyrightText: 2014-2025 The VILLASframework Authors\n- SPDX-License-Identifier: Apache-2.0\n\n## Contact\n\n[![EONERC ACS Logo](doc/pictures/eonerc_logo.png)](http://www.acs.eonerc.rwth-aachen.de)\n\n- Steffen Vogel \u003cpost@steffenvogel.de\u003e\n- Niklas Eiling \u003cniklas@eil.ing\u003e\n- Felix Wege \u003cfwege@eonerc.rwth-aachen.de\u003e\n- Alexandra Bach \u003calexandra.bach@eonerc.rwth-aachen.de\u003e\n\n[Institute for Automation of Complex Power Systems (ACS)](http://www.acs.eonerc.rwth-aachen.de)\n[EON Energy Research Center (EONERC)](http://www.eonerc.rwth-aachen.de)\n[RWTH University Aachen, Germany](http://www.rwth-aachen.de)\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.21105/joss.08401"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["villas","quasi-stationary","powerflow","power-systems","emt","electromagnetic-transient","dynamic-phasors","operating-system","unikernels","cim"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/142726","html_url":"https://ost.ecosyste.ms/projects/142726"}