# DreamerV3: JAX gets installed twice with conflicting pins, and the log directory is the checkpoint

> DreamerV3 is a reimplementation of a world-model reinforcement learner that runs on a fixed set of hyperparameters, and the repository is unusually good at documenting its own failure modes. The deployment files are where the detail sits: one JAX version is installed and then immediately pinned to another, the 3D lab environment is fetched by piping an unpinned script into a shell, and resuming a stopped run means pointing at the same log directory, which is also the documented cause of its most common error.

**danijar/dreamerv3** — Mastering Diverse Domains through World Models

- Repository: https://github.com/danijar/dreamerv3
- Website: https://danijar.com/dreamerv3
- Stars: 3,845 · Forks: 620
- Language: Python
- License: MIT
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/danijar-dreamerv3

## JAX is installed twice with conflicting pins

The container installs one JAX build, then installs the requirements file over the top of it, and the two disagree. The image layer names one version with one extra for the CUDA support, and the requirements file that is copied in afterwards pins a different version with a differently named CUDA extra. Because the later install is an exact pin, the final image ends up on the pinned version and the earlier install is wasted work rather than an upgrade. The manual path has the mirror-image problem: it tells you to install JAX first and then install the other dependencies from the same requirements file, so following it literally also performs two JAX installs. Nothing warns about this, and the requirements file is the only place the two versions appear side by side.

```sh
python dreamerv3/main.py \
  --logdir ~/logdir/dreamer/{timestamp} \
  --configs crafter \
  --run.train_ratio 32
```

## The lab environment arrives as an unpinned script piped into a shell

One of the simulated environments is installed by downloading a script from a personal gist and executing it directly, with no version or checksum in the image. The image does carry a four-line comment explaining why, and the comment is the most valuable text in the file. The install script builds that simulator with a build-system wrapper that resolves to the newest release of the build system, and the newest release removed a native rule the simulator's own source still uses, so the image pins the build system to a specific older release to keep the build working. In other words the version pin exists to paper over an upstream break, it is pinned by environment variable, and the script it guards is fetched over the network without a digest. Anyone rebuilding that environment in a year will be reproducing a chain whose middle link has no identity.

## A patched third-party wheel fixes the image to one Python and one architecture

The Minecraft-flavoured environment is not installed from a package index. The image installs a wheel by direct URL, named for a patched release of a version series, built for one Python minor version and one CPU architecture on Linux. That single line makes the container specific in two ways a reader would not otherwise expect: it will not run on Apple silicon, and it will not run on a Python other than the one it was built for, which is also why the image adds a third-party repository to install that Python version alongside the one its own base ships. The image also changes that package's ownership to a non-root user id, installs an old Java runtime for one of the physics simulators, sets the graphics backend for another, and installs a virtual framebuffer and an OpenGL development library. And the base is an NVIDIA driver image pinned to one driver build, so the whole container presumes a particular GPU stack.

## The log directory is both the checkpoint and the documented footgun

Resuming is implicit. The instruction for continuing a stopped run is to run the same command line again and make sure the log directory points to the same place, which means the output directory is the checkpoint store and there is no separate resume flag. That design produces the repository's most useful error entry. A specific message about too many leaves in a tree container means a checkpoint is being reloaded that does not match the current configuration, and the file says this often happens by accident when an old log directory is reused. The second entry is an admission about error reporting in general: if you get CUDA errors, the cause is often an error that happened earlier, such as running out of memory or incompatible framework and driver versions, and the suggested way to rule out memory is a batch size of one. Both entries tell a user which knob to turn, which is more than most repositories manage.

## The comparative claims carry no numbers

The performance section asserts four things and measures none of them in the file. The algorithm is said to master a wide range of domains with a fixed set of hyperparameters while outperforming specialised methods; removing the need for tuning is said to reduce the expert knowledge and computation required to apply reinforcement learning; favourable scaling properties are claimed on the grounds of robustness; and larger models are said to increase both final performance and data efficiency, with additional gradient steps increasing data efficiency further. There is no benchmark name, no score and no baseline table in the documentation. The tree does carry a baselines file and a scores directory, so the evidence exists somewhere, but a reader cannot check any of it from what is written. What the file does quantify is the mechanism: the world model encodes sensory inputs into categorical representations and predicts future representations and rewards given actions, and the policy is trained on imagined trajectories.

## The package is called dreamer at version 3.3.1 with no releases

The packaging metadata names the distribution after the algorithm family rather than the repository, at a specific patch version, while the hosting platform has no releases at all, so the only version number a user can find is the one in the setup script. Two smaller details sit beside it. The project URL is written without the encryption scheme in the usual short form. And the classifier list declares Python 3 generically while the documentation requires 3.11 or newer, so the metadata is looser than the actual floor. The dependency handling has a latent problem too: the setup script reads the requirements file line by line and drops blank lines, but does not strip comments, and that file contains a line with a trailing comment explaining why an array library is capped. The comment therefore travels into the install requirement list instead of being discarded.

## The citation says control tasks and the repository says domains

The repository title and the citation disagree on what was mastered. The title says diverse domains, while the citation entry, keyed to the first author and the year, gives a Nature article titled as diverse control tasks, with a page range of one to seven and the publisher named. The same section links a research paper that is not the journal article but an earlier preprint deposited two years before the publication year, so a reader following the paper link reads the 2023 version of work the citation attributes to 2025. The disclaimer is more careful than the citation: it states that the repository is a reimplementation based on the open source second-generation code base, that it is unrelated to the two companies that published the original work, and that the implementation was tested to reproduce the official results on a range of environments. It also says the code has been tested on Linux and Mac, with no other platform claimed.

## Conclusion

DreamerV3 fits someone reproducing published world-model results or applying the method across several domains without per-task tuning, and it is one of the few reinforcement learning repositories that documents its errors as carefully as its features. Four things to check before you plan a run. Build the container rather than installing by hand, because the environment stack includes a patched third-party wheel, a pinned build-system version for one simulator, and a graphics layer that the manual instructions do not mention. Expect the architecture and Python version to be fixed by that wheel rather than chosen by you. Point the log directory somewhere deliberate, since it doubles as the checkpoint and reusing an old one produces a cryptic error. And treat the performance claims as unquantified in this file: it asserts that fixed hyperparameters outperform specialised methods and that larger models help, but the numbers live in a baselines file and a scores directory rather than in the documentation.

## FAQ

### What is a reinforcement learning world model?

In this repository it is the first half of the algorithm: a model learned from experience that encodes sensory inputs into categorical representations and predicts future representations and rewards given actions. The second half is an actor-critic policy trained not on real interaction but on imagined trajectories the world model rolls out.

### how to use dreamerv3

The file's route is a requirements install followed by a training script taking a log directory, one or more config blocks and optional task flags, with a debug config block for fast iteration that it warns will not learn a good model. Results are then viewed through a separately installed tool on a local port, and scalar metrics are also written as JSON lines files.

### what is dreamer v3

A scalable, general reinforcement learning algorithm that masters a wide range of applications with one fixed set of hyperparameters rather than per-task tuning, which the file credits with reducing the expert knowledge and computation needed. This repository is a reimplementation based on the open source second-generation code base and states it is unrelated to the companies behind the original work.

## Sources

- [danijar/dreamerv3 on GitHub](https://github.com/danijar/dreamerv3)
- [Issues](https://github.com/danijar/dreamerv3/issues)
- [License: MIT](https://github.com/danijar/dreamerv3/blob/main/LICENSE)
- [Project website](https://danijar.com/dreamerv3)
- [README](https://github.com/danijar/dreamerv3/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/danijar-dreamerv3
