{"id":20773886,"url":"https://github.com/simonmittag/p0d","last_synced_at":"2026-04-02T02:10:13.699Z","repository":{"id":38374684,"uuid":"481412617","full_name":"simonmittag/p0d","owner":"simonmittag","description":"HTTP performance testing cli utility with realtime updates. Supports multiple concurrent HTTP/2 TLS connections, multipart form-data","archived":false,"fork":false,"pushed_at":"2023-06-09T02:16:29.000Z","size":12234,"stargazers_count":14,"open_issues_count":3,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-19T19:48:36.630Z","etag":null,"topics":["api","api-testing","bash","cli","golang","golang-application","http","https","performance","performance-testing","speed","speedtest"],"latest_commit_sha":null,"homepage":"","language":"Go","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/simonmittag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2022-04-14T00:17:13.000Z","updated_at":"2023-09-01T08:29:17.000Z","dependencies_parsed_at":"2024-06-19T19:07:22.150Z","dependency_job_id":"eb03ec6e-b725-4a0d-825e-55f9a2d8b3a9","html_url":"https://github.com/simonmittag/p0d","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmittag%2Fp0d","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmittag%2Fp0d/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmittag%2Fp0d/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmittag%2Fp0d/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonmittag","download_url":"https://codeload.github.com/simonmittag/p0d/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225036733,"owners_count":17410915,"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":["api","api-testing","bash","cli","golang","golang-application","http","https","performance","performance-testing","speed","speedtest"],"created_at":"2024-11-17T12:27:35.999Z","updated_at":"2026-04-02T02:10:08.602Z","avatar_url":"https://github.com/simonmittag.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](p0d_80.png)\n\np0d is a cli based speed and HTTP performance testing tool for Linux and Darwin operating systems. Features include support\nfor HTTP/1.1, HTTP/2, file attachments as multipart/form-data, and TLS. p0d provides realtime updates\non stdout, including errors within test runs. p0d is beta grade software under active development, `v0.4.7` was\nreleased 17/04/25.\n\n[![Circleci Builds](https://circleci.com/gh/simonmittag/p0d.svg?style=shield)](https://circleci.com/gh/simonmittag/p0d)\n[![Github Issues](https://img.shields.io/github/issues/simonmittag/p0d)](https://github.com/simonmittag/p0d/issues)\n[![Github Activity](https://img.shields.io/github/commit-activity/m/simonmittag/p0d)](https://img.shields.io/github/commit-activity/m/simonmittag/p0d)  \n[![Go Report](https://goreportcard.com/badge/github.com/simonmittag/p0d)](https://goreportcard.com/report/github.com/simonmittag/p0d)\n[![Codeclimate Maintainability](https://api.codeclimate.com/v1/badges/06a7484f009ea48a3832/maintainability)](https://codeclimate.com/github/simonmittag/p0d/maintainability)\n[![Codeclimate Test Coverage](https://api.codeclimate.com/v1/badges/06a7484f009ea48a3832/test_coverage)](https://codeclimate.com/github/simonmittag/p0d/test_coverage)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/simonmittag/p0d)](https://img.shields.io/github/go-mod/go-version/simonmittag/p0d)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Version](https://img.shields.io/badge/version-0.4.7-orange)](https://github.com/simonmittag/p0d)\n\n## Up and running\n\n### Homebrew\n```bash\nbrew tap simonmittag/cli \u0026\u0026 \n  brew install p0d\n```\n\n### Golang\n```bash\ngit clone https://github.com/simonmittag/p0d \u0026\u0026 cd p0d \u0026\u0026\n  go install github.com/simonmittag/p0d/cmd/p0d\n```\n\n## Usage Samples\n\nRun for 30 seconds with 10 concurrent connections against local server\n```\nλ p0d -d 30 -c 10 http://localhost:8080/path\n```\n\nRun in http/2 mode against local server and save output to `log.json`\n```\nλ p0d -H 2 -O log.json http://localhost:8080/path\n```\n\nRun with config file\n```\nλ p0d -C config_get.yml\n```\n\n![](bash.gif)\n\n### Cli args\n```\nλ p0d v0.4.7\n usage: p0d [-f flag] [URL]\n\n flags:\n  -C string\n        load configuration from yml file\n  -H string\n        http version to use. Values are 1.1 and 2 (which works only with TLS URLs). Defaults to 1.1 (default \"1.1\")\n  -O string\n        save detailed JSON output to file\n  -c int\n        maximum amount of concurrent TCP connections used (default 1)\n  -d int\n        time in seconds to run p0d (default 10)\n  -h    \n        print usage instructions\n  -s \n        skip internet speed test, i.e. for local targets\n  -v    \n        print version\n```\n\n### Config file reference\n\n```\n---\nexec:\n  mode: binary\n  durationSeconds: 10\n  concurrency: 1\n  logsampling: 1\n  spacingMillis: 10\n  skipInetTest: true\nreq:\n  method: POST\n  url: http://localhost:8080/path\n  headers:\n    - Accept-Encoding: \"identity\"\n  body: '\n   { \"your\": \"body\" }\n  '\nres:\n  code: 200\n```\n\n#### exec.mode\n`binary` or `decimal` for MiB or MB units in reporting\n\n#### exec.durationsSeconds\nrun pod for `n` seconds. Defaults to `10`\n\n#### exec.dialTimeoutSeconds\ngive up connecting to upstream resource after `n` seconds. Defaults to `3`\n\n#### exec.concurrency\nuse a pool of maximum `n` concurrent TCP connections. Defaults to `1`. Make sure your OS supports\nsufficient open file descriptors before settings this to a very high value. \n\n#### exec.spacingMillis\nartificial spacing in milliseconds, introduced before sending each request. Defaults to `0`\n\n#### exec.httpVersion\npreferred http version. Allowable values are `1.1`. and `2`. Defaults to `1.1`. Please note that HTTP/2 is only\nsupported using TLS. Http version is negotiated, not absolute and HTTP/2 may fall back to HTTP/1.1\n\n#### exec.logsampling\nratio between `0.0` and `1.0` of requests to keep when saving results to disk with `-O` Defaults to 0\n\n#### exec.skipInetTest\nskips the general internet speed test. Note this is not targetting your URL but the speedtest.net network.\n\n#### req.method\nhttp request method, usually one of `GET`, `PUT`, `POST`, or `DELETE`\n\n#### req.url\nupstream resource url. Must be supplied.\n\n#### req.headers\nlist of headers to include in the request. use this to inject i.e. authentication\n\n#### res.code\nthe expected http resonse code. if not matched, request counts as failed in test summary. Defaults to `200`\n\n## Contributions\n\nThe p0d team welcomes all [contributors](https://github.com/simonmittag/p0d/blob/master/CONTRIBUTING.md). Everyone\ninteracting with the project's codebase, issue trackers, chat rooms and mailing lists is expected to follow\nthe [code of conduct](https://github.com/simonmittag/p0d/blob/master/CODE_OF_CONDUCT.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonmittag%2Fp0d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonmittag%2Fp0d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonmittag%2Fp0d/lists"}