Synthetic users.
Real traffic.
bot-runner signs bots in to your app and has them use it the way people do — writing data, uploading files, browsing all day. Set the load in one click, watch every request, and shut out any account that strays.
One panel. Every bot.
Set the load, watch the traffic and steer each bot from one panel, for every app plugged in. Each card plays a real piece of the panel, with a demo fleet.
Dial the load in one click
Pick a target from 0 to 500 load bots: the runner ramps up ten bots every 30 seconds, and down all at once. Run them at a human pace, a few visits a day, or in bursts for a stress test.
- Presets from 10 to 500 bots
- Daily pace, or burst for stress tests
- Quiet hours in the app's own time zone
Read every request on one clock
Each 15 minutes of the day is stacked by action. Open a slice to see its requests, its errors, its p50 and p95 latency, its response codes and the bots that made them.
- Latency per action and per bot
- 2xx, 4xx and 5xx at a glance
- Each bot's last requests in a drawer
Lock every bot to its address
Bot accounts are flagged as synthetic and allowed from known addresses only. One seen anywhere else is refused with a 403, its session destroyed, and the incident reaches every page and your phone.
- A guard on every request of the app
- Web Push to every subscribed phone
- Disable or purge in one click
The whole fleet, one panel.
Four screens of the panel, playing with a demo fleet: the overview, the bots, the metrics and the incidents.
Built to plug into any app.
Each app plugs in through one adapter behind a single contract: its sign-in, its actions, its colours. Actions are discovered from a folder, so teaching the bots a new feature is one file.
Inside an app, the whole panel takes on that app's palette, so you always know whose traffic you are steering. Outside, it wears its own neutral terminal look.
Bots come in through the same doors as a browser: the session cookie, a CSRF header on every write, a fresh sign-in a minute before the session expires, and one retry on a 401.
Visits arrive with exponential gaps, awake 07:00 to 23:00 on the app's own clock, the wake-up corrected on daylight-saving nights.
Real traffic.
Never a real risk.
bot-runner writes to production, so it is built to stay inside its lines: accounts usable only from known addresses, limits fixed at boot, and a control channel that never leaves the machine.
Synthetic users.
Real traffic.
Realistic data and steady load for every app you ship, from one panel.