{"_id":"@absuitecore/quickbench","_rev":"7-354683320cf126dcefddd0d0f8a86b2d","name":"@absuitecore/quickbench","dist-tags":{"latest":"1.4.0"},"versions":{"1.0.0":{"name":"@absuitecore/quickbench","version":"1.0.0","keywords":["benchmark","llm","latency","percentile","regression-detection"],"license":"MIT","_id":"@absuitecore/quickbench@1.0.0","maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"homepage":"https://github.com/iamGodofall/ABSuite-core#readme","bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"dist":{"shasum":"1b615dd60b112d0fd25aaafc3eeb871e32deff9d","tarball":"https://registry.npmjs.org/@absuitecore/quickbench/-/quickbench-1.0.0.tgz","fileCount":15,"integrity":"sha512-oQZiwF6YcIjbbXwZ4R3xZqLqdQSvtx3QuGbjRxiBtQo0es+yzTQ7fmtUxneTrOfTRZ2jz8WqfjCfcvoqNT87Kg==","signatures":[{"sig":"MEYCIQCKEcqsXNcfRiWTP90y28IXcIsRS3OYHBdQLtQZoAUgnwIhAN91Pclr28idolVtPdVxSIuXAxddp5HKgm9ehbsRbz5f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@absuitecore%2fquickbench@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42548},"main":"dist/index.js","_from":"file:absuitecore-quickbench-1.0.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"scripts":{"dev":"tsx src/server.ts","test":"jest -c ../../jest.config.js --rootDir ../.. --testPathPatterns packages/quickbench","build":"tsc -p tsconfig.json","start":"node dist/server.js"},"_npmUser":{"name":"themba-mpehle","email":"landinwest@gmail.com"},"_resolved":"/tmp/a9a73c31c7a39f617622ce95c1faeeaa/absuitecore-quickbench-1.0.0.tgz","_integrity":"sha512-oQZiwF6YcIjbbXwZ4R3xZqLqdQSvtx3QuGbjRxiBtQo0es+yzTQ7fmtUxneTrOfTRZ2jz8WqfjCfcvoqNT87Kg==","repository":{"url":"git+https://github.com/iamGodofall/ABSuite-core.git","type":"git","directory":"packages/quickbench"},"_npmVersion":"10.9.8","description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^4.18.0","@absuitecore/capkit":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.0.0","@types/node":"^22.0.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/quickbench_1.0.0_1785297898224_0.8510236348386366","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@absuitecore/quickbench","version":"1.0.1","keywords":["benchmark","llm","latency","percentile","regression-detection"],"license":"MIT","_id":"@absuitecore/quickbench@1.0.1","maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"homepage":"https://github.com/iamGodofall/ABSuite-core#readme","bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"dist":{"shasum":"96083d9fc630fe946e8e4560c6575c0a89b79202","tarball":"https://registry.npmjs.org/@absuitecore/quickbench/-/quickbench-1.0.1.tgz","fileCount":15,"integrity":"sha512-efq81EY3ZxgqT/jeIWlezeUBh4xMLSSJgEJjun/MMQ3evimJfngl+iuXUF00FMyp6NIxsheixJbIS98vGud1Lw==","signatures":[{"sig":"MEYCIQDgsEyat8cXROJC3+/JNA//i1sDlLF7CQQbGHKFqRIVlgIhANoyMijtgNkxjzPjfcYk1d5PmiUONVs56NgQGekjTX05","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@absuitecore%2fquickbench@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42549},"main":"dist/index.js","_from":"file:absuitecore-quickbench-1.0.1.tgz","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"scripts":{"dev":"tsx src/server.ts","test":"jest -c ../../jest.config.js --rootDir ../.. --testPathPatterns packages/quickbench","build":"tsc -p tsconfig.json","start":"node dist/server.js"},"_npmUser":{"name":"themba-mpehle","email":"landinwest@gmail.com"},"_resolved":"/tmp/3246b0c16bc0df1c0c948a429499a1cc/absuitecore-quickbench-1.0.1.tgz","_integrity":"sha512-efq81EY3ZxgqT/jeIWlezeUBh4xMLSSJgEJjun/MMQ3evimJfngl+iuXUF00FMyp6NIxsheixJbIS98vGud1Lw==","repository":{"url":"git+https://github.com/iamGodofall/ABSuite-core.git","type":"git","directory":"packages/quickbench"},"_npmVersion":"10.9.8","description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^4.18.0","@absuitecore/capkit":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.0.0","@types/node":"^22.0.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/quickbench_1.0.1_1785316101456_0.5955812151413022","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@absuitecore/quickbench","version":"1.0.2","keywords":["benchmark","llm","latency","percentile","regression-detection"],"license":"MIT","_id":"@absuitecore/quickbench@1.0.2","maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"homepage":"https://github.com/iamGodofall/ABSuite-core#readme","bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"dist":{"shasum":"07839554652c801da84ba69392106c6f05eaf069","tarball":"https://registry.npmjs.org/@absuitecore/quickbench/-/quickbench-1.0.2.tgz","fileCount":21,"integrity":"sha512-MqwG+Q+M0YPyDJ65ReL4hpDGduViZMbBw7f/R6duEKEtJhvn4Wl6ivY4qtRAuKY7T+hEqwhTX50snS+wtkuGMw==","signatures":[{"sig":"MEQCIAMxlkS8Eu0C0uVqJ8bUni++ELJ91GwLjWJmk0vflBdZAiBn6/BRje3uEyJuqlAkQ40cLoLQrPa0LTKT08RRwcPo4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@absuitecore%2fquickbench@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84085},"main":"dist/index.js","_from":"file:absuitecore-quickbench-1.0.2.tgz","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"scripts":{"dev":"tsx src/server.ts","test":"jest -c ../../jest.config.js --rootDir ../.. --testPathPatterns packages/quickbench","build":"tsc -p tsconfig.json","start":"node dist/server.js"},"_npmUser":{"name":"themba-mpehle","email":"landinwest@gmail.com"},"_resolved":"/tmp/c603f3eabbfc8604c9879076a6c585af/absuitecore-quickbench-1.0.2.tgz","_integrity":"sha512-MqwG+Q+M0YPyDJ65ReL4hpDGduViZMbBw7f/R6duEKEtJhvn4Wl6ivY4qtRAuKY7T+hEqwhTX50snS+wtkuGMw==","repository":{"url":"git+https://github.com/iamGodofall/ABSuite-core.git","type":"git","directory":"packages/quickbench"},"_npmVersion":"10.9.8","description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^4.18.0","@absuitecore/capkit":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.0.0","@types/node":"^22.0.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/quickbench_1.0.2_1785669571805_0.380130008452622","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@absuitecore/quickbench","version":"1.1.0","keywords":["benchmark","llm","latency","percentile","regression-detection"],"license":"MIT","_id":"@absuitecore/quickbench@1.1.0","maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"homepage":"https://github.com/iamGodofall/ABSuite-core#readme","bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"dist":{"shasum":"845786fed61396cb9c05fbdca98ffda9251154cc","tarball":"https://registry.npmjs.org/@absuitecore/quickbench/-/quickbench-1.1.0.tgz","fileCount":21,"integrity":"sha512-SGhBjo5+Vlpfmmacd+zwQppXc4uoQ83qMzWmXGy6XCkbmqTvo5+xRmA2YihXlhv8a4ii8hfldSBznG799Kjgpg==","signatures":[{"sig":"MEUCIQD7tefqmCWugu325Pwkhs77niuNkxRsDier+WNYVyre4AIgZb+H1L8a8gDDe7PVK3ojODJcDyjbQ3Cr9dy4JKKae5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@absuitecore%2fquickbench@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86380},"main":"dist/index.js","_from":"file:absuitecore-quickbench-1.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"scripts":{"dev":"tsx src/server.ts","test":"jest -c ../../jest.config.js --rootDir ../.. --testPathPatterns packages/quickbench","build":"tsc -p tsconfig.json","start":"node dist/server.js"},"_npmUser":{"name":"themba-mpehle","email":"landinwest@gmail.com"},"_resolved":"/tmp/32ec361d4bfa3fffe02ec53f9ace17f5/absuitecore-quickbench-1.1.0.tgz","_integrity":"sha512-SGhBjo5+Vlpfmmacd+zwQppXc4uoQ83qMzWmXGy6XCkbmqTvo5+xRmA2YihXlhv8a4ii8hfldSBznG799Kjgpg==","repository":{"url":"git+https://github.com/iamGodofall/ABSuite-core.git","type":"git","directory":"packages/quickbench"},"_npmVersion":"10.9.8","description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^4.18.0","@absuitecore/capkit":"^1.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.0.0","@types/node":"^22.0.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/quickbench_1.1.0_1785687037769_0.25259641386491904","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@absuitecore/quickbench","version":"1.2.0","keywords":["benchmark","llm","latency","percentile","regression-detection"],"license":"MIT","_id":"@absuitecore/quickbench@1.2.0","maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"homepage":"https://github.com/iamGodofall/ABSuite-core#readme","bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"dist":{"shasum":"29ca1d2b9d189b563f492a33c1269db7096ec3cf","tarball":"https://registry.npmjs.org/@absuitecore/quickbench/-/quickbench-1.2.0.tgz","fileCount":21,"integrity":"sha512-qLo+l5R9GnVUHpy+yseLw6+5CcTufGXt9pR4PeXF0TwKv2MShVTu8EingGeXFBldfGGNeq2EYN5ykVHYpK3nnA==","signatures":[{"sig":"MEUCIQDgbAj9O3A2V7fplRIdxTkCbne2NfoxY+V0xBSEqO08nAIge4YpeAAZ1KVUGYlwmOGKcvOTjqZ47SH3H/SLhDbD7RY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@absuitecore%2fquickbench@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90113},"main":"dist/index.js","_from":"file:absuitecore-quickbench-1.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"scripts":{"dev":"tsx src/server.ts","test":"jest -c ../../jest.config.js --rootDir ../.. --testPathPatterns packages/quickbench","build":"tsc -p tsconfig.json","start":"node dist/server.js"},"_npmUser":{"name":"themba-mpehle","email":"landinwest@gmail.com"},"_resolved":"/tmp/e89e9dd422acf37d07e61eeed3b132cf/absuitecore-quickbench-1.2.0.tgz","_integrity":"sha512-qLo+l5R9GnVUHpy+yseLw6+5CcTufGXt9pR4PeXF0TwKv2MShVTu8EingGeXFBldfGGNeq2EYN5ykVHYpK3nnA==","repository":{"url":"git+https://github.com/iamGodofall/ABSuite-core.git","type":"git","directory":"packages/quickbench"},"_npmVersion":"10.9.8","description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^4.18.0","@absuitecore/capkit":"^1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.0.0","@types/node":"^22.0.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/quickbench_1.2.0_1785719321077_0.23574836168494362","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@absuitecore/quickbench","version":"1.3.0","keywords":["benchmark","llm","latency","percentile","regression-detection"],"license":"MIT","_id":"@absuitecore/quickbench@1.3.0","maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"homepage":"https://github.com/iamGodofall/ABSuite-core#readme","bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"dist":{"shasum":"f403b6d8f727fcabf0835464b5d34f58ab51d0b8","tarball":"https://registry.npmjs.org/@absuitecore/quickbench/-/quickbench-1.3.0.tgz","fileCount":21,"integrity":"sha512-10HLclD8zaHbBpIovgVSBxI5yOp4O9mJFEeKPraX38t4kHb7cIxtZw0QYIwp6+EXma82S7gTS8n3KGxD3fGFuA==","signatures":[{"sig":"MEQCIGE23U999ZmagjmFy5mL7yEsNewuEax4ebSBGgJPsMCZAiBN4RnFF8jSv5ReVTk5UIXu3SEgF2pIZuuRz2dd4MwqGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@absuitecore%2fquickbench@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91093},"main":"dist/index.js","_from":"file:absuitecore-quickbench-1.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22.5.0"},"scripts":{"dev":"tsx src/server.ts","test":"jest -c ../../jest.config.js --rootDir ../.. --testPathPatterns packages/quickbench","build":"tsc -p tsconfig.json","start":"node dist/server.js"},"_npmUser":{"name":"themba-mpehle","email":"landinwest@gmail.com"},"_resolved":"/tmp/5fceccc8654e3f2318edf37f8d3479e4/absuitecore-quickbench-1.3.0.tgz","_integrity":"sha512-10HLclD8zaHbBpIovgVSBxI5yOp4O9mJFEeKPraX38t4kHb7cIxtZw0QYIwp6+EXma82S7gTS8n3KGxD3fGFuA==","repository":{"url":"git+https://github.com/iamGodofall/ABSuite-core.git","type":"git","directory":"packages/quickbench"},"_npmVersion":"10.9.8","description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^4.18.0","@absuitecore/capkit":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.0.0","@types/node":"^22.0.0","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/quickbench_1.3.0_1785725945393_0.44045871722742747","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@absuitecore/quickbench","version":"1.4.0","description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","keywords":["benchmark","llm","latency","percentile","regression-detection"],"dependencies":{"express":"^4.18.0","@absuitecore/capkit":"^1.8.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^22.0.0","tsx":"^4.21.0","typescript":"^5.0.0"},"engines":{"node":">=22.5.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/iamGodofall/ABSuite-core.git","directory":"packages/quickbench"},"homepage":"https://github.com/iamGodofall/ABSuite-core#readme","bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"scripts":{"build":"tsc -p tsconfig.json","start":"node dist/server.js","dev":"tsx src/server.ts","test":"jest -c ../../jest.config.js --rootDir ../.. --testPathPatterns packages/quickbench"},"_id":"@absuitecore/quickbench@1.4.0","_integrity":"sha512-hqPJFRlJ+XtHV5K822CEDAu45OTw85OkDqzvOue5Fs3AuEeu7htASSIQ373hgFNUaXduiTeGf4PSZaXRGkerjw==","_resolved":"/tmp/e3c187c398aca3fe996741a545920f64/absuitecore-quickbench-1.4.0.tgz","_from":"file:absuitecore-quickbench-1.4.0.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-hqPJFRlJ+XtHV5K822CEDAu45OTw85OkDqzvOue5Fs3AuEeu7htASSIQ373hgFNUaXduiTeGf4PSZaXRGkerjw==","shasum":"37c540319fce684098e951cbfdf4ab0029c51633","tarball":"https://registry.npmjs.org/@absuitecore/quickbench/-/quickbench-1.4.0.tgz","fileCount":21,"unpackedSize":91093,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@absuitecore%2fquickbench@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC/zgYxJZS5l4lybyJT8nx5l4I4AwUnX3lOgpXiro9X7wIhANAeEBjvy68lrdsKj9aTu5IOPSsx4d9XfpEMewkbuqTL"}]},"_npmUser":{"name":"themba-mpehle","email":"landinwest@gmail.com"},"directories":{},"maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/quickbench_1.4.0_1785741130214_0.4149948366308527"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-29T04:04:58.078Z","modified":"2026-08-03T07:12:10.727Z","1.0.0":"2026-07-29T04:04:58.363Z","1.0.1":"2026-07-29T09:08:21.606Z","1.0.2":"2026-08-02T11:19:31.945Z","1.1.0":"2026-08-02T16:10:37.926Z","1.2.0":"2026-08-03T01:08:41.216Z","1.3.0":"2026-08-03T02:59:05.529Z","1.4.0":"2026-08-03T07:12:10.360Z"},"bugs":{"url":"https://github.com/iamGodofall/ABSuite-core/issues"},"license":"MIT","homepage":"https://github.com/iamGodofall/ABSuite-core#readme","keywords":["benchmark","llm","latency","percentile","regression-detection"],"repository":{"type":"git","url":"git+https://github.com/iamGodofall/ABSuite-core.git","directory":"packages/quickbench"},"description":"LLM and service benchmarking with percentile latency, throughput and regression detection.","maintainers":[{"name":"themba-mpehle","email":"landinwest@gmail.com"}],"readme":"# @absuitecore/quickbench\n\nLLM and HTTP service benchmarking with percentile latency, throughput and\nstatistically grounded regression detection.\n\n## What it does\n\n- **Providers** — Ollama, OpenAI, Anthropic and a generic HTTP provider for\n  benchmarking your own services.\n- **Correct percentiles** — nearest-rank, so every reported number is a value\n  that was actually measured. No interpolation.\n- **Warmup** — warmup iterations are discarded so results reflect steady state,\n  not cold caches.\n- **True concurrency** — a fixed worker pool keeps exactly N requests in flight\n  rather than running lockstep batches.\n- **Regression detection** — Welch's t-test, which does not assume equal\n  variance, because a regressed build is often both slower *and* noisier.\n- **Reports** — JSON, Markdown (for PR comments) and CSV (for spreadsheets).\n\n## Running\n\n```bash\nCAPKIT_HMAC_SECRET=$(openssl rand -hex 32) pnpm --filter @absuitecore/quickbench dev\n```\n\n## API\n\n```bash\n# Benchmark a local model\ncurl -X POST localhost:8083/run -H \"Authorization: Bearer $TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"provider\":\"ollama\",\"model\":\"llama3\",\"testRuns\":20,\"warmupRuns\":3,\"concurrency\":4}'\n\n# Benchmark any HTTP service\ncurl -X POST localhost:8083/run -H \"Authorization: Bearer $TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"provider\":\"http\",\"url\":\"http://localhost:8081/health\",\"testRuns\":50}'\n\ncurl -H \"Authorization: Bearer $TOKEN\" localhost:8083/run/$JOB_ID\ncurl -H \"Authorization: Bearer $TOKEN\" \"localhost:8083/run/$JOB_ID/report?format=markdown\"\ncurl -H \"Authorization: Bearer $TOKEN\" \"localhost:8083/history?format=csv\"\n\n# Did this change make things slower?\ncurl -H \"Authorization: Bearer $TOKEN\" \\\n  \"localhost:8083/compare?baseline=$BEFORE&candidate=$AFTER\"\n```\n\nRequired scopes: `bench:run`, `bench:read`.\n\n`/compare` returns a verdict of `regression`, `improvement` or\n`no significant change`, so it can gate a deploy directly.\n\n## Configuration\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `QUICKBENCH_PORT` | `8083` | Listen port |\n| `QUICKBENCH_OLLAMA_URL` | `http://localhost:11434` | Ollama endpoint |\n| `OPENAI_API_KEY` | _unset_ | Enables the OpenAI provider |\n| `ANTHROPIC_API_KEY` | _unset_ | Enables the Anthropic provider |\n| `CAPKIT_HMAC_SECRET` | — | Shared with CapKit to validate tokens |\n\nRun counts are clamped (max 500 runs, concurrency 32) so a single request\ncannot ask for unbounded work.\n\n## Security\n\nThe `http` provider takes its URL from the request body, so a `bench:run` scope\nwould otherwise also mean *send traffic wherever I say*. **Link-local addresses\nare refused** — `169.254.0.0/16` and IPv6 `fe80::/10`, plus\n`metadata.google.internal` by name — because that is where every major cloud puts\ninstance metadata and it is never a benchmark target.\n\nRedirects are checked hop by hop. Checking only the URL you submitted is no\nprotection at all against a `302`, which was demonstrated rather than assumed.\nThe metadata endpoints are refused regardless of range — AWS serves IMDS over\nIPv6 at `fd00:ec2::254`, which is unique-local and would otherwise have been\nallowed.\n\nPrivate and loopback addresses still work. Benchmarking your own service is the\nentire point of this provider, and a guard that broke it would be switched off.\n\n## Known limitations\n\nJob history is in memory and capped at 100 jobs. Results do not survive a\nrestart; export to CSV to retain them.\n\n---\n\n## Part of ABSuite\n\n**The black box for AI systems** — record what happened, prove it happened,\npreserve the evidence.\n\n| | |\n|---|---|\n| Source | <https://github.com/iamGodofall/ABSuite-core> |\n| Verify a trace in your browser | <https://iamgodofall.github.io/ABSuite-core/verify.html> |\n| Getting started | [GETTING-STARTED.md](https://github.com/iamGodofall/ABSuite-core/blob/main/GETTING-STARTED.md) |\n| Reporting a vulnerability | [SECURITY.md](https://github.com/iamGodofall/ABSuite-core/blob/main/SECURITY.md) — never a public issue |\n| What this project refuses to build | [PRINCIPLES.md](https://github.com/iamGodofall/ABSuite-core/blob/main/PRINCIPLES.md) |\n\nPublished from CI with a signed Sigstore provenance attestation — check it with\n`npm audit signatures` rather than taking our word for it.\n\nMIT licensed.\n","readmeFilename":"README.md"}