Skip to main content

Free load testing tool that reads Postman collections — browser UI + CLI

Project description

Overload

Free, open-source load testing tool that reads Postman collections. Run tests from a browser dashboard or the terminal CLI.

📚 Read the Full Documentation


Why "Overload"?

Named Overload because that's exactly what it does to your server.

No metaphor. No brand committee. Just requests — a lot of them — all at once, until something interesting happens.


Install

pip install overload-cli

Or in dev mode from source:

git clone https://github.com/dprakash2101/overload
cd overload
pip install -e ".[dev]"

Two Ways to Run

Option 1 — Browser UI (results on screen)

Run overload with no arguments. It starts a local server and opens a dashboard in your browser where you configure the test, watch live progress, and view charts and reports — no terminal reading required.

overload
# Opens http://localhost:3000 automatically

Step-by-step in the browser:

  1. The app auto-detects any Postman collection JSON files in your working directory and lists them under "Detected Files". Click Load next to the one you want.
  2. Optionally load a Postman environment file the same way.
  3. Pick the Test Type from the dropdown (Burst, Load, Stress, Spike, etc.).
  4. Adjust the config fields that appear (concurrency, RPS, duration, etc.).
  5. Click Start Test. The dashboard shows live progress: phase, request count, RPS, and a real-time latency chart.
  6. When the test finishes, click View Report to open the full HTML report in a new tab — latency charts, timeline scatter, per-second breakdown, and the raw request log.
  7. Click Stop at any time to cancel immediately with partial results saved.

Options:

overload ui --port 8080          # Use a different port
overload ui --no-browser         # Start server without auto-opening browser
overload ui --host 0.0.0.0       # Bind to all interfaces (LAN access)

Option 2 — CLI (results in terminal)

Run tests headlessly and see a progress bar + summary printed to the terminal. An HTML report is saved to disk.

overload run --collection path/to/collection.json --pattern burst

Output looks like:

  OVERLOAD — BURST TEST
  Collection: my_api.json
  Requests: 5
  Run ID: burst_20260529_abc123

  [####################] 100% (200 requests) — complete

  Results:
    Total: 200  OK: 198  Errors: 2
    Latency — min: 45ms  p95: 312ms  max: 891ms
    Duration: 4.2s  Avg RPS: 47.6

  Report: /path/to/overload_report_20260529_abc123.html

All CLI flags for overload run:

Flag Default Description
--collection (required) Path to Postman collection JSON
--environment Path to Postman environment JSON
--pattern burst Test type: load, stress, spike, soak, ramp, burst, breakpoint, custom, ratelimit
--requests 200 Total requests (burst / rate limit tests)
--concurrency 20 Max simultaneous connections
--rps 50 Target requests per second
--duration 300 Test duration in seconds
--timeout 30 Per-request timeout in seconds
--stages Custom stages JSON: '[{"duration":60,"rps":100}]'
--var KEY=VALUE Override a collection variable (repeatable)
--save-responses off Save response bodies in the report
--no-verify-ssl off Skip SSL certificate verification
--output reports Directory to write the HTML report
--format html Report format: html, json, csv
--assert EXPR Assertion threshold (repeatable), e.g. p95_latency_ms<500
--junit PATH Write JUnit XML report for CI systems
--config PATH Load config from overload.config.yaml
--open-report off Open HTML report in browser after run

Sequential runner (run requests in order):

overload sequential --collection my_api.json --iterations 5 --delay 500
Flag Default Description
--collection (required) Path to Postman collection JSON
--environment Path to Postman environment JSON
--iterations 1 How many times to run the full collection
--delay 0 Milliseconds to wait between requests
--timeout 30 Per-request timeout in seconds
--output . Directory to write the HTML report

Test Types

Type What it does
Burst Fires all N requests at once as fast as possible
Load Sustained traffic — ramp up → hold at target RPS → ramp down
Stress Steps up RPS until errors exceed the failure threshold
Spike Baseline RPS → sudden spike → recovery, to test elasticity
Soak Steady low RPS over a long duration (find memory leaks / drift)
Ramp Linearly increases from start RPS to end RPS
Breakpoint Binary search to find the exact RPS where latency or errors degrade
Custom Define your own stages: [{"duration": 60, "rps": 100}, ...]
Rate Limit 2-phase validation: sends at cap (req/min) → cooldown → exceeds cap; returns a working / not_working / too_strict verdict
Sequential Runs each request in collection order, N iterations

CI/CD Integration

Overload can gate your CI pipeline. Add assertions and the process exits 1 on failure — the universal CI signal.

Inline assertions:

overload run --collection api.json --pattern load --rps 100 --duration 60 \
  --assert "p95_latency_ms<500" \
  --assert "error_rate_pct<1" \
  --junit results.xml

Using a config file:

Save your test config with assertions to overload.config.yaml (the browser UI can do this via Save Config):

test_type: load
config:
  target_rps: 100
  hold_duration_seconds: 60
  concurrency: 20
thresholds:
  - metric: p95_latency_ms
    operator: "<"
    value: 500
  - metric: error_rate_pct
    operator: "<"
    value: 1

Then in CI:

overload run --collection api.json --config overload.config.yaml --junit results.xml

GitHub Actions example:

- name: Run load test
  run: |
    pip install overload-cli
    overload run --collection tests/api.json \
      --config overload.config.yaml \
      --junit results.xml

- name: Publish test results
  uses: dorny/test-reporter@v1
  if: always()
  with:
    name: Load Test
    path: results.xml
    reporter: java-junit

Available assertion metrics: p50_latency_ms, p95_latency_ms, p99_latency_ms, max_latency_ms, mean_latency_ms, error_rate_pct, success_rate_pct, avg_rps, total_requests, rate_limited_count

Operators: <, <=, >, >=, ==


Quick Reference

# See results in browser (recommended)
overload

# See results in terminal
overload run --collection my_api.json --pattern burst --requests 100

# Debug mode (verbose logging)
overload --debug
# or
OVERLOAD_DEBUG=1 overload

Working Directory

When you launch overload from a directory that contains Postman JSON files, the UI auto-detects and lists them. Start from your project folder:

cd path/to/my-api-tests/
overload

The HTML report is also saved to the working directory after each test.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

overload_cli-0.2.0.tar.gz (99.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

overload_cli-0.2.0-py3-none-any.whl (70.0 kB view details)

Uploaded Python 3

File details

Details for the file overload_cli-0.2.0.tar.gz.

File metadata

  • Download URL: overload_cli-0.2.0.tar.gz
  • Upload date:
  • Size: 99.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for overload_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d534d8dec6c0019fac12ed9a2f32d82e9cac76687d7af234096bd34a85365062
MD5 56bf91ba9139624a34c388bf5fc96e80
BLAKE2b-256 8398de255fbc4b1e4d5d0f0a692942139dabc54b657f4cccde7dba1eabce7e44

See more details on using hashes here.

Provenance

The following attestation bundles were made for overload_cli-0.2.0.tar.gz:

Publisher: publish.yml on dprakash2101/overload

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file overload_cli-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: overload_cli-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 70.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for overload_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0028d781967448b0206806d239edbd879f91689d1811b4bfb97b997f7875857e
MD5 c09b483be101391db6aaa802ab815853
BLAKE2b-256 00757de29a87f2300be7ea123e5dc4ab4d18cf10df22a4a568bb8459b05b879d

See more details on using hashes here.

Provenance

The following attestation bundles were made for overload_cli-0.2.0-py3-none-any.whl:

Publisher: publish.yml on dprakash2101/overload

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page