Overflow
We’re building a Waymo-style autonomous driving simulator UI that continuously generates and compares “counterfactual” rollouts driven by an OpenEnv policy.
Core trick
Branches each simulated scenario every ten seconds from the current state so identical counterfactual rollouts differ only by ego-car actions.
Description
We’re building a Waymo-style autonomous driving simulator UI that continuously generates and compares “counterfactual” rollouts driven by an OpenEnv policy. The main screen replays a base scenario, while a dashboard shows a camera-grid of parallel simulations that are identical except for one thing: the green ego car’s actions, updated every few seconds from (actions + rewards). Every 10 seconds, three new variants spawn from the current moment, letting users visually see how different ego decisions change safety proxies and reward outcomes. A 3D knowledge graph links scenarios, incidents/tickets, actions, metrics, and rewards to make the system verifiable and easy to explain—turning autonomous driving review into an interactive, multi-agent oversight and improvement workflow.
README excerpt
---
title: Overflow OpenENV
emoji: 🚗
colorFrom: red
colorTo: yellow
sdk: docker
pinned: false
app_port: 8000
base_path: /web
tags:
- openenv
---
# Overflow Environment
An autonomous vehicle fleet oversight environment for [OpenEnv](https://github.com/meta-pytorch/OpenEnv).
## Overview
A 2D road grid with N cars. One car (Car 0) is controlled by an LLM agent, while other cars follow simple scripted driving rules. An observer detects crashes and near-misses each step and computes rewards based on safety.
## Quick Start
```bash
# Install dependencies
pip install -e .
# Run the server
uvicorn server.app:app --host 0.0.0.0 --port 8000 --reload
```
```python
from overflow_env import OverflowEnv, OverflowAction
async with OverflowEnv(base_url="http://localhost:8000") as env:
result = await env.reset()
print(result.observation.scene_description)
action = OverflowAction(decision="maintain", reasoning="Road is clear ahead.")
result = await env.step(action)
print(result.observation.incident_report)
print(f"Reward: {result.reward}, Done: {result.done}")
```
## Action Space
| Decision | Effect |
|----------|--------|
| `accelerate` | Increase speed by 5 |
| `brake` | Decrease speed by 5 |
| `lane_change_left` | Move to left lane |
| `lane_change_right` | Move to right lane |
| `maintain` | Keep current speed and lane |
## Reward Structure
| Event | Reward |
|-------|--------|
| Crash (distance < 5) | -5.0 |
| Near miss (distance < 15) | -1.0 |
| Saf