A mooR world is shared and persistent. People meet in it, play in it, and shape it: they create places and things, and program how those things behave, while the world is running and others are using it. Nothing is rebuilt or redeployed. A change takes effect as soon as it is made, and the world keeps everything between visits.

Connect to Timbran Hotel →

Our public world, running mooR 2.0 and the Cowbell core

Building Together

Many people can play, build and program at once without tripping over each other. Each action either happens completely or not at all, so one person's half-finished change never breaks what someone else is doing. The server uses every processor core of the machine it runs on.

Worlds can be textual or graphical. People connect through a friendly web interface or a classic MUD client, and other ways in are added as "hosts", which translate a network protocol for the world. mooR has even run as a Minecraft server.

The programs in a mooR world are written in MOO, a small language designed for this kind of world. It comes from LambdaMOO, one of the first online worlds built by its own users. mooR is a new server, written from scratch in Rust, that extends the language and can import existing LambdaMOO databases. It has been in development since 2022.

Built with mooR

  • Timbran Hotel: a public community world. Visit it to see mooR in use.
  • Cowbell: a starting world and object library for communities, with a web-native interface through the Meadow client. It ships with mooR.
  • A Minecraft server (prototype): ordinary Minecraft clients connect to a mooR world. The world, its players and the game rules live in MOO, and a "host" translates the Minecraft protocol. This is a private prototype, and its source is not published.
The Timbran Hotel lobby and Henri the cat, seen from a Minecraft client, with the room description in the chat
The same hotel lobby, and the same cat, from a Minecraft client

What mooR Gives You

For people building worlds and games

  • Live programming: objects, verbs and commands change while the world runs, with no restart
  • A web client (Meadow) with an in-world code editor, and support for classic MUD clients
  • Scheduled tasks, timed and recurring, that survive restarts
  • Workers that let MOO code reach outside the world over HTTP, Git and files, with wizard-controlled permissions
  • Fine-grained task permissions, so code can be given only the capabilities it needs

For programmers

  • MOO extended with UTF-8 strings, 64-bit integers, booleans, maps, symbols and binary values
  • Lexically scoped variables, list comprehensions, and lambdas with closures ({x, y} => x + y)
  • Worlds as source: export a world to text files that work with Git, and review and apply changes from inside the world
  • Native verbs: compiled code called from MOO through a C ABI
  • An HTTP and WebSocket API for building clients, with an OpenAPI description

For running a server

  • One moor process for small sites, or separate daemon and host processes on different machines
  • Every task is a transaction, with optimistic concurrency and snapshot isolation; conflicting tasks are retried
  • Metrics, and mootop to see live which verbs and tasks use the server's CPU
  • Imports LambdaMOO 1.8.x databases, and some ToastStunt databases

Project Status

mooR 2.0 is in code freeze on the v2.0-release branch, and a formal 2.0.0 release, with packages and container images, will follow in the coming weeks. New users should start there, and report bugs against it. Cowbell and Meadow work against it. Development after 2.0 happens on main.

The 1.0 series is no longer supported. 2.0 cannot open a 1.0 database directly, because the database format changed; export the world to objdef from 1.0, and import that into 2.0.

mooR is open source, under the GNU Affero General Public License v3.0, and available on GitHub. If you find value in it and would like to support its development, please consider sponsoring the project.