A researcher's map of open-source world models β what exists, what each line of work actually claims, and where its authors say it breaks.
The figure above is generated by docs/map_figure.py β pip install sciglyph and run it to reproduce docs/map.png byte for byte.
There are plenty of awesome-lists for world models. This is not one. A link and a one-line abstract tell you a paper exists; they do not tell you whether the method works on your problem, or what its authors already know is wrong with it.
So this map records something different: the limitations the authors wrote down themselves. That information is real, load-bearing, and almost impossible to find β it sits in section 4.3, or an appendix, or a single sentence in the discussion.
If this saved you a few hours of reading, a β makes it easier for the next person to find β github.com/GuoCheng24/world-model-map. Corrections are worth more than stars, though; see Contributing.
The question most people arrive with, answered before anything else. Each row is what you want to do, what to reach for, and β the column usually left out β what adopting it costs you.
Generated by docs/choose_figure.py. Sizes are the released checkpoints; "needs retraining" means adopting it changes your training objective rather than adding a module. Sources for every claim are in the sections below.
Everything here is marked with how far it was actually read. Nothing is summarised from a title.
| mark | meaning |
|---|---|
| π | full text read, including the limitations section |
| π | abstract and metadata only β treat claims as unverified |
Every citation was checked against OpenAlex/Crossref/arXiv with scholarcheck, so the DOIs resolve and the papers exist.
Repository state as of 2026-08-19. Last push matters: three of the best-known repositories have not been touched in over a year.
| repo | β | license | last push | what it is |
|---|---|---|---|---|
| NVIDIA/cosmos | 11551 | see repo | 2026-08-18 | action-conditioned video generation as a world model |
| facebookresearch/vjepa2 | 4482 | MIT | 2026-03-23 | V-JEPA 2 / V-JEPA 2-AC β latent video prediction + action-conditioned planning |
| facebookresearch/jepa | 4094 | see repo | 2025-02-27 | V-JEPA 1 β no longer updated |
| danijar/dreamerv3 | 3683 | MIT | 2026-05-25 | recurrent latent world model, one hyperparameter set across domains |
| facebookresearch/ijepa | 3487 | see repo | 2024-05-08 | I-JEPA β image JEPA, no longer updated |
| eloialonso/diamond | 2091 | MIT | 2024-12-06 | diffusion world model, no longer updated |
| nicklashansen/tdmpc2 | 925 | MIT | 2026-07-13 | implicit world model + local trajectory optimisation |
| gaoyuezhou/dino_wm | 551 | MIT | 2025-03-24 | world model on frozen DINO features, zero-shot planning |
The models below are downloadable and the licences are permissive, but the repositories assume you already know which checkpoint you want. This section is the part that is usually missing.
| if you want to⦠| use | why |
|---|---|---|
| classify or retrieve video, or use video features downstream | V-JEPA 2 / 2.1 encoder | a frozen encoder plus a light probe; no dynamics model involved |
| predict how a scene evolves in representation space | V-JEPA 2 predictor | the predictor is what makes it a world model rather than an encoder |
| plan robot actions from a goal image | V-JEPA 2-AC | the only action-conditioned checkpoint; trained from the ViT-g encoder |
| do model-based RL in a simulator | DreamerV3 or TD-MPC2 | they train their own latent dynamics and come with RL loops |
| plan from frozen visual features with no video pre-training | DINO-WM | builds the world model on frozen DINO features |
Straight from the V-JEPA 2 repository. Size drives your GPU requirement more than anything else.
| release | model | params | resolution |
|---|---|---|---|
| V-JEPA 2 | ViT-L/16 | 300M | 256 |
| V-JEPA 2 | ViT-H/16 | 600M | 256 |
| V-JEPA 2 | ViT-g/16 | 1B | 256 |
| V-JEPA 2 | ViT-g/16384 | 1B | 384 |
| V-JEPA 2.1 | ViT-B/16 | 80M | 384 |
| V-JEPA 2.1 | ViT-L/16 | 300M | 384 |
| V-JEPA 2.1 | ViT-g/16 | 1B | 384 |
| V-JEPA 2.1 | ViT-G/16 | 2B | 384 |
| V-JEPA 2-AC | ViT-g/16 | 1B | 256 (8 frames) |
Start with V-JEPA 2.1 ViT-B/16 (80M). It is the smallest thing that exercises the whole pipeline, and it is over an order of magnitude smaller than ViT-G. Scale up once your loop works.
1 Β· Colab, no local setup. The repository ships a demo notebook that loads a model and classifies a sample video. Nothing to install.
2 Β· HuggingFace, if you only need features. Weights are mirrored as
facebook/vjepa2-vitl-fpc64-256, -vith-, -vitg-, -vitg-fpc64-384. Loading
through transformers skips the repository's own data stack entirely.
3 Β· From source, if you want the predictor or to train.
conda create -n vjepa2-312 python=3.12
conda activate vjepa2-312
pip install . # or -e . for development
wget https://dl.fbaipublicfiles.com/vjepa2/vitg-384.pt -P ckpt/
wget https://dl.fbaipublicfiles.com/vjepa2/evals/ssv2-vitg-384-64x2x3.pt -P ckpt/
python -m notebooks.vjepa2_demo # after updating the paths in the scriptdecord, which does not support macOS and
is no longer maintained. The maintainers point at community forks rather than
recommending one. On macOS, prefer route 1 or 2.
V-JEPA 2-AC is the only one of these you can hand an action to. It was
post-trained from the ViT-g encoder on robot data
(configs/train/vitg16/droid-256px-8f.yaml), and it is what makes goal-directed
planning possible: the planner proposes action sequences, the model predicts
where each one lands in representation space, and the sequence whose predicted
state is closest to the goal wins. That loop is where the limitations in the
next section start to bite.
This is the part you cannot get from an abstract.
V-JEPA 2 π β arXiv:2506.09985
Two limitations, stated in Β§4.3:
Camera position is load-bearing, and the problem is ill-posed. V-JEPA 2-AC predicts the next frame's representation given an end-effector Cartesian action, without camera calibration. It therefore has to infer the action coordinate axis from monocular RGB β but the robot base is often outside the frame, so, in the authors' words, "the problem of inferring the action coordinate axis is not well defined, leading to errors in the world model." They report having manually tried several camera positions before settling on one that worked. A quantitative sensitivity analysis is in their Appendix B.4.
Long-horizon planning is not solved, and the paper's own numbers show it. Autoregressive rollout accumulates error β prediction accuracy falls as the rollout lengthens β and the action search space grows exponentially with horizon. Their planning results (Table 3) are run at horizon = 1. The efficiency win over a diffusion-based video world model is nonetheless large: 16 seconds per action versus 4 minutes.
DINO-WM π β arXiv:2411.04983
Three, stated together:
- needs offline data with sufficient state-action coverage, hard to obtain in complex environments;
- still requires ground-truth actions, which internet-scale video does not have;
- plans in action space only β no hierarchy between high-level planning and low-level control.
TD-MPC2 π β arXiv:2310.16828
Names the shortcoming of local trajectory optimisation explicitly, and mitigates it by bootstrapping returns beyond the planning horizon with a learned terminal value function β a partial fix, not a solution.
DreamerV3 π β arXiv:2301.04104
No explicit limitations section. Recorded here because its absence is itself information: the robustness claim is "one hyperparameter set across domains", and the paper does not enumerate where that breaks.
The mechanism matters more than the paper list: it decides whether you can adopt something without retraining, and what you would have to prove to improve on it.
A JEPA-style objective predicts one embedding from another. That objective has a trivial optimum: map everything to the same vector, and the prediction is perfect. Everything else in the design exists to make that solution unreachable.
Two published families do this, and they are worth contrasting because they disagree about how much machinery is needed:
Stop-gradient alone. SimSiam π (arXiv:2011.10566) shows a Siamese network avoids collapse with a stop-gradient and a predictor head, with no negative pairs and no momentum encoder. Structurally minimal; the reason it works is still argued over.
Explicit statistical constraints. VICReg π (arXiv:2105.04906,
ICLR 2022) writes three terms on the embeddings Z = [zβ β¦ zβ] (d dimensions,
batch n):
| term | definition | what it forbids |
|---|---|---|
| variance | v(Z) = (1/d) Ξ£β±Ό max(0, Ξ³ β S(zβ±Ό, Ξ΅)), S(x,Ξ΅) = β(Var(x)+Ξ΅), Ξ³ = 1 |
every dimension must keep spread β blocks the constant solution |
| covariance | c(Z) = (1/d) Ξ£_{iβ j} [C(Z)]Β²α΅’β±Ό |
off-diagonal correlations β 0, so dimensions cannot duplicate each other |
| invariance | s(Z,Zβ²) = (1/n) Ξ£α΅’ βzα΅’ β zβ²α΅’βΒ² |
the actual predictive objective |
with β = Ξ»s + ΞΌ[v(Z)+v(Zβ²)] + Ξ½[c(Z)+c(Zβ²)].
The detail worth carrying away is in the variance term. The paper is explicit
that using the standard deviation rather than the variance inside the hinge is
crucial: with S(x) = Var(x), the gradient of S vanishes as x approaches
its mean, so the gradient of v vanishes too β and the embeddings collapse
anyway. A hinge on the variance would look like the same regulariser and fail.
That is the shape of a real mathematical improvement in this area: not a new architecture, but noticing that a term everyone would write one way has a degenerate gradient.
Autoregressive prediction compounds: feed a prediction back in, and its error becomes part of the next input. Every model above suffers from it, which is why V-JEPA 2's own planning runs at horizon 1.
MBPO π (arXiv:1906.08253) gives the
reference bound. With Ξ΅_m bounding the expected TV-distance between true and
model transitions and Ξ΅_Ο bounding policy divergence,
Ξ·[Ο] β₯ Ξ·Μ[Ο] β C(Ξ΅_m, Ξ΅_Ο)
so improving returns under the model by more than C guarantees improvement on
the real system. The structure is right and the catch is structural too:
Ξ΅_m is not observable. You have to estimate the very quantity that the
guarantee is about, and the bound is only as good as that estimate.
Acting upon Imagination π (arXiv:2105.05716) takes the practical route: ensemble variance as a trust signal for when to re-plan. It works, and it is a heuristic β the spread of an ensemble is not a coverage guarantee, and nothing forces it to be calibrated.
What is open here. Neither gives a distribution-free, finite-sample
statement about a specific rollout at a specific horizon. Conformal prediction is
the obvious tool, and the obstacle is equally obvious: split conformal needs
exchangeability, and successive rollout steps are not exchangeable β step
k+1 is computed from step k's output. Adapting it is a real problem, not
a matter of applying the standard recipe.
Before the individual methods, the thing they share. Write e_k for the error of
the rollout at step k. Feeding a prediction back in gives
e_{k+1} β€ L Β· e_k + Ξ΄ βΉ e_k = Ξ΄ Β· (L^k β 1) / (L β 1)
L is multiplicative β how much the latent map stretches error already
present. Ξ΄ is additive β the new error each step injects. Everything on this
page acts on one of those two, projects the state, or measures e_k without
touching either.
The split is not gradual. Holding Ξ΄ = 0.01 and moving only L, at horizon 60:
L |
e_60 |
|
|---|---|---|
| 0.90 | 0.0998 | saturates at Ξ΄/(1βL) = 0.1 |
| 1.00 | 0.60 | grows linearly, kΞ΄ |
| 1.15 | 292 | exponential |
A 28% change in L moves the bound by 2,927Γ (the 4,384Γ is 1.15^60 itself, the amplification, not the ratio of the two bounds). This is why V-JEPA 2 plans at
horizon 1 and why "just roll out further" is not an engineering detail.
(The recursion is the standard error-propagation form, not a quotation; the closed
form was checked against direct iteration to machine precision. The script is
docs/recursion_figure.py.)
Rather than measuring the error, restrict the map so it cannot blow up.
Koopman Dreamer π (arXiv:2607.19719)
attacks L directly. The latent core is built from 2-D rotationβscaling blocks
with bounded radii β damping, rotation and near-periodic modes, with the radius
bound as the spectral constraint. Action enters through linear and low-rank
bilinear terms. The paper derives a multi-step rollout-error bound that
separates the amplification (spectral backbone, bilinear interaction) from
the additive terms (stochastic-state mismatch, modelling residual) β which is
the L / Ξ΄ split above, stated by the authors for their own model.
SD-GWM π (arXiv:2608.08689) does
something structurally different: it neither shrinks L nor Ξ΄, it projects.
Nodes declare self-dynamics S, edges declare graph-coupled dynamics N, both as
fixed-form assets β rules, ODEs, existing solvers β with only authorized
parameters calibrated. A bounded residual R absorbs what is left, and a global
projection maps the state back onto the feasible set at each step. The authors are
unusually direct about what that buys: the projection enforces constraints
without guaranteeing accuracy gains, and they position the model as a
verifiable substrate rather than a better forecaster. Their reported numbers fit
that framing β on a 254-day extreme-flood shift, persistence and neural baselines
degrade to 892β3007 cfs RMSE while SD-GWM holds at 108, but the bounded residual
only cuts RMSE meaningfully when the backbone is biased.
Both require retraining. You are changing the model, not wrapping it β the cost line running through this whole section.
Read the figure's table by column rather than by row. Everything that
constrains the recursion β bounded spectral radii, feasibility projection,
a tighter Ξ΄ β hands you no statement about a particular rollout you are about
to trust. Everything that measures it β ensemble spread, and conformal
prediction if it worked here β leaves the recursion exactly as it was.
Nothing currently does both. That is not a gap anyone has hidden; it falls out of
how the two literatures are built, and it is the most concrete opening on this
page. The obstacle on the certification side is stated in the rollout section
above and is real: split conformal needs exchangeability, and step k+1 is
computed from step k.
V-JEPA 2-AC takes an end-effector Cartesian action and predicts the next representation, without camera calibration. So the model must infer the action coordinate frame from monocular pixels β and when the robot base is out of frame, the authors state the inference problem is not well defined.
This is a geometry question before it is a learning question: under what conditions on the observation is the action frame identifiable at all? If it is not identifiable, no amount of training data fixes it, and the authors' own workaround β trying camera positions by hand until one works β is exactly what you would expect.
Almost nothing addresses this directly, which is why it is listed here at all.
Grouped by what they change, which is what decides whether you can adopt one without retraining.
The oldest and most-cited line, and still open.
- MBPO π β arXiv:1906.08253. Theorem 4.1 bounds true returns by model returns minus
C(Ξ΅_m, Ξ΅_Ο), whereΞ΅_mbounds the TV-distance between true and model transitions. The structure is sound; the catch is thatΞ΅_mis not observable and has to be estimated before the bound can be used. - Acting upon Imagination π β arXiv:2105.05716. Uses ensemble variance to decide when to re-plan. Heuristic; no coverage guarantee.
- Finite-Sample Metric Non-Collapse for Geometrically Supervised Latent World Models in Control π β arXiv:2608.07265 (Bensoussan, Phung, Tran, 2026-08) β advertises approximation theory and finite-sample geometric guarantees. Not yet read in full.
Open: none of the above gives a distribution-free, finite-sample statement about a specific rollout at a specific horizon. Conformal methods are the obvious candidate; the non-trivial part is that rollout steps are not exchangeable, so textbook split conformal does not apply unmodified.
- Koopman Dreamer π (2026, arXiv:2607.19719) β Spectrally Constrained Latent Dynamics for Stable World-Model Imagination, Li, Zhang, Xie et al. The backbone is built from 2-D rotationβscaling blocks with bounded radii, which is how the spectrum is constrained. They derive a multi-step rollout-error bound that separates the multiplicative amplification (spectral backbone + bilinear action terms) from the additive terms (stochastic-state mismatch, modelling residual) β the two knobs in the recursion above.
- SD-GWM π (2026, arXiv:2608.08689) β A Structural Dynamics Graph World Model, Wang, Chen, Yang & Liu. Nodes declare self-dynamics
S, edges declare graph-coupled dynamicsN, both fixed-form mechanism assets (rules, ODEs, solvers) with only authorized parameters calibrated; an optional bounded residualRconcentrates learnability, and a global projection maps states onto feasibility. The authors are explicit that the projection enforces constraints without guaranteeing accuracy gains, and position the model as a verifiable substrate rather than a better forecaster.
Requires retraining. Adopting either means changing the training objective, not adding a module.
The failure mode JEPA-style objectives are built to avoid, and where the theory is currently moving fastest.
- A Minimal Model of Representation Collapse: Frustration, Stop-Gradient, and Dynamics π β arXiv:2604.09979 (Yao, Li, Liu, 2026-04)
- Rectified LpJEPA: Joint-Embedding Predictive Architectures with Sparse and Maximum-Entropy Representations π β arXiv:2602.01456 (Kuang, Dagade, Rudner, Balestriero, LeCun; ICML 2026)
- Gaussian Joint Embeddings For Self-Supervised Representation Learning π β arXiv:2603.26799 (Huang, 2026-03)
- SimSiam π β arXiv:2011.10566, the reference point for why stop-gradient alone prevents collapse.
Barely populated, and the V-JEPA 2 camera limitation lands squarely in it. If a model must infer the action coordinate frame from pixels, then identifiability of that frame is a precondition for the world model being correct at all β and the authors report it is not always well defined.
Open: what conditions on the observation make the action frame identifiable, and can the map be estimated at test time rather than assumed.
It does not rank methods, and it does not claim any of these directions will work. Several of the entries above are marked π precisely because the honest thing to say is "the abstract claims this and I have not verified it."
If you are looking for a starting point: the limitations sections are where the open problems already are, written down by the people who know the method best. That is the whole idea behind this file.
Corrections are welcome, especially:
- a limitation stated by authors that is missing here;
- an entry marked π that you have read in full β send the section number;
- a repository whose status has changed.
Please cite the section or page. Claims sourced from an abstract will be marked π, whoever submits them.
A correction that removes a wrong claim is the most useful thing you can send. One
example of what that looks like: this file previously carried arXiv:2608.0868 for
SD-GWM, which is one digit short and resolves to nothing β the real id is
2608.08689. Every arXiv id here has since been re-checked with
scholarcheck and all ten resolve to
the record they claim.
Written while trying to get papers out, so they tend to be useful at the same points in that process:
- scholarcheck β verify that a citation actually exists, and audit a whole .bib in CI
- docxaudit β find what your converter silently dropped from a .docx
- sciglyph β draw publication figures as code, in pure matplotlib
- kakeya-conjecture-lab β an interactive lab for the Kakeya conjecture, with a box-counting meter
CC BY 4.0 β reuse with attribution.






