Bot swarm

d

Bot swarm

Drive synthetic load against any feature. Pick a scenario, mix personas, watch live latency in real time. No SSH, no CLI, no Prometheus — single pane.
Targeting: http://api:9080

New run

Cap 2000 (server-side hard limit).
Don't lead with 1000 bots
Last time a 1000-bot OTP+tournament burst crashed the prior staging box. Ramp gradually so you learn where THIS box saturates:
  1. Smoke 10 bots / 30s first — confirm scenario reaches its endpoints.
  2. Step up to 100 bots / 60s — watch for any 5xx in the table.
  3. 500 bots / 60s — measures realistic peak (~3K concurrent users).
  4. 1500 bots / 120s — stress the auth burst lane.
  5. Stop if p99 > 2s OR errors > 1% in any row — you've found the ceiling.
realistic
fast
slow
flaky
cheater
Sums > 100 are clamped; remainder spills to realistic.
0 = random. Non-zero → deterministic.
Redis cache experiments
Tags accumulate (cache-on:v1-exams,cache-off:v1-leaderboard), so the compare tab matches the exact flag combination. Pair the leaderboard-browse scenario with the leaderboard checkbox to see the largest delta — that endpoint hits the DB profile-hydration path on every uncached call.

Live

Host load (1m / 5m)
/
API /v1/health ping
DOWN
Admin goroutines
Admin mem (heap / sys)
/
Identity pool authed bots reuse JWTs across runs
cached
access valid
refresh only
Thresholds (2 vCPU): 🟢 healthy · 🟡 strained · 🔴 ceiling found. Load > 2 ⚠ > 4 ✗ · API ping > 300 ms ⚠ > 1 s ✗ · Goroutines > 2k ⚠ > 5k ✗ · p99 > 500 ms ⚠ > 2 s ✗

Past runs (20)

Compare: vs
Click A / B on two rows then hit Compare to see side-by-side diff. Tag your baselines (e.g. "baseline-no-cache") so they're easy to find later.
Pick Run · Tag Scenario Bots Dur Iter Err Phase Started
leaderboard-browse 1000 60s 44389 30085 done 2026-05-13 19:40
leaderboard-browse 1000 60s 45251 31661 done 2026-05-13 19:38
daily-loop 1000 60s 17046 0 done 2026-05-13 19:35
daily-loop 1000 60s 16427 0 done 2026-05-13 19:33
daily-loop 1000 60s 16105 0 done 2026-05-13 19:22
pool-warm 1000 30s 1000 0 done 2026-05-13 19:21
pool-warm 1000 120s 1000 0 done 2026-05-13 19:19
auth-flood 10 60s 168 0 done 2026-05-13 19:09
pool-warm 1000 150s 504 2510 done 2026-05-13 19:02
pool-warm 1000 120s 695 305 done 2026-05-13 17:52
pool-warm 10 60s 10 0 done 2026-05-13 17:50
auth-flood 1000 120s 790 936 done 2026-05-13 17:48
auth-flood 1000 120s 901 906 done 2026-05-13 17:11
auth-flood 1000 360s 3473 2042 done 2026-05-13 16:41
auth-flood 1000 120s 1184 1004 done 2026-05-13 16:38
daily-loop 250 60s 15358 0 done 2026-05-13 16:33
daily-loop 250 60s 16254 0 done 2026-05-13 16:31
daily-loop 250 60s 11661 0 done 2026-05-13 16:30
daily-loop 50 60s 5421 0 done 2026-05-13 16:26
daily-loop 50 60s 5026 0 done 2026-05-13 16:25