| --- |
| title: ABot-World Interactive |
| emoji: π |
| colorFrom: gray |
| colorTo: red |
| sdk: gradio |
| sdk_version: 6.12.0 |
| app_file: app.py |
| pinned: false |
| short_description: Live interactive world rollout from an image |
| python_version: "3.10" |
| startup_duration_timeout: 40m |
| --- |
| |
| # π ABot-World β Interactive World Rollout |
|
|
| Upload a single starting image and steer a **live** navigable world in real time. |
| Provide a first-frame image (image-to-video seed), describe the scene, and drive |
| the world with **WASD** (move & turn) / **IJKL** (look & pan). The model |
| autoregressively rolls out an action-conditioned world and streams decoded frames |
| straight to your browser. |
|
|
| - **Model:** [`acvlab/ABot-World-0-5B-LF`](https://huggingface.co/acvlab/ABot-World-0-5B-LF) (built on Wan2.2-TI2V-5B) |
| - **Code:** [amap-cvlab/ABot-World](https://github.com/amap-cvlab/ABot-World) |
| - **Project:** [ABot-World](https://amap-cvlab.github.io/ABot-World/) |
|
|
| ## Architecture |
|
|
| This Space runs a proper live backend/infrastructure (in the spirit of |
| [`Overworld/waypoint-1-5`](https://huggingface.co/spaces/Overworld/waypoint-1-5)): |
|
|
| - **`gradio.Server`** exposes ZeroGPU-friendly `/start_game` and `/stop_game` |
| API endpoints plus a raw **WebSocket** (`/ws`) that streams binary JPEG frames |
| and receives live control input β no Gradio UI polling. |
| - A custom **`index.html`** front-end handles **image upload** (the i2v seed β |
| no video upload needed), live keyboard steering, and a clean HUD. |
| - Every endpoint is keyed by a per-client `session_id`, so concurrent players |
| never share seed images, frame queues, or status messages. |
| - **ZeroGPU quota** is billed to the *requesting user*: the HF iframe's |
| `x-api-token` / `x-ip-token` is forwarded by the Gradio JS client and the |
| incoming request context is propagated into the GPU worker thread, so |
| `@spaces.GPU` consumes the visitor's own quota rather than the Space owner's. |
|
|
| Inference is causal / block-wise, matching the upstream `CausalInferencePipeline`. |
|
|