New simulation run

Configure your scenario below. Settings are sent to the API as YAML on start.

🔗

Connection

Where the simulator talks to backend-web.

Base address of backend-web. Driver bots log in here, start trips, send GPS, and board passengers through this API.

10 = ten simulated seconds per real second.

Free driving routes via OSRM + OpenStreetMap. No API key.

🚗

Fleet & drivers

Who drives the simulated buses.

One or more operators from backend-web. Drivers list updates when selection changes.

Drivers from selected companies — all checked by default. Label shows username · company.

0 = unlimited per simulated 24h. Example: 8 = each driver runs up to 8 trips per sim day, then waits for the next day.

0 = no cap for the whole simulation. Use a small number for quick smoke tests.

👥

Passengers

How and where new passengers appear.

Fraction of new passengers who flag down the bus without an app booking. 0.9 = 90% walk-on.

Fraction who reserve through the app. Bots respawn automatically while the run is active. Set 0 to disable auto-spawn (use Companies tab to add manually).

Average spawn rate in simulated time. 30 ≈ one new passenger every 2 simulated minutes.

Walk-on passengers without the app. 0.7 = 70% queue at an official stop, 30% wait at a random roadside point (orange dots on the map).

📍

GPS & movement

How the bus moves and reports location.

How often the driver sends GPS while a trip is active (simulated seconds). Lower = smoother map track.

GPS ping when on shift but between trips — keeps the unit shown as online in backend.

Typical speed between stops. Affects how fast the bus completes the route.

Shortest time the bus stays at a stop for boarding/alighting. Each stop picks a random wait between min and max.

Longest stop time. Example: min 15 + max 45 → each stop lasts 15–45 simulated seconds before the bus leaves.

🎯

Scenarios

What to verify. Full bus must log a rejection — never silent.

Mixed normal = everyday traffic. Overcapacity = bus filled on purpose, then extra passengers must be rejected. Watch live feed for onboard_rejected or reservation_rejected.

📷

YOLO captures

Simulated cabin photos for passenger-count checks.

Share of uploads where AI passenger count matches the trip manifest. 0.8 = 80% correct photos.

Share of uploads that intentionally disagree with manifest — tests overcapacity / audit alerts in backend.