The Uru client, in your browser
OpenAges runs the client of Myst Online: Uru Live in a web browser. It is H-uru's Plasma, the GPLv3-licensed CyanWorlds.com Engine, with a port of its client to the browser: the engine compiled to WebAssembly with Emscripten and drawn with WebGPU.
There is nothing to install: you open a page, log in to your shard and play.
How it works
-
The same client
The browser client is the native client's code. It runs the same engine, the game's own Python scripts, the same PhysX, and reads the same game files and speaks the same protocols to the same shards. The port adds what a browser needs: start-up, the frame loop, the display, the login dialog, input, sound and browser storage, and a WebGPU renderer. The client comes in two flavours, which differ only in the Python interpreter that runs the game's scripts: Python 3 for shards that serve H-uru's scripts, and Python 2.3 for the original scripts of Myst Online: Uru Live again (MOULa).
-
Game files come from your shard
Like the native client, the browser client logs in to a shard, downloads the game's files, scripts included, from the shard's own file server with the game's original patcher, and keeps them in the browser's storage. The game's Ages, textures and sounds are not on this site, in the source code or in a deployment.
-
A small gateway for the connections
The engine's sockets run over WebSockets, and a gateway relays them to the shard's TCP ports, which a browser cannot open itself. It forwards only to the shard's own servers.
-
The native client is the reference
The Ages are handcrafted, so any visible difference from the native client is a bug to fix. At fixed camera poses, the browser's frame is compared pixel by pixel with the native client's in the same game state, and the Ages are played in the browser, online, with each milestone read back from the shard after a fresh login.
-
How it was written
The browser port, the code OpenAges adds to H-uru Plasma, was written with AI coding assistants (Claude and Codex). The native C++ client is its specification: the port follows the engine's own code paths, and a difference from the native client counts as a bug. The work is checked against measured results, not by reading alone: the native and browser builds, the web tests, the picture comparisons with the native client, frame-rate and memory runs, and the journeys below, played in the browser and, where that was needed, in the native client too. The status section lists what those checks cover and what they do not.
Status
OpenAges is in testing. Everything here was measured up to version 0.1, on one Apple-silicon Mac running macOS, on test shards running Dirtsand.
Ages and journeys
Played in Chrome in October 2026, online, with the Python 3 client driven by scripted mouse and keyboard input. Each milestone was read back from the shard after a fresh login.
- To the end: a new explorer through the Cleft to Relto, Gahreesen, Teledahn, Kadish Tolesa, Eder Gira and Eder Kemo, Ahnonay, and Minkata and Jalak Dador.
- The Path of the Shell: the four poles, the fissure, the Cleft's final vision, K'veer and the Myst library.
- Phil's Relto, reached through the Spyroom: its journals, blinds, vest and calendar star.
- In part: Er'cana, the Neighborhood, the Great Zero, the City and the Nexus, and the four Pods; the status page says which parts, and why. The Descent has not been reached.
- Also: the KI, two players together (with a native client and with a second browser), and the game's graphics settings, kept across a reload.
The Python 2.3 client was played on a test shard that serves MOULa's own game code: login, a new explorer, Relto, the Neighborhood, links to Teledahn and Eder Gira, the KI, and the minigames (Heek with two players, the KI marker quest, Blue Spiral and Ahnonay's Quabs).
Compared with the native client
The frames are not identical yet. At six fixed camera poses, from 0.6 % (Er'cana) to 31.5 % (Relto) of the pixels differ from the native client's by more than 16 of 255. On the measured route (Relto and Eder Gira, an 800 by 600 view, a 60 Hz display), the client draws a median of 60 frames per second, and the browser's processes for the page peak at about 2.3 GiB.
Not working, or not known yet: Firefox and Safari are not part of the regular checks, mouse capture (pointer lock) has not been verified in any browser, and the Descent and the parts of the Ages that the test shards' state closed are untested. The status page has the full list and every measurement: the differences per camera pose, the frame rate and memory, and the gaps.
What you will need
A desktop or laptop with a keyboard and mouse, and a browser with WebGPU. Chrome (Chromium 156) is tested in every check. Firefox 157 and Safari 27 were each tested once, in October 2026: start-up, an online session in Relto and Eder Gira, sound and input work. Windows, Linux, phones and tablets have not been tested. Before it loads the client, the page checks that the browser has cross-origin isolation, JavaScript Promise Integration, WebGPU and canvas transfer to a worker, and lists what is missing.
Before it opens to the public, shard operators have to agree to browser players connecting through the gateway, and the public gateway has to be in place.
Source code
OpenAges is free software under the GNU General Public License, version 3, with the additional permissions in COPYING.txt, as H-uru Plasma is. Its source, build scripts and tests are public.
- Licence and additional permissions
- Third-party notices and credits
- Releases, each with the third-party sources it was built from
- Report a problem with the browser client