{"id":23439736,"url":"https://github.com/talhasch/stnm","last_synced_at":"2025-04-09T19:57:58.068Z","repository":{"id":57471508,"uuid":"317970107","full_name":"talhasch/stnm","owner":"talhasch","description":"Stacks blockchain node process manager","archived":false,"fork":false,"pushed_at":"2020-12-08T17:47:53.000Z","size":498,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T19:57:53.681Z","etag":null,"topics":["bitcoin","blockchain","blockstack","mining","python","stacks"],"latest_commit_sha":null,"homepage":"","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/talhasch.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":"2020-12-02T19:31:49.000Z","updated_at":"2020-12-08T18:00:54.000Z","dependencies_parsed_at":"2022-09-26T17:40:28.196Z","dependency_job_id":null,"html_url":"https://github.com/talhasch/stnm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talhasch%2Fstnm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talhasch%2Fstnm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talhasch%2Fstnm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talhasch%2Fstnm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/talhasch","download_url":"https://codeload.github.com/talhasch/stnm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103910,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bitcoin","blockchain","blockstack","mining","python","stacks"],"created_at":"2024-12-23T15:33:36.182Z","updated_at":"2025-04-09T19:57:58.046Z","avatar_url":"https://github.com/talhasch.png","language":"Python","readme":"# STNM\n\nStacks blockchain node process manager.\n\n---\n\nSTNM developed with python. Requires python 3.5+ and pip3. Compatible with Linux and macOS.\n\n### Linux users\n\nThe following one-liner code will install dependencies to get started with STNM.\n\n`$ apt update \u0026\u0026 apt install build-essential python3-pip python3-dev python3-setuptools -y \u0026\u0026 pip3 install --upgrade pip` \n\n### macOS users\nYou can download python installer from here: https://www.python.org/downloads/ if you don't have it installed on your system.\n\nIt's always good to upgrade pip.\n\n`$ pip3 install --upgrade pip` \n\nAdditionally you may need to install `git` and `curl` manually if you don't have them installed your system.\n\n--- \n\n## Get STNM\n \n`$ pip3 install stnm -U` \n\n## Usage\n\n*Most STNM commands output in json format for easy integration.*\n\n\n### `$ stnm install`\n\nStacks blockchain auto installer. This command would be your first step if you haven't compiled stacks blockchain binary yet. \n\n### `$ stnm status`\n\nOutputs stacks-node process status.\n\nPossible outputs:\n\n`{\"success\": true, \"message\": \"stacks-node process is running\", \"pid\": 1234}`\n\n`{\"error\": true, \"message\": \"stacks-node process is not running\"}`\n\n\n### `$ stnm start`\n\nStarts stacks-node process.\n\nPossible outputs:\n\n`{\"success\": true, \"message\": \"stacks-node process started\", \"pid\": 1234}`\n\n`{\"error\": true, \"message\": \"stacks-node is already running\"}`\n\n\n### `$ stnm stop`\n\nStops (kills) stacks-node process.\n\nPossible outputs:\n\n`{\"success\": true, \"message\": \"stacks-node process killed\"}`\n\n`{\"error\": true, \"message\": \"stacks-node process is not running\"}`\n\n### `$ stnm config`\n\nOutputs current config file as text by default.\n\nAn additional input like below allows to modify config file:\n\n`$ stnm config node.miner=true`\n\nMore than one config entry can be separated with comma:\n\n`$ stnm config node.miner=true,burnchain.burn_fee_cap=2000`\n\n```\nConfig Input Structure\n\n        +---------------------+\n        |      parameter      |\n        +---------------------+\ninput = burnchain.burn_fee_cap=20000000\n        |section |     key    | value |\n        +-----------------------------+\n        |        config entry         |\n        +-----------------------------+\n```\n\nAvailable config parameters:\n\n```\nnode.miner : boolean\nnode.seed : string\nburnchain.burn_fee_cap : integer\nburnchain.process_exit_at_block_height : integer\nburnchain.rpc_port : integer\nburnchain.peer_port : integer\n```\n\nPossible outputs:\n\n```{\"success\": true, \"message\": \"config file updated\"}```\n\n```{\"error\": true, \"message\": \"not a valid config entry 'node.minerr' example: node.miner=true\"}```\n\n```{\"error\": true, \"message\": \"'node.minerr' doesn't exits in available parameters\"}```\n\n```{\"error\": true, \"message\": \"validation failed with message: 'truee is not a valid boolean value. Use True or true or False or false'\"}```\n\n***config update doesn't restart stacks-node process. manual `stnm stop` \u0026 `stnm start` actions required to make config file updated with stacks-node process.***\n\n### `$ stnm web`\n\nStarts STNM API and Web UI.\n\n**STNM API** Provides a wrapper HTTP API for STNM commands.\n\n#### Endpoints\n\n##### /api/status [GET]\n\n`$ curl \"http://127.0.0.1:8081/api/status\"` \n\n##### /api/start [POST]\n\n`$ curl -X POST \"http://127.0.0.1:8081/api/start\"` \n\n##### /api/stop [POST]\n\n`$ curl -X \"POST http://127.0.0.1:8081/api/stop\"`\n\n##### /api/config [POST]\n\nUpdates config file with input passed in json body of http request.\n\n``` \n$ curl -X POST --header \"Content-Type: application/json\" --data '{\"input\": \"node.miner=true,burnchain.burn_fee_cap=2000\"}' \"http://127.0.0.1:8081/api/config\"\n```\n\n##### /api/config [GET]\n\nReturns current config file contents in json and text format.\n\n`$ curl \"http://127.0.0.1:8081/api/config\"` \n\nSample response:\n\n```\n{\n  \"object\": {\n    \"burnchain\": {\n      \"chain\": \"bitcoin\",\n      \"mode\": \"krypton\",\n      \"peer_host\": \"bitcoind.krypton.blockstack.org\",\n      \"peer_port\": 18444,\n      \"process_exit_at_block_height\": 5130,\n      \"rpc_port\": 18443\n    },\n    \"mstx_balance\": [\n      {\n        \"address\": \"STB44HYPYAT2BB2QE513NSP81HTMYWBJP02HPGK6\",\n        \"amount\": 10000000000000000\n      },\n      {\n        \"address\": \"ST11NJTTKGVT6D1HY4NJRVQWMQM7TVAR091EJ8P2Y\",\n        \"amount\": 10000000000000000\n      },\n      {\n        \"address\": \"ST1HB1T8WRNBYB0Y3T7WXZS38NKKPTBR3EG9EPJKR\",\n        \"amount\": 10000000000000000\n      },\n      {\n        \"address\": \"STRYYQQ9M8KAF4NS7WNZQYY59X93XEKR31JP64CP\",\n        \"amount\": 10000000000000000\n      }\n    ],\n    \"node\": {\n      \"bootstrap_node\": \"048dd4f26101715853533dee005f0915375854fd5be73405f679c1917a5d4d16aaaf3c4c0d7a9c132a36b8c5fe1287f07dad8c910174d789eb24bdfb5ae26f5f27@krypton.blockstack.org:20444\",\n      \"p2p_bind\": \"0.0.0.0:20444\",\n      \"rpc_bind\": \"0.0.0.0:20443\"\n    }\n  },\n  \"raw\": \"\\n[node]\\nrpc_bind = \\\"0.0.0.0:20443\\\"\\np2p_bind = \\\"0.0.0.0:20444\\\"\\nbootstrap_node = \\\"048dd4f26101715853533dee005f0915375854fd5be73405f679c1917a5d4d16aaaf3c4c0d7a9c132a36b8c5fe1287f07dad8c910174d789eb24bdfb5ae26f5f27@krypton.blockstack.org:20444\\\"\\n\\n[burnchain]\\nchain = \\\"bitcoin\\\"\\nmode = \\\"krypton\\\"\\npeer_host = \\\"bitcoind.krypton.blockstack.org\\\"\\nrpc_port = 18443\\npeer_port = 18444\\nprocess_exit_at_block_height = 5130\\n\\n[[mstx_balance]]\\naddress = \\\"STB44HYPYAT2BB2QE513NSP81HTMYWBJP02HPGK6\\\"\\namount = 10000000000000000\\n\\n[[mstx_balance]]\\naddress = \\\"ST11NJTTKGVT6D1HY4NJRVQWMQM7TVAR091EJ8P2Y\\\"\\namount = 10000000000000000\\n\\n[[mstx_balance]]\\naddress = \\\"ST1HB1T8WRNBYB0Y3T7WXZS38NKKPTBR3EG9EPJKR\\\"\\namount = 10000000000000000\\n\\n[[mstx_balance]]\\naddress = \\\"STRYYQQ9M8KAF4NS7WNZQYY59X93XEKR31JP64CP\\\"\\namount = 10000000000000000\\n\"\n}\n```\n\n##### /api/config-params [GET]\n\nReturns a list of available config options.\n\nSample response:\n\n```\n[\n    \"node.miner\",\n    \"node.seed\",\n    \"burnchain.burn_fee_cap\",\n    \"burnchain.peer_port\",\n    \"burnchain.process_exit_at_block_height\",\n    \"burnchain.rpc_port\"\n]\n```\n\n#### Environment variables for web application\n\n|\tVariable       \t|\tDefault     \t|\n|\t------------\t|\t------------\t|\n|\tWEB_PORT     \t|\t8081     \t    |\n|\tWEB_HOST     \t|\t127.0.0.1       |\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftalhasch%2Fstnm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftalhasch%2Fstnm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftalhasch%2Fstnm/lists"}