Load testing for every narduk app

Declare a plan in your repository, run it on Cloudflare, and read a verdict your CI can gate on.
Config/load-plan.json
{
  "targets": { "preview": "auto" },
  "scenarios": [
    { "id": "home", "weight": 3, "method": "GET", "path": "/" },
    { "id": "health", "weight": 1, "method": "GET", "path": "/api/health" }
  ],
  "profiles": {
    "smoke": { "stages": [{ "duration": "1m", "rate": 5 }] }
  },
  "thresholds": { "p95Ms": 400, "errorRate": 0.01 }
}
Example run
$ nvault run -- narduk-app load run --profile smoke --wait
run lt_01 on preview · build 4f2c9e1 · 5 req/s for 1m
p95 212ms (limit 400ms) · errors 0.00% (limit 1%)
PASS · exit 0

What a run gives you

One plan file per app, one command, and a result that names the build it measured.
  • Open-model arrival rate
    Plans set requests per second, so a slow server cannot quietly lower the load it is measured under.
  • k6 on Cloudflare Containers
    Each run is a k6 script generated from your plan, in containers started for that run and stopped after it.
  • Every second, merged percentiles
    Each second is recorded per scenario, and p95 and p99 come from merged histograms, never averages of averages.
  • Thresholds become exit codes
    Exit 0 when every threshold held, 1 when one broke, 2 when the run was aborted. CI gates on it directly.
  • Aware of rate limits
    Signed runs skip narduk-core's limiter on preview hosts. Production keeps its limits, and 429s are counted as their own class.
  • Guardrails
    Verified hostnames only, capped rate and duration, and a kill switch that stops a run when its target goes down.

Access: estate-internal

loadtest.dev runs load for Narduk Enterprises apps today. Sign in with your estate account; there are no public sign-ups or paid plans.
loadtest.dev — Part of the Narduk Enterprises network