Skip to content

Benchmarks

lacausecrypto edited this page Apr 9, 2026 · 3 revisions

Performance

All benchmarks run on a single machine, single process. These are real measurements, not theoretical limits.

Key Numbers

What we measured Result Why it matters
Gateway overhead 0.02ms per request Conduit is effectively invisible in your request path
Cache hit (sequential) 46,700 RPS Cached tool results return instantly
Cache hit (c=50) 64,400 RPS Scales well under concurrent load
All features enabled (c=50) 111,600 RPS at P99=3.24ms Auth + plugins + rate limit + cache, still fast
Stdio transport (c=10) 354,500 RPS No network I/O = blazing fast
Plugin hooks (5 plugins) 2,000,000 ops/sec Plugins add zero measurable overhead

How We Compare

Gateway Language Raw Overhead Cache Hit RPS License
MCP Conduit TypeScript 0.02ms 46K-64K MIT
Bifrost Go 0.011ms not published Apache 2.0
TrueFoundry TypeScript 3-4ms 350/vCPU Proprietary
Envoy AI GW C++/Go 1-2ms not published Apache 2.0
Lunar MCPX Go ~4ms P99 not published Apache 2.0

Bottom line: Bifrost has ~2x lower raw overhead (Go vs JavaScript, a fundamental language gap). But in practice, most MCP requests are cache hits, where Conduit delivers 46K+ RPS. With all features enabled, we sustain 111K RPS, well above any published MCP gateway benchmark.

Scaling Behavior

How throughput changes with concurrency (cache hit scenario):

Concurrency RPS P99 Latency
c=1 53,700 0.03ms
c=10 54,600 0.28ms
c=50 64,400 0.91ms
c=100 44,600 4.59ms

Peak throughput at c=50. Beyond c=100, the Node.js event loop saturates. Use multiple instances behind a load balancer for higher concurrency.

Feature Overhead

How each feature affects performance (cache hit, c=50):

Configuration RPS Overhead vs baseline
Cache only (baseline) 54,200 baseline
+ Auth (API key) 104,400 negligible (JIT effect)
+ 5 Plugins (all hooks) 48,600 -10%
+ Auth + Plugins + Rate Limit 103,000 negligible

Plugins add ~10% overhead. Auth and rate limiting add none (in-memory, no I/O).

Component Microbenchmarks

Component Throughput Notes
CacheStore.get() 10M ops/sec In-memory LRU lookup
Inflight dedup 3.1M ops/sec Map-based deduplication
Plugin hook execution 2.0M ops/sec 5 plugins, 1 hook each
Cache key generation 1.1M ops/sec SHA-256 of sorted JSON
Discovery register+poll 963K ops/sec In-memory registration
Field redactor 205K ops/sec Recursive, 6-field nested object

Run It Yourself

npm run benchmark         # Full 24-scenario suite (~10s)
npm run benchmark:quick   # Quick smoke test (~3s)
npm run benchmark:json    # Export results as JSON

# Competitive analysis (compares with published competitor numbers)
npx tsx tests/benchmark/competitive-analysis.ts

Methodology

  • In-process Hono app.request(), no network I/O, measures gateway logic only
  • Mock MCP server with instant responses. Isolates gateway overhead
  • 50-request warmup, then measurement phase
  • Percentiles computed on sorted latency array
  • Memory tracked via process.memoryUsage()
  • Results are reproducible. Run the benchmarks on your own hardware

Clone this wiki locally