LibreMetaverse 3.2.0

Prefix Reserved
dotnet add package LibreMetaverse --version 3.2.0
                    
NuGet\Install-Package LibreMetaverse -Version 3.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LibreMetaverse" Version="3.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LibreMetaverse" Version="3.2.0" />
                    
Directory.Packages.props
<PackageReference Include="LibreMetaverse" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LibreMetaverse --version 3.2.0
                    
#r "nuget: LibreMetaverse, 3.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LibreMetaverse@3.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LibreMetaverse&version=3.2.0
                    
Install as a Cake Addin
#tool nuget:?package=LibreMetaverse&version=3.2.0
                    
Install as a Cake Tool
▗▖   ▄ ▗▖    ▄▄▄ ▗▞▀▚▖▗▖  ▗▖▗▞▀▚▖   ■  ▗▞▀▜▌▄   ▄ ▗▞▀▚▖ ▄▄▄ ▄▄▄ ▗▞▀▚▖
▐▌   ▄ ▐▌   █    ▐▛▀▀▘▐▛▚▞▜▌▐▛▀▀▘▗▄▟▙▄▖▝▚▄▟▌█   █ ▐▛▀▀▘█   ▀▄▄  ▐▛▀▀▘
▐▌   █ ▐▛▀▚▖█    ▝▚▄▄▖▐▌  ▐▌▝▚▄▄▖  ▐▌        ▀▄▀  ▝▚▄▄▖█   ▄▄▄▀ ▝▚▄▄▖
▐▙▄▄▖█ ▐▙▄▞▘          ▐▌  ▐▌       ▐▌                                
                                   ▐▌                                

LibreMetaverse

A .NET client library for Second Life and OpenSimulator (and compatible worlds). Log in as an avatar, look around, move, chat, build, trade, and manage inventory, groups and land, with an asynchronous API, events for everything the simulator tells you, and Microsoft.Extensions logging and dependency injection throughout. It is a fork of libOpenMetaverse, which came from libSecondLife, kept current with the grids it talks to.

  Archiving · Utilities · Voice.Vivox · Voice.WebRTC
      │  built on the client
 [LibreMetaverse]  the client: login, managers, inventory
      │
  Transport        UDP socket, reliable circuit, throttle
      │
  Protocol         packets and capability messages
      │
  Assets           the offline data model
      ├── ModelFormats · Rendering.MeshFoundry · Rendering.Simple
      │
  StructuredData · Imaging.Abstractions
      │
  Types            UUID, vectors, quaternions, colors

  on their own: PrimMesher · Imaging.Skia · RLV · LslTools

A name in brackets is this package. Packages use the ones beneath them; the Depends on section below is exact.

Getting started

using LibreMetaverse;

var client = new GridClient();
client.Self.IM += (sender, e) => Console.WriteLine($"{e.IM.FromAgentName}: {e.IM.Message}");

var login = client.Network.DefaultLoginParams("First", "Last", "password", "MyApp", "1.0.0");
using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(30));

if (!await client.Network.LoginAsync(login, timeout.Token))
{
    Console.WriteLine($"Login failed: {client.Network.LoginMessage}");
    return;
}

Console.WriteLine($"In {client.Network.CurrentSim?.Name} at {client.Self.SimPosition}");
client.Network.Logout();

With dependency injection, services.AddGridClient(settings => settings.Logging.LogResends = false) registers the client as a singleton, and as IGridClient for testing.

What the client gives you

GridClient is the front door. Everything hangs off it:

Property Does
Network login, logout, the circuit to each simulator
Self your own avatar: position, movement, teleports, chat, instant messages, animations, money, mutes
Avatars other avatars: names, profiles, picks, classifieds, interests
Objects prims in view: updates, selection, editing, rezzing, materials, media
Inventory folders and items, uploads of textures, meshes and materials
Assets downloading and uploading assets, with a cache
Appearance what the avatar wears, baking, outfits
Parcels, Grid, Terrain land, the world map and regions, the heightfield
Groups, Friends, Directory groups and their rosters, the friends list, search
Sound, Environment, Animesh, Marketplace, InterestList sound triggers, sky and water settings, animated meshes, merchant tools, which object updates the simulator sends

Calls that go out and come back are async and take a CancellationToken. What the simulator pushes arrives as events on the manager it concerns. client.Settings holds the timing, connection, packet, texture-pipeline, asset-cache, security and logging options.

The packages around it

The client is the top of a stack of smaller packages, and it brings the lower ones with it: LibreMetaverse.Types, StructuredData, Imaging.Abstractions, Assets, Protocol and Transport. Their types are still in the LibreMetaverse namespace and are forwarded from this assembly, so code written against 3.1 keeps working. You can also reference a lower package on its own when you do not need a login.

Separate packages, not pulled in automatically:

Package For
LibreMetaverse.ModelFormats loading Collada, glTF and OBJ models for upload; exporting meshes
LibreMetaverse.Archiving reading and writing OpenSim region archives (OAR)
LibreMetaverse.Utilities persistent login, staying in a region, typed-out chat
LibreMetaverse.Voice.WebRTC, LibreMetaverse.Voice.Vivox voice chat
LibreMetaverse.RLV RestrainedLove command handling
LibreMetaverse.Rendering.MeshFoundry, .Simple, LibreMetaverse.PrimMesher turning prims, sculpts and meshes into geometry
LibreMetaverse.Imaging.Skia an image codec for PNG, JPEG and BMP

Examples

The repository has small, complete programs: SimpleBot (answers instant messages), PrimInspector (looks at the objects around it) and InventoryExplorer (browses and exports inventory).

Depends on

.NET Standard 2.1, .NET Framework 4.8.1, and .NET 8, 9 and 10. Besides the LibreMetaverse packages it uses Microsoft.Extensions.Logging and DependencyInjection.Abstractions, MessagePack, CoreJ2K and a handful of System.* backports.

Install

dotnet add package LibreMetaverse

Upgrading from 3.1? Types that moved to the lower packages are forwarded, so most code only needs a rebuild; the migration guide lists the few members that changed.

More

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
.NET Framework net481 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (7)

Showing the top 5 NuGet packages that depend on LibreMetaverse:

Package Downloads
LibreMetaverse.Rendering.Meshmerizer

Advanced mesh rendering library for LibreMetaverse that uses the Meshmerizer engine to generate renderable geometry from Second Life prims, sculpts, and mesh assets.

LibreMetaverse.Utilities

Helpers on top of the LibreMetaverse client for bots and unattended agents: a persistent login that retries through grid outages, a monitor that keeps an avatar in a region, and typed-out chat with the typing animation.

LibreMetaverse.GUI

GUI library for LibreMetaverse

LibreMetaverse.Voice.Vivox

Vivox voice chat integration library for LibreMetaverse, enabling connection and communication with the Vivox voice service used by Second Life and other virtual worlds.

LibreMetaverse.Voice

Library interface for Vivox voice client

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.2.0 97 10/13/2026
3.1.8 452 10/6/2026
3.1.7 314 10/4/2026
3.1.6 3,295 9/14/2026
3.1.5 1,065 9/3/2026
3.1.4 385 8/26/2026
3.1.3 2,051 7/24/2026
3.1.2 390 7/21/2026
3.1.1 537 7/14/2026
3.1.0 580 7/11/2026
3.0.4 438 7/9/2026
3.0.3 545 7/3/2026
3.0.2 377 6/29/2026
3.0.1 374 6/27/2026
3.0.0 600 6/23/2026
2.6.10 668 6/20/2026
2.6.9 520 6/8/2026
2.6.8 421 6/7/2026
2.6.7 655 5/14/2026
2.6.6 713 4/12/2026
Loading failed