{"id":34029708,"url":"https://github.com/martynvdijke/loudify","last_synced_at":"2026-04-06T01:05:43.233Z","repository":{"id":46572481,"uuid":"377178400","full_name":"martynvdijke/loudify","owner":"martynvdijke","description":"Loudify, LoRa cloudified. This repo is a python package to run a GNU Radio flow graph in a client \u003c-\u003e broker \u003c-\u003e worker context. The idea behind this project is to get a Centralized Radio Access Network (CRAN) for LoRa.","archived":false,"fork":false,"pushed_at":"2025-01-04T18:32:32.000Z","size":7119,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-15T07:59:00.059Z","etag":null,"topics":["cran","gnuradio","lora","zmq"],"latest_commit_sha":null,"homepage":"https://loudify.readthedocs.io/en/latest/","language":"Python","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/martynvdijke.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-15T13:47:16.000Z","updated_at":"2025-01-04T18:32:29.000Z","dependencies_parsed_at":"2025-01-04T19:34:42.149Z","dependency_job_id":null,"html_url":"https://github.com/martynvdijke/loudify","commit_stats":{"total_commits":46,"total_committers":3,"mean_commits":"15.333333333333334","dds":0.04347826086956519,"last_synced_commit":"bcc26cfb9ae9d83e28445b0cee3c26ab53bfbb5a"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/martynvdijke/loudify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martynvdijke%2Floudify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martynvdijke%2Floudify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martynvdijke%2Floudify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martynvdijke%2Floudify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martynvdijke","download_url":"https://codeload.github.com/martynvdijke/loudify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martynvdijke%2Floudify/sbom","scorecard":{"id":622156,"data":{"date":"2025-08-11","repo":{"name":"github.com/martynvdijke/loudify","commit":"072ef6512384b0b4721c927338485f5e1420845d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"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":"Code-Review","score":0,"reason":"Found 0/4 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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/dev_build.yml:1","Warn: no topLevel permission defined: .github/workflows/dev_docker_build.yml:1","Warn: no topLevel permission defined: .github/workflows/release_publish.yml:1","Info: no jobLevel write permissions found"],"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":"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":"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":"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":"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: GHSA-jh85-wwv9-24hv","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev_build.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/martynvdijke/loudify/dev_build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev_docker_build.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/martynvdijke/loudify/dev_docker_build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/martynvdijke/loudify/release_publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release_publish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/martynvdijke/loudify/release_publish.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:latest to python:latest@sha256:50cbf8e58ca53a806b99250b1ba2d16c19433e8c42e7eb4ac4ea924b095e280b","Warn: containerImage not pinned by hash: docker/alertmanager/Dockerfile:1: pin your Docker image by updating prom/alertmanager:v0.15.3 to prom/alertmanager:v0.15.3@sha256:196af0317d3449c1300aa26ff0366f68c67d04581d2c9f8609cbb227424e226c","Warn: containerImage not pinned by hash: docker/grafana/Dockerfile:1: pin your Docker image by updating grafana/grafana:5.3.4 to grafana/grafana:5.3.4@sha256:810a8db3af112d7c870b80f1339adc0986325ead9d3f1e195ae0a5bb5261014e","Warn: containerImage not pinned by hash: docker/node-exporter/Dockerfile:1: pin your Docker image by updating prom/node-exporter:v0.16.0 to prom/node-exporter:v0.16.0@sha256:55302581333c43d540db0e144cf9e7735423117a733cdec27716d87254221086","Warn: containerImage not pinned by hash: docker/prometheus/Dockerfile:1: pin your Docker image by updating prom/prometheus:v2.5.0 to prom/prometheus:v2.5.0@sha256:60c989c93c8097ef7719c1b3b0f4dc54ea61b5e836c222258a5d9512fb3e6181","Warn: pipCommand not pinned by hash: Dockerfile:3","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 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"}}]},"last_synced_at":"2025-08-21T05:26:46.476Z","repository_id":46572481,"created_at":"2025-08-21T05:26:46.476Z","updated_at":"2025-08-21T05:26:46.476Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31455474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["cran","gnuradio","lora","zmq"],"created_at":"2025-12-13T17:50:09.383Z","updated_at":"2026-04-06T01:05:43.227Z","avatar_url":"https://github.com/martynvdijke.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# loudify\n\n\u003e Running a GNU Radio flowgraph in a ZMQ client \u003c-\u003e broker \u003c-\u003e worker setup.\n\n\u003c!-- ![dev build status](https://github.com/martynvdijke/gr-lora_sdr/workflows/dev%20build%20status/badge.svg)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/ad9f936d2d674635b927fd83e57abec1)](https://app.codacy.com/gh/martynvdijke/loudify?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=martynvdijke/loudify\u0026utm_campaign=Badge_Grade_Settings)\n[![docs-dev](https://github.com/martynvdijke/gr-lora_sdr/workflows/docs-dev/badge.svg)](https://martynvdijke.github.io/gr-lora_sdr/html/index.html)\n![dev test status](https://github.com/martynvdijke/gr-lora_sdr/workflows/dev%20test%20status/badge.svg) --\u003e\n[![Documentation Status](https://readthedocs.org/projects/loudify/badge/?version=latest)](https://loudify.readthedocs.io/en/latest/?badge=latest)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/8cd2efe67f7b480bb74ebbccfb860146)](https://www.codacy.com/gh/martynvdijke/loudify/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=martynvdijke/loudify\u0026amp;utm_campaign=Badge_Grade)\n![PyPI](https://img.shields.io/pypi/v/loudify)\n[![GitHub license](https://img.shields.io/github/license/martynvdijke/loudify-worker)](https://github.com/martynvdijke/loudify/blob/dev/LICENSE)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Downloads](https://static.pepy.tech/personalized-badge/loudify?period=total\u0026units=international_system\u0026left_color=black\u0026right_color=grey\u0026left_text=Downloads)](https://pepy.tech/project/loudify)\n[![docker build status](https://github.com/martynvdijke/loudify/actions/workflows/dev_docker_build.yml/badge.svg)](https://github.com/martynvdijke/loudify/actions/workflows/dev_docker_build.yml)\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/martynvdijke/loudify/settings\"\u003e\n    \u003cimg src=\"pictures/loudify.png\" alt=\"Logo\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eLoudify: LoRa cloudified\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://loudify.readthedocs.io/en/latest\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/martynvdijke/loudify/issues\"\u003eReport a bug\u003c/a\u003e\n    \u003ca href=\"https://github.com/martynvdijke/loudify/issues\"\u003eRequest a feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n# Summary\n\nThis project consist of three different parts namely the client that is running a GNU Radio flowgraph, the worker receiving the data and doing the actual demodulation process and the broker connecting the two together.\nThis repo holds the code for all the parts, be sure to check out [gr-lora_sdr](https://github.com/martynvdijke/gr-lora_sdr) to see how this codes integrates into GNU Radio.\n\n## Docs\n\nDocumentation is built automatically on commits, and can be visited by going to [docs](https://loudify.readthedocs.io/en/latest/)\n\n## Why\n\nThis project together with the GNU Radio code located in [gr-lora_sdr](https://github.com/martynvdijke/gr-lora_sdr) is part of my graduation project which is called a Centralized Radio Acces Network gateway for LoRa.\nIts purpose is to research if it is possible to be able to aggregate LoRa packets originating from different LoRa gateways by making a central point (aka the broker) that all gateways can connect to. The overall high level idea is to let LoRa gateways share information on the reception of their signals.\n\n## Installing\n\nInstalling the project can be done in two ways, by installing the normal PyPi release\n\n```sh\npip install loudify\n```\n\nOr by installing directly from the repo either by doing pip git install\n\n```sh\npip install git+https://github.com/martynvdijke/loudify.git\n```\n\nOr by cloning the repo and running flit install\n\n```sh\npip install flit\ngit clone https://github.com/martynvdijke/loudify\ncd loudify\nflit install\n```\n\n## Architecture\n\nFor a more detailed overview of the entire architecture and to be able to see how everything is connected visit [architecture](docs/architecture.md)\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Make sure to add or update tests as appropriate.\n\n## Acknowledgments\n\nThis project builds upon the example source code from [zguide](https://github.com/booksbyus/zguide) under the MIT license.\n\n## [Changelog](docs/changelog.md.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartynvdijke%2Floudify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartynvdijke%2Floudify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartynvdijke%2Floudify/lists"}