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.
Second Life, without the viewer
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
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
Where everything you do happens. Resolves its licence at launch and reports a heartbeat while it runs.
The only component that decides a licence question. Every caller proves itself with a signature; a request that cannot is refused without explanation.
The half of a purchase that happens inside Second Life. It tells the API what was bought, signed with its own product secret.
Every read and write goes through a stored procedure. The application account holds EXECUTE and nothing else: no table privilege at all.
Licensing
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.
One main avatar and one seat, permanently. No purchase, and nothing expires.
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.
A week, a month or a year of time on one seat. Suspended rather than lost while business time is running.
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.
| Free | Individual | Business | |
|---|---|---|---|
| Avatars you can control | One | One per seat, buy more seats | One per seat, buy more seats |
| Connect, auto reconnect, Master, authorized residents | Included | Included | Included |
| Profile, inventory, appearance, friends, groups, chat, map, radar | Included | Included | Included |
| Follow Me | Fixed half a metre | Distance and bearing you choose | Distance and bearing you choose |
| Money | Not included | Included | Included |
| World objects | Not included | Included | Included |
| Automation engine and embedded Python | Not included | Included | Included |
| AI controller and memory | Not included | Included | Included |
| AI services | None | Four cloud services | Four cloud, plus Ollama and LM Studio on your own machine |
| Shop knowledge for customers | Not included | Not included | Included |
| Formal Business personality | Not included | Not included | Included |
| Letting the AI answer every resident | Not included | Not included | Included |
| Recording patrol routes | None | One route per avatar | A hundred routes per avatar |
How it is built
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.
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.
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.