OpenSimulator is written in C# and is designed to be easily expanded through the use of plugin modules. OpenSimulator can operate in one of two modes: standalone or grid mode. In standalone mode, a single process handles the entire simulation. In grid mode, various aspects of the simulation are separated among multiple processes, which can exist on different machines. Standalone mode is simpler to configure, but is limited to a smaller number of users. Grid mode has the potential to scale as the number of users grows.
OpenSimulator utilizes loadable modules for most of its functionality. These loadable modules can be independently developed to add functionality to the server. The OpenSimulator Project is hosting a collection of these loadable modules on OpenSimulator GForge.
OpenSimulator currently uses the Second Life protocol for client to server communication, and is compliant with the Second Life viewer by Linden Lab as well as a range of other virtual worlds viewers being developed by the open-source community. Interoperability with Second Life protocols has been a design goal since 2007. OpenSim also uses an architecture known as "Hypergrid", which allows users to teleport between multiple OpenSim-based virtual worlds by providing a hyperlinked map which indexes public grids. This allows for public grids to retain teleportation links to each other without having to be on the same grid. There are several public grids available which usually require registration. Grids generally contribute to the project through testing and community participation. These budding multiverses normally contain user generated content and may be based around user contributed resources.