AlmondGod tinyworlds: A Minimal Genie-Style World Model
A minimal implementation of DeepMind's Genie world model
At a glance
- What is it?
- AlmondGod/tinyworlds is a Python implementation of a minimal autoregressive world model inspired by DeepMind's Genie architecture. It is aimed at engineers and researchers who want to inspect video tokenization, inferred actions, discrete dynamics prediction, and training with action-free game footage.
- Who is it for?
- Adopt tinyworlds for studying a compact Genie-style architecture or experimenting with tokenized video dynamics, not as a production simulator. Do not choose it without checking hardware requirements, checkpoint availability, dataset assumptions, and whether discrete latent prediction meets the fidelity needed for your application.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Activity is slowing. The repository last received commits 6 months ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.
Star history
- AlmondGod/tinyworlds1,397 ★ · +9
| Repository | 2026-10-23 | 2026-11-07 |
|---|---|---|
| AlmondGod/tinyworlds | 1.4k | 1.4k |
9 Stars in the last 15 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Why tinyworlds exists for world-model experimentation
TinyWorlds addresses a specific problem in world-model research: learning how an environment changes over time when the training material does not include explicit action labels. The README describes ordinary video as insufficient for scaling world models when it contains no action information, then presents DeepMind's Genie as an approach that infers actions between frames. TinyWorlds is a minimal Python implementation intended to make that autoregressive and unsupervised method easier to understand. Its target audience is therefore narrower than that of a general video generation package. It is for engineers, students, and researchers who want to inspect the model components and experiment with training pipelines.
The project uses discrete tokens rather than generating raw pixels directly. According to the README, this changes dynamics prediction from selecting a point in a nearly continuous image space to selecting a token from a vocabulary of roughly one thousand codebook entries. That design makes the model easier to connect with language-model techniques, since an autoregressive transformer can operate over token sequences. The trade-off is equally important. Compression through a discrete bottleneck can discard visual details, and the repository does not document resolution limits, reconstruction quality targets, or behavior outside the small game-world datasets described by its scripts.
TinyWorlds is not presented as a general-purpose agent, robotics simulator, or production environment model. The README frames it as an educational and contribution-oriented implementation. Its central contribution is architectural clarity: separating video tokenization, action inference, and next-frame dynamics prediction makes the assumptions of the approach visible.
The three-module data flow from frames to predictions
TinyWorlds has three modules. The Video Tokenizer reconstructs a video sequence through a small discrete bottleneck, producing video tokens that retain information needed for reconstruction. The Action Tokenizer infers a discrete action token between two frames. Its training signal is reconstruction of the next frame using the previous frame and the inferred action, so the action representation is learned from temporal change rather than supplied as a label.
The Dynamics Model receives past action and frame tokens and predicts the next frame tokens. This is the autoregressive portion of the system. A generated sequence can therefore proceed token by token, with prior predicted tokens becoming context for later predictions. The README states that the dynamics component is intended to capture the physics of the tiny video-game worlds. That wording should be treated as the project's design goal, not as a verified claim about general physical accuracy.
The underlying Space-Time Transformer contains spatial attention, temporal attention, and a feed-forward network. Spatial attention lets tokens in one frame attend to all tokens in that frame. Temporal attention lets a token attend to the same position at previous timesteps. Action-conditioned STT uses FiLM. Actions pass through a feed-forward network that produces gamma and beta vectors, which modify normalized activations. For regular STT, the project uses RMSNorm. The README also identifies SwiGLU for the feed-forward network and describes a Variational Autoencoder plus Finite Scalar Quantization as building blocks. These choices provide a concrete implementation path, but The documentation does not give tensor shapes, model sizes, or hardware requirements for each module.
Training tinyworlds on ZELDA frames
The documented setup begins by cloning the repository and installing its Python dependencies. It then exports a Weights & Biases key and adds the checkout to `PYTHONPATH`. The README presents training as a two-step workflow: download the `zelda_frames.h5` dataset, then run the training script with the ZELDA configuration.
git clone https://github.com/AlmondGod/tinyworlds.git
cd tinyworlds
pip install -r requirements.txt
export WANDB_API_KEY=<YOUR_WANDB_API_KEY>
export PYTHONPATH="/workspace/tinyworlds:$PYTHONPATH"These commands install the dependencies listed in `requirements.txt`, including PyTorch, torchvision, NumPy, h5py, OpenCV, OmegaConf, and Hugging Face Hub components. The `PYTHONPATH` value is written exactly as shown in the README and assumes the project is located at `/workspace/tinyworlds`. If a checkout is elsewhere, the documented value would need to match that location, although the README does not provide an alternative command.
After setup, the asset script retrieves the named HDF5 file from Hugging Face. The training command selects `configs/training.yaml` and sets the dataset to `ZELDA`.
python scripts/download_assets.py datasets --pattern "zelda_frames.h5"
python scripts/full_train.py --config configs/training.yaml -- --dataset=ZELDAThe README does not state the expected download size, training duration, supported accelerator, batch size, checkpoint interval, or exact evaluation criteria. Those omissions matter because the project cannot be treated as a turnkey training package without inspecting the configuration and scripts.
Running inference with pretrained Sonic checkpoints
The documented inference path downloads pretrained Sonic checkpoints and then starts `scripts/run_inference.py` with `configs/inference.yaml`. The command enables `use_latest_checkpoints=true` and selects the `SONIC` dataset.
python scripts/download_assets.py models --suite-name sonic
python scripts/run_inference.py --config configs/inference.yaml -- use_latest_checkpoints=true dataset=SONICThe asset script is responsible for retrieving model assets through the repository's Hugging Face workflow. The inference command reads the YAML configuration and passes the two settings after the separator. The README does not describe the generated output format, rendering interface, seed behavior, checkpoint selection rules, or expected output location. It also does not document how to evaluate whether inferred action tokens correspond to meaningful controls.
The availability of a Sonic checkpoint path does not mean that TinyWorlds is a general Sonic game agent. The repository describes inference as part of its minimal model demonstration and does not claim support for interactive control, arbitrary environments, or real-time performance. Engineers should inspect `configs/inference.yaml` and the referenced checkpoint-loading code before assuming that a successful process launch produces usable video.
Inference is the clearest boundary for adoption. TinyWorlds can serve as a research implementation whose outputs are examined by people familiar with tokenized video models. It is a weaker fit for a team seeking a documented application programming interface, stable artifact format, or production inference service.
Training constraints, maintenance, and upgrade cost
The repository is not archived, and the last push was on 2026-04-15. The repository lists no GitHub releases. That means there is no documented release cadence, upgrade path, compatibility matrix, or migration procedure. Maintenance should therefore be assessed through the current `main` branch and the pinned lower bounds in `requirements.txt`, not through an assumed versioned distribution.
The dependency file requires `torch>=2.8.0`, `torchvision>=0.10.0`, `numpy>=1.21.0`, `wandb>=0.15.0`, `h5py>=3.1.0`, `opencv-python>=4.5.0`, `einops>=0.3.0`, `omegaconf`, and `huggingface_hub>=0.23.0`. These are minimum versions, not a fully locked environment. The README does not provide a tested Python version, CUDA version, GPU model, memory requirement, or deterministic installation procedure. Upgrading the repository may therefore require resolving dependency or checkpoint compatibility manually.
The MIT license permits use and modification under its terms, but this review does not interpret the legal obligations associated with that license. Users still need to account for model checkpoints, datasets, and third-party dependencies separately when assessing distribution or operational requirements. The README also does not document a rollback procedure.
How TinyWorlds differs from conventional supervised world models
The closest practical alternative is a conventional supervised world model that receives explicit actions together with current observations and trains directly to predict the next observation. TinyWorlds instead learns a discrete action token between frames through next-frame reconstruction, then feeds past action and frame tokens to an autoregressive dynamics model. The key difference is the source of action information: TinyWorlds attempts to infer it from video, while a supervised pipeline can use recorded control labels.
This difference matters for datasets. TinyWorlds is suited to experiments where action labels are missing or inconvenient, but the inferred action is a learned latent, not necessarily a recognizable command such as left, right, jump, or attack. A conventional action-conditioned model may offer clearer control semantics, while it requires an action-aware dataset. TinyWorlds may reduce labeling requirements, yet it adds compression and representation-learning questions that its README does not fully resolve.
Another alternative is to use a pretrained video model or a larger world-model system. TinyWorlds is explicitly minimal, so its advantage is inspectability rather than breadth. The repository offers three named modules and accessible training and inference scripts, but it does not claim production-scale video quality, broad environment coverage, or a stable deployment API. The choice depends on whether the goal is to understand the method or to obtain a finished simulator.
Editorial conclusion
Adopt tinyworlds for studying a compact Genie-style architecture or experimenting with tokenized video dynamics, not as a production simulator. Do not choose it without checking hardware requirements, checkpoint availability, dataset assumptions, and whether discrete latent prediction meets the fidelity needed for your application. The repository lists its last push as 2026-04-15 and has no GitHub releases.
Frequently asked questions
How do I install and train AlmondGod/tinyworlds?
Clone the repository, install `requirements.txt`, export `WANDB_API_KEY` and `PYTHONPATH`, download `zelda_frames.h5`, then run `scripts/full_train.py` with `configs/training.yaml` and `--dataset=ZELDA`.
Does tinyworlds require labeled actions for training?
The README says the Action Tokenizer infers a discrete action token between two frames and trains through next-frame reconstruction. It does not document prior action data as a requirement.
Does AlmondGod/tinyworlds have GitHub releases?
No GitHub releases are listed. The default branch is `main`, and the last push was on 2026-04-15.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/almondgod-tinyworlds)Star history chart for your README
[](https://hysenlabs.com/projects/almondgod-tinyworlds)Was this useful?