{"id":42061905,"url":"https://github.com/lncm/noma","last_synced_at":"2026-01-26T07:41:26.373Z","repository":{"id":57446578,"uuid":"176322759","full_name":"lncm/noma","owner":"lncm","description":"Noma - Bitcoin lightning node management CLI utility \u0026 Python API","archived":false,"fork":false,"pushed_at":"2019-10-30T09:47:03.000Z","size":346,"stargazers_count":6,"open_issues_count":26,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-11-04T07:09:55.586Z","etag":null,"topics":["api","bitcoin","bitcoind","cli","lightning","lightning-network","lnd","node","pi-factory","python"],"latest_commit_sha":null,"homepage":"https://lncm.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lncm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":["https://tippin.me/@lncnx","https://blockchair.com/bitcoin/address/bc1qsdlppqy9mhah5ljmhcmtpl20n9km8jz45n3qx3les3q2qfzpwm7qnruqnq"]}},"created_at":"2019-03-18T16:07:28.000Z","updated_at":"2025-10-02T13:22:46.000Z","dependencies_parsed_at":"2022-09-02T23:40:28.230Z","dependency_job_id":null,"html_url":"https://github.com/lncm/noma","commit_stats":null,"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/lncm/noma","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lncm%2Fnoma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lncm%2Fnoma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lncm%2Fnoma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lncm%2Fnoma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lncm","download_url":"https://codeload.github.com/lncm/noma/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lncm%2Fnoma/sbom","scorecard":{"id":596331,"data":{"date":"2025-08-11","repo":{"name":"github.com/lncm/noma","commit":"6bef2c35dc373f4450ece831088e03bdce2477b1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"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":"Code-Review","score":0,"reason":"Found 1/18 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":"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":"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/noma.yml:1","Warn: no topLevel permission defined: .github/workflows/release.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":"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/noma.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/lncm/noma/noma.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/noma.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/lncm/noma/noma.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/lncm/noma/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/lncm/noma/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/lncm/noma/release.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: install.sh:32","Warn: pipCommand not pinned by hash: install.sh:47","Warn: downloadThenRun not pinned by hash: install.sh:93","Warn: pipCommand not pinned by hash: .github/workflows/noma.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/noma.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/noma.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:21","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:25","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:32","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 downloadThenRun dependencies pinned","Info:   0 out of   7 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":"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: 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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.5.1 not signed: https://api.github.com/repos/lncm/noma/releases/20239756","Warn: release artifact 0.4.5 not signed: https://api.github.com/repos/lncm/noma/releases/17468729","Warn: release artifact v0.2.2 not signed: https://api.github.com/repos/lncm/noma/releases/16820775","Warn: release artifact v0.2.1 not signed: https://api.github.com/repos/lncm/noma/releases/16320537","Warn: release artifact v0.2 not signed: https://api.github.com/repos/lncm/noma/releases/16310853","Warn: release artifact v0.5.1 does not have provenance: https://api.github.com/repos/lncm/noma/releases/20239756","Warn: release artifact 0.4.5 does not have provenance: https://api.github.com/repos/lncm/noma/releases/17468729","Warn: release artifact v0.2.2 does not have provenance: https://api.github.com/repos/lncm/noma/releases/16820775","Warn: release artifact v0.2.1 does not have provenance: https://api.github.com/repos/lncm/noma/releases/16320537","Warn: release artifact v0.2 does not have provenance: https://api.github.com/repos/lncm/noma/releases/16310853"],"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 16 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-20T23:13:42.853Z","repository_id":57446578,"created_at":"2025-08-20T23:13:42.853Z","updated_at":"2025-08-20T23:13:42.853Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28769850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T06:37:25.426Z","status":"ssl_error","status_checked_at":"2026-01-26T06:37:23.039Z","response_time":59,"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":["api","bitcoin","bitcoind","cli","lightning","lightning-network","lnd","node","pi-factory","python"],"created_at":"2026-01-26T07:41:25.575Z","updated_at":"2026-01-26T07:41:26.363Z","avatar_url":"https://github.com/lncm.png","language":"Python","funding_links":["https://tippin.me/@lncnx","https://blockchair.com/bitcoin/address/bc1qsdlppqy9mhah5ljmhcmtpl20n9km8jz45n3qx3les3q2qfzpwm7qnruqnq"],"categories":[],"sub_categories":[],"readme":"# Noma - lightning node management\n\nCLI utility and Python API to manage bitcoin lightning nodes.\n\n[![Build Status](https://travis-ci.com/lncm/noma.svg?branch=master)](https://travis-ci.com/lncm/noma)\n[![Documentation Status](https://readthedocs.org/projects/noma/badge/?version=latest)](https://noma.readthedocs.io/en/latest/?badge=latest)\n[![Maintainability](https://api.codeclimate.com/v1/badges/fd95275314bd4f680140/maintainability)](https://codeclimate.com/github/lncm/noma/maintainability)\n\n### What is it?\nNoma provides a complete bitcoin + lightning stack for [LNCM's](https://lncm.io) Point-of-Sale app and extendable templates for your own project development.\n\n### How does it work?\nMulti-platform `docker` containers are orchestrated by `docker-compose` and `noma`, a thin layer of python. The golang `invoicer` middleware serves `invoicer-ui`, a react webapp and provides the payment API synthesizing `lnd` and `bitcoind`. Internally `lnd` utilizes the light-client neutrino network, while `bitcoind` operates as a fully validating node with optional pruning.\n\n### Highlights\nOur containers provide minimal [Alpine](https://alpinelinux.org) environments on 32-bit \u0026 64-bit ARM in addition to the common AMD64 architecture. Special attention been paid to create lightweight images suitable for embedded deployments such as Raspberry Pi's.\n\nSignificant effort has been expended to make bootstrapping convenient on Ubuntu, Debian, Alpine and MacOS while staying flexible to support your deployment method of choice.\n\nDefault settings are carefully chosen to conserve resources and let nodes participate as quickly as possible.\n\nWith the exception of `bitcoind` all critical components and dependencies are either written in Golang or Python, making use of our focused build pipeline.\n\n### Target audience\n\nAt the current level of automation we expect users to be familiar with the Linux command-line. Bitcoin \u0026 lightning enthusiasts as well as developers may find this opinionated framework to be a useful starting point.\n\n### Target hardware\n\nGiven the minimal nature of our stack, Raspberry Pi's and similar SBC's are an ideal candidate. Likewise, low-end VPS will benefit from the reduced resource usage.\n\nDisk and network resource consumption varies according to mode. In the most conservative configuration, using neutrino only, on-disk storage requirements are expected to be around 250-300MB.\n\nIn bitcoin full-node mode, the latest 550 blocks are stored and continually fetched for verification. This adds around 4GB of permanently reserved space and at least 144MB of internet traffic per day, equivalent to 4.4GB per month.\n\n### CLI:\n**node:**\n```bash\nnoma start\nnoma stop\nnoma check\nnoma logs\nnoma info\n```\n**lnd:**\n```bash\nnoma lnd create\nnoma lnd backup\nnoma lnd autounlock\nnoma lnd autoconnect [\u003cpath\u003e]\nnoma lnd savepeers\nnoma lnd connectstring\n```\n**noma:**\n```\nnoma (-h|--help)\nnoma --version\n```\n\n### Dependencies\n\nTo get the most out of this tool we highly recommend to have Docker installed.\n\nNote: some `noma` functions are specific to Raspberry Pi hardware.\n\n## Installation\n\n### MacOS Vagrant\n\nThe simplest method to try out or work on noma is to use Vagrant, which will automatically set up a small Linux VM, ensuring your environment stays clean.\n\n* Install Vagrant \u0026 VirtualBox\n\nWith brew available:\n```bash\nbrew cask install virtualbox\nbrew cask install vagrant\n```\nThen, start the VM using vagrant\n```bash\ncd noma\nvagrant up\n```\n\nOnce installation has completed, you may log in\n```bash\nvagrant ssh alpine\n```\n\nTip: `vagrant up [vm-name]` where `vm-name` can be any of: `alpine`, `ubuntu`, `debian`. Adapt `vagrant ssh alpine` accordingly.\n\n#### MacOS Docker\n\nUsing Docker outside of Vagrant requires manual setup and is only recommended for those who are already running Docker.\n\n- Install Docker and docker-compose\n```bash\nbrew cask install docker\nbrew install docker-compose\n```\n\nCreate /media directory\n```bash\nsudo mkdir /media\n```\n\n* Ensure the /media directory is writable and added to shares in Docker\n* Ensure Docker is running\n\nInstall and start the node\n```bash\npip3 install noma\nsudo noma start\n```\n\n### Linux\n\nWith Python 3 and Docker installed\n\n```\npip install noma \nsudo noma start\n```\nNote: You may need to use `pip3` instead of `pip`\n\nFor convenience `install.sh` may be used to bootstrap Python 3, Docker and Noma on Debian-based and Alpine systems:\n```\ncd /media\nsudo chown -R $USER .\ngit clone https://github.com/lncm/noma.git\ncd noma\nsudo ./install.sh\n```\n\n### Windows\n\nWhile not officially supported, Windows is likely to work using Vagrant, with the caveat that NFS shares are not available and need to be replaced.\n\n## Usage\n\nAfter running `sudo noma start` you may create your wallet  \n\n`sudo noma lnd create`\n\nOnce your node has synced with the network you are ready for action.\n\nCheck it's status with `sudo noma info` and `sudo noma logs`\n\n## Development\n\nWe welcome all contributions! Please submit a PR or discuss within an issue.\n\n### Dev mode\n\n```bash\ncd noma\npython3 setup.py develop\n```\nnow you can run noma and inspect code changes immediately\n\n*Note: vagrant runs this automatically*\n\n### Build instructions\n\n```\npip3 install wheel\npython3 setup.py bdist_wheel\npip3 install dist/noma-*-py3-none-any.whl\n```\n\n### API documentation\n\n[Read the Docs](https://noma.readthedocs.io/en/latest/)\n\n\n### Build docs\n\n```\npip3 install sphinx sphinx-rtd-theme`\ncd docs\nmake html\n```\n\ndocs can be found at `docs/_build/html/index.html`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flncm%2Fnoma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flncm%2Fnoma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flncm%2Fnoma/lists"}