<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://osimdev.org/wiki/index.php?action=history&amp;feed=atom&amp;title=OpenSimulator_Internals%2FROBUST_Services</id>
	<title>OpenSimulator Internals/ROBUST Services - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://osimdev.org/wiki/index.php?action=history&amp;feed=atom&amp;title=OpenSimulator_Internals%2FROBUST_Services"/>
	<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/ROBUST_Services&amp;action=history"/>
	<updated>2026-08-04T14:45:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/ROBUST_Services&amp;diff=6&amp;oldid=prev</id>
		<title>Jwbshaw: first</title>
		<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/ROBUST_Services&amp;diff=6&amp;oldid=prev"/>
		<updated>2026-06-21T06:24:18Z</updated>

		<summary type="html">&lt;p&gt;first&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= OpenSimulator Internals/ROBUST Services =&lt;br /&gt;
&lt;br /&gt;
All service interfaces are in OpenSim.Services.Interfaces.&lt;br /&gt;
&lt;br /&gt;
ROBUST services fall into two categories: those that must run in the same process instance, and those that can be split across machines and load-balanced.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Must Stay in Same Instance ==&lt;br /&gt;
&lt;br /&gt;
These services share state and have dependencies on each other. Running them in separate instances will cause data conflicts.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Service !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/PresenceService|PresenceService]] || Who is online, which region, current session. Maintains a cache. Multiple instances would give conflicting answers.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/UserAgentService|UserAgentService]] || Manages the user agent when traveling via HyperGrid. Handles trust verification between grids.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/AgentPreferencesService|AgentPreferencesService]] || Per-user preferences such as hover height and language setting.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/GridUserService|GridUserService]] || Home region, last login location, online status. Must update atomically with PresenceService on login and logout.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Can Be Split and Load-Balanced ==&lt;br /&gt;
&lt;br /&gt;
These services are stateless and can run on separate machines behind a load balancer such as nginx.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Service !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/AssetService|AssetService]] || Stores and serves asset blobs (textures, meshes, scripts, notecards, etc.). Intentionally dumb -- no referential awareness. Two storage backends: database blob (default) or FSAssets (recommended above 50GB).&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/InventoryService|InventoryService]] || User inventory. Folder tree and item references. Permissions live here, not in the asset table.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/GridService|GridService]] || Region map. Handles region registration on startup and deregistration on shutdown. Answers queries for region location and coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/UserAccountService|UserAccountService]] || User account storage. Name, email, user level, flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/AuthenticationService|AuthenticationService]] || Login authentication. Core implementations are password and webkey.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/GroupsService|GroupsService]] || Groups. Core groups service is not enabled by default. External XmlRpc/Flotsam groups service is the common alternative.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Additional Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Service !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/AvatarService|AvatarService]] || Avatar appearance, height, attached items.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/AuthorizationService|AuthorizationService]] || Always returns authorized. No database, no configuration, no logic. A stub. Actual access control (ban lists, parcel restrictions, estate settings) is handled in region code, not here.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/FriendsService|FriendsService]] || Friends list, friendship requests, permissions granted to friends.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/MapImageService|MapImageService]] || Stores and serves map tile images. Stored on filesystem, not in the database.&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSimulator Internals/LoginService|LoginService]] || Handles user login. Implements the LL login protocol.&lt;br /&gt;
|-&lt;br /&gt;
| HyperGrid services || Override normal services (asset, inventory, etc.) with HyperGrid-specific functionality.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Simulator Services ==&lt;br /&gt;
&lt;br /&gt;
These run per-simulator rather than on ROBUST. See [[OpenSimulator Internals/Data Dictionaries#Simulator_Services|Simulator Services]] for interface details.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Service !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Land || Parcel data for a specific simulator. Read only.&lt;br /&gt;
|-&lt;br /&gt;
| Library || Library items and folders. Currently per-region, should be a grid service. Data from filesystem.&lt;br /&gt;
|-&lt;br /&gt;
| Simulation || General simulation functions: create agent, update agent, create object. Used for login-to-simulator and simulator-to-simulator communication (teleport, region crossing, moving objects between regions).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[OpenSimulator Internals/Data Dictionaries]]&lt;br /&gt;
* [[OpenSimulator Internals/Connector Architecture]]&lt;/div&gt;</summary>
		<author><name>Jwbshaw</name></author>
	</entry>
</feed>