{"id":32136803,"url":"https://github.com/jcaromiq/goku","last_synced_at":"2025-10-21T04:40:05.448Z","repository":{"id":65803115,"uuid":"598127474","full_name":"jcaromiq/goku","owner":"jcaromiq","description":"Goku is an HTTP load testing application written in Rust ","archived":false,"fork":false,"pushed_at":"2025-06-02T23:43:27.000Z","size":1437,"stargazers_count":139,"open_issues_count":5,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-21T04:40:00.896Z","etag":null,"topics":["benchmark","benchmarking","http","load-testing","mcp","mcp-server","performance","performance-testing","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/jcaromiq.png","metadata":{"files":{"readme":"README.md","changelog":"Changes.md","contributing":".github/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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.buymeacoffee.com/jcaro"]}},"created_at":"2023-02-06T13:10:47.000Z","updated_at":"2025-08-10T17:26:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"40642f92-c5cd-4fed-bad6-65053b624e9f","html_url":"https://github.com/jcaromiq/goku","commit_stats":{"total_commits":109,"total_committers":5,"mean_commits":21.8,"dds":0.3027522935779816,"last_synced_commit":"89051d008a198cd347cb918b1075de0ac2067012"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/jcaromiq/goku","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcaromiq%2Fgoku","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcaromiq%2Fgoku/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcaromiq%2Fgoku/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcaromiq%2Fgoku/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcaromiq","download_url":"https://codeload.github.com/jcaromiq/goku/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcaromiq%2Fgoku/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280207158,"owners_count":26290613,"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","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["benchmark","benchmarking","http","load-testing","mcp","mcp-server","performance","performance-testing","rust"],"created_at":"2025-10-21T04:40:04.269Z","updated_at":"2025-10-21T04:40:05.439Z","avatar_url":"https://github.com/jcaromiq.png","language":"Rust","funding_links":["https://www.buymeacoffee.com/jcaro"],"categories":["📚 Projects (1974 total)"],"sub_categories":["MCP Servers"],"readme":"# Goku \n[![Rust](https://github.com/jcaromiq/goku/actions/workflows/ci.yml/badge.svg)](https://github.com/jcaromiq/goku/actions/workflows/ci.yml)\n[![](https://img.shields.io/crates/v/goku-bench.svg?ts=2)](https://crates.io/crates/goku-bench)\n\n![Goku](https://raw.githubusercontent.com/jcaromiq/goku/main/assets/goku.png)\n\nGoku is a high-performance, scalable HTTP load-testing tool designed for benchmarking and performance analysis of web services. Inspired by tools like [Drill](https://github.com/fcsonline/drill) and [Vegeta](https://github.com/tsenart/vegeta), Goku offers modern features and simplicity for engineers to simulate and analyze traffic efficiently.\n\n## Features\n* Fast and scalable HTTP load testing\n* Supports structured, real-time metrics\n* Detailed performance analytics\n    \n\n## Install\n### Automatic download (Linux, OSX, WSL)\n\nYou can download the latest version of Goku directly to your current directory with the following command:\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/jcaromiq/goku/v2.0.0/scripts/install.sh | sh\n```\n\n### Using Cargo\n```bash\ncargo install goku-bench\ngoku --version\n```\n\n### Manual download\n\nGo to the Goku's [GitHub Releases page](https://github.com/jcaromiq/goku/releases) and download the latest `.tar.gz` file that matches your system. Currently, tarballs are available for the following:\n\n* Linux (x86_64)\n* macOS (x86_64)\n* Windows (x86_64)\n\n### Source\n\nAs a requirement, you need `rust` installed:\n\n```shell\n$ cargo build --release\n```\n\n## Versioning\n\nCLI is versioned with [SemVer v2.0.0](https://semver.org/spec/v2.0.0.html).\n\n## Contributing\n\nSee [CONTRIBUTING.md](.github/CONTRIBUTING.md).\n\n## Usage manual\n\n```console\nUsage: goku [OPTIONS] --target \u003cTARGET\u003e\n\nOptions:\n  -v, --verbose                      Runs in verbose mode\n  -t, --target \u003cTARGET\u003e              URL to be requested using an operation [default: GET] Ex. GET http://localhost:3000/\n  -r, --request-body \u003cREQUEST_BODY\u003e  File path for the request body\n  -c, --clients \u003cCLIENTS\u003e            Number of concurrent clients [default: 1]\n  -i, --iterations \u003cITERATIONS\u003e      Total number of iterations [default: 1]\n  -d, --duration \u003cDURATION\u003e          Duration of the test in second\n      --headers \u003cHEADERS\u003e            Headers, multi value in format headerName:HeaderValue\n      --scenario \u003cSCENARIO\u003e          Scenario file\n      --timeout \u003ctimeout_ms\u003e         Timeout value in ms, defaults set to 30000\n  -h, --help                         Prints help\n  -V, --version                      Prints version information\n```\n\n#### `--target` `-t`\nSpecifies the operation and url to make the request, default to GET.\u003cbr\u003e\nFormat: GET https://localhost:3000\u003cbr\u003e\n\n#### `--request-body` `-r` Optional\nSpecifies the path of file with the body to send.\u003cbr\u003e\n\n#### `--clients` `-c`\nSpecifies the number of concurrent calls to be used, defaults to 1.\n\n#### `--iterations` `-i`\nSpecifies the total number of calls to be performed, default to 1.\n\n#### `--duration` `-d`\nSpecifies the duration of the test in seconds.\n\n#### `--headers`  Optional\nSpecifies the headers to be sent.\u003cbr\u003e\n\n#### `--scenario`  Optional\nSpecifies the scenario file in yaml format.\u003cbr\u003e\n\n````yaml\ntarget: POST http://localhost:3000/\nclients: 50\nrequests: 1000\nheaders:\n  - key: \"bar\"\n    value: \"foo\"\n  - key: \"Content-Type\"\n    value: \"application/json\"\n\nbody: \"{\\\"firstName\\\": \\\"Terry\\\",\n        \\\"lastName\\\": \\\"Medhurst\\\",\n        \\\"maidenName\\\": \\\"Smitham\\\",\n        \\\"age\\\": 50}\"\n\n\n````\n\n#### `--help`\n\nPrints help.\n\n#### `--version`\n\nPrints version information.\n\n###### Simple targets\n\n```\ngoku --target \"GET http://localhost:3000\"\ngoku --target http://localhost:3000?foo=bar\ngoku -c 50 -i 1000 --target http://localhost:3000\ngoku -c 50 --duration 60 --target http://localhost:3000\n```\n\n###### Targets with custom headers\n\n```\ngoku --target \"GET http://localhost:3000\" --headers Content-Type:application/json --headers bar:foo \n```\n\n###### Targets with custom bodies\n\n```\ngoku -c 50 -i 1000 -r body.json --target \"POST http://localhost:3000\"\n\n```\n\n###### Targets with custom bodies and headers\n\n```\ngoku -r body.json --target \"POST http://localhost:3000\" --headers Content-Type:application/json --headers bar:foo \n\n```\n\n###### Output\n\n```\nConcurrency level 50\nTime taken 4 seconds\nTotal requests 1000\nMean request time 169.90099999999998 ms\nMax request time 415 ms\nMin request time 5 ms\n95'th percentile: 319 ms\n99.9'th percentile: 367 ms\n```\n\n## License\n\nSee [LICENSE](LICENSE).\n\n## Donate\n\nIf you appreciate all the job done in this project, a small donation is always welcome:\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/jcaro)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcaromiq%2Fgoku","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcaromiq%2Fgoku","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcaromiq%2Fgoku/lists"}