{"id":36441985,"url":"https://github.com/barbosaigor/nuker","last_synced_at":"2026-01-11T21:59:55.025Z","repository":{"id":38137882,"uuid":"389432852","full_name":"barbosaigor/nuker","owner":"barbosaigor","description":"Nuker is a resilience tool for distributed load testing ","archived":false,"fork":false,"pushed_at":"2024-02-03T12:41:07.000Z","size":7372,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-20T22:35:38.164Z","etag":null,"topics":["caos","caos-testing","cli","distributed","load-testing","resilience","terminal","test"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barbosaigor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-25T20:11:29.000Z","updated_at":"2022-12-30T19:48:01.000Z","dependencies_parsed_at":"2024-06-20T21:52:23.459Z","dependency_job_id":"a9a187f8-d8fa-4cf0-a885-423e07158fc1","html_url":"https://github.com/barbosaigor/nuker","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/barbosaigor/nuker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbosaigor%2Fnuker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbosaigor%2Fnuker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbosaigor%2Fnuker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbosaigor%2Fnuker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barbosaigor","download_url":"https://codeload.github.com/barbosaigor/nuker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbosaigor%2Fnuker/sbom","scorecard":{"id":225697,"data":{"date":"2025-08-11","repo":{"name":"github.com/barbosaigor/nuker","commit":"f611645923a05a71cf72015694ea0b906c02df67"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/test-lint.yml:12","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":"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/19 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":"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":"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":"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":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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/test-lint.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/barbosaigor/nuker/test-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-lint.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/barbosaigor/nuker/test-lint.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction 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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.0.1 not signed: https://api.github.com/repos/barbosaigor/nuker/releases/72546644","Warn: release artifact v0.0.0 not signed: https://api.github.com/repos/barbosaigor/nuker/releases/52380323","Warn: release artifact v0.0.1 does not have provenance: https://api.github.com/repos/barbosaigor/nuker/releases/72546644","Warn: release artifact v0.0.0 does not have provenance: https://api.github.com/repos/barbosaigor/nuker/releases/52380323"],"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 '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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 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":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-927h-x4qj-r242","Warn: Project is vulnerable to: GO-2023-2052 / GHSA-3q5p-3558-364f","Warn: Project is vulnerable to: GO-2023-2115 / GHSA-94w9-97p3-p368","Warn: Project is vulnerable to: GO-2023-2116 / GHSA-mv73-f69x-444p","Warn: Project is vulnerable to: GO-2024-2574 / GHSA-fmg4-x8pw-hjhg","Warn: Project is vulnerable to: GO-2024-2959 / GHSA-98j2-3j3p-fw2v","Warn: Project is vulnerable to: GO-2025-3845 / GHSA-qx2q-88mx-vhg7","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp","Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq"],"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-17T03:46:00.002Z","repository_id":38137882,"created_at":"2025-08-17T03:46:00.002Z","updated_at":"2025-08-17T03:46:00.002Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28324797,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T18:42:50.174Z","status":"ssl_error","status_checked_at":"2026-01-11T18:39:13.842Z","response_time":60,"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":["caos","caos-testing","cli","distributed","load-testing","resilience","terminal","test"],"created_at":"2026-01-11T21:59:54.562Z","updated_at":"2026-01-11T21:59:55.018Z","avatar_url":"https://github.com/barbosaigor.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nuker\n[![ci](https://github.com/barbosaigor/nuker/actions/workflows/test-lint.yml/badge.svg?branch=master)](https://github.com/barbosaigor/nuker/actions/workflows/test-lint.yml)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"res/GOPHER_VIKING.png\" alt=\"gopher\" width=\"450\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003ci\u003eNuker - load testing tool\u003c/i\u003e\n  \u003cbr\u003e\n  \u003ci\u003eImage by \u003ca href=\"https://github.com/ashleymcnamara/gophers/\"\u003eAshley McNamara\u003c/a\u003e\u003c/i\u003e\n\u003c/p\u003e\n\nNuker is a CLI tool for load testing, with a powerful configuration file (but easy) for planning your tests.   \nIt's a suitable alternative for [JMeter](https://jmeter.apache.org/) or similar tools.  \n\n![nuker](res/nuker.gif)\n\n### Features  \n* High throughput with lower resource usage   \n* Easy to write configuration file with an expressive config plan   \n* Observability, realtime metrics and detailed log file  \n* Distributed load testing, easy to run your plan among nodes   \n\n### Install  \n```sh\n$ go get -u github.com/barbosaigor/nuker/...  \n```\n\n### How to use  \nRun a plan file  \n```sh\n$ nuker run plan.yaml  \n```  \n\nWant to make a simple test? Use exec command  \n```sh\n$ nuker exec http://my-api.com/product/v2/123 --min 150 --max 250 --duration 10\n```  \n\nCli details  \n```sh\n$ nuker help\n```\n\n### Plan file  \nNuker creates a pipeline in order to execute the test. \nThe pipeline consist in stages, which have steps, which have containers. Stages and steps run sequentaily, and each container runs concurrently (within the step).  \n\n```yaml\nversion: v0.0.0\n\nstages:\n  - name: my first test \n    steps:\n      - name: Warm up\n        containers:\n          - name: product\n            duration: 30 # run this container for 30 seconds\n            holdFor: 10 # wait more 10 seconds with final traffic (max)\n            min: 100 # start with 100 requests per second\n            max: 500 # and end up to 500 requests per second\n            network:\n              protocol: http # default\n              path: /product\n              method: POST\n              host: \"http://0.0.0.0:8080\"\n              headers:\n                \"Content-Type\": \"application/json\"\n                \"Authorization\": \"cGFzc3dvcmQK\"\n              body: '{\"id\": \"123-abc\", \"quantity\": 10}'\n          - name: stock\n            duration: 11 # run this container for 11 seconds\n            holdFor: 30 # wait more 30 seconds with final traffic (max)\n            min: 1 # start with 1 request per second\n            max: 5 # and end up to 5 requests per second\n            network:\n              path: \"/stock?q=my%20stockiscool\u0026bla=foo\"\n              method: GET # default\n              host: \"http://0.0.0.0:8080\"\n          - name: fee\n            duration: 5 # run this container for 5 seconds\n            holdFor: 30 # wait more 30 seconds with final traffic (max)\n            min: 9 # start with 9 requests per second\n            max: 18 # and end up to 18 requests per second\n            network:\n              path: /fee\n              host: \"http://0.0.0.0:8080\"\n```\n\n### Distributed plan \nDistrubuted plan works with master-slave approach.  \nA master node will orchestrate all pipeline workload among slaves (workers).  \nEach worker should connect to the master nuker, following master URL.   \n\nStart a master nuker:  \n```sh\n# --min-workers defines how many workers should master wait before start pipeline (default 1)\n$ nuker run plan.yaml --master\nmaster URL: http://master-ip.io/\n```\n\nConnect a worker into master:  \n```sh\n$ nuker worker http://master-ip.io/ \n```  \n\nAfter that, master would be able to balance the workload among workers.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbosaigor%2Fnuker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarbosaigor%2Fnuker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbosaigor%2Fnuker/lists"}