Second Life, without the viewer

Run your avatars, not a window farm.

A headless-first Second Life client, built for people who run more than one avatar.

Desktop application for Linux, Windows and macOS. One process, every avatar.

The idea

Three decisions everything else follows from

01

Headless first

There is no 3D view and nothing is rendered. What a viewer spends a graphics card on, NeuraCore spends on being able to hold a dozen sessions open at once on an ordinary machine.

02

Many avatars, one process

Every avatar is a session inside the same application, with its own window, its own inventory, its own chat. Switching between them is a click, not a login.

03

Scriptable to the bottom

Every capability the interface has is registered as an automation action and exposed to embedded Python and to the AI controller. Nothing the buttons can do is out of reach of a script.

Capabilities

What is actually in it

Sessions

Connect, reconnect and cascade whole groups of avatars, on Second Life or on an OpenSimulator grid. Each one reconnects by itself after a drop, answers a multifactor code when the grid asks for one, and says in its status line which licence it is running under.

Profile and notices

The public profile, picks, classifieds, notes and the worn shape, plus every notice the grid sends: invitations, payment notifications, permission questions and system messages, counted while they still need an answer.

Money

The Linden dollar balance and the full payment history, received and sent. Paying is switched off until you switch it on, which is the one default worth stating.

Inventory

Browse, search, create, move, copy, preview, share and delete. A date filter finds what arrived recently, and Fetch All loads everything when a search has to cover the lot.

Appearance and attachments

Wear and remove outfits, replace a whole look or add one on top, see what is attached and where, and edit the worn shape slider by slider when it is modifiable.

Chat, IM and groups

Local chat, instant messages and group sessions, kept apart per avatar with a count of what is unread, and relayed to your own avatar when you ask for it.

Map, radar and world

Teleport home, to a named region or to coordinates, answer teleport offers, see who is nearby and who has been seen before, and list the objects the region has sent.

Movement and following

Walk, fly, sit, teleport, and follow another avatar across regions, at the distance and bearing you choose, with the follower saying in plain words when it genuinely cannot reach them.

Patrol routes

Walk a route once yourself and the avatar walks it back on its own: forwards, in a loop, in reverse or in a random order, sitting where you sat and resuming after a disconnection.

Automation and Python

A registry of every action the client can take, one permission switch each, a history of every attempt with its result, and embedded Python to string them together. It is kept in step with the interface by a project rule, not by memory.

AI controller

Choose the provider, the model and the personality, decide who may talk to it, and watch each request, reply and chosen action arrive. What it remembers about itself and about each resident is yours to read, edit or erase.

Shop knowledge

Tell the avatar about your Second Life business and it answers customers from what you wrote rather than from guesswork, fetching only the part a question needs. It comes with a Business licence.

Architecture

How it fits together

The desktop client is the product. Everything else exists to answer one question about it, which licence it is running under, and to say so honestly when it cannot.

NeuraCore desktop In-world HUD Licensing API One database

NeuraCore desktop

Where everything you do happens. Resolves its licence at launch and reports a heartbeat while it runs.

Licensing API

The only component that decides a licence question. Every caller proves itself with a signature; a request that cannot is refused without explanation.

In-world HUD

The half of a purchase that happens inside Second Life. It tells the API what was bought, signed with its own product secret.

One database

Every read and write goes through a stored procedure. The application account holds EXECUTE and nothing else: no table privilege at all.

Licensing

Bought in world, resolved at launch

Licences are sold as Second Life HUDs on the marketplace. Wearing one and activating it credits your avatar; the client picks the change up the next time it checks.

Free

One main avatar and one seat, permanently. No purchase, and nothing expires.

Initial

The entry purchase, and the prerequisite for every timed licence. Grants six months individual or three months business, and you choose which in the HUD.

Individual

A week, a month or a year of time on one seat. Suspended rather than lost while business time is running.

Business

The same three durations at the business tier. Takes precedence on a seat, and puts individual time on hold until it runs out.

Time lives on a seat, not on a calendar: a licence that is on hold is not being spent.

What each running licence carries. The Initial Licence is not a column: it is the purchase that turns Free into one of the other two.

FreeIndividualBusiness
Avatars you can controlOneOne per seat, buy more seatsOne per seat, buy more seats
Connect, auto reconnect, Master, authorized residentsIncludedIncludedIncluded
Profile, inventory, appearance, friends, groups, chat, map, radarIncludedIncludedIncluded
Follow MeFixed half a metreDistance and bearing you chooseDistance and bearing you choose
MoneyNot includedIncludedIncluded
World objectsNot includedIncludedIncluded
Automation engine and embedded PythonNot includedIncludedIncluded
AI controller and memoryNot includedIncludedIncluded
AI servicesNoneFour cloud servicesFour cloud, plus Ollama and LM Studio on your own machine
Shop knowledge for customersNot includedNot includedIncluded
Formal Business personalityNot includedNot includedIncluded
Letting the AI answer every residentNot includedNot includedIncluded
Recording patrol routesNoneOne route per avatarA hundred routes per avatar

How it is built

The parts that are not features

No raw SQL, anywhere

Every database operation in the solution is a stored procedure called with bound parameters. The web applications authenticate as an account with EXECUTE grants and no table rights, so a total compromise of a PHP process can only call the procedures that already exist.

Nothing trusted by location

No component is trusted because of where its packets came from. Every request between parts of this solution proves itself with a shared secret, is bound to its own body and moment, and is accepted exactly once.

The record is small on purpose

Display names are not stored. Client telemetry expires by itself when a client stops reporting. What is kept is what a licence decision needs and the journal an incident would be investigated from.