So this answers the question about 'client side scripting library' -- Tundra is used both for servers and clients, and has largely the same API for C++ and JS, so there is no separate client side scripting library but also client side scripts are made with the normal Tundra API. And that is the same open source thing that's used both in open source realXtend and in Meshmoon.
About browser-based client, WebNaali/Tundra/Rocket: there's also an open source version, largely equivalent to Admino's closed version. Both use Three.js for rendering and the Tundra EC model (like the earlier WebNaali implementation did but with GLGE) so include implementations of ECs such as Mesh and Placeable etc. in JS with the Three API. A main difference is that Chiru's work focused more on client side scene handling whereas Admino has an optimised network protocol, idea was to focus a bit differently to avoid some of the overlapping work in the hope of joining the efforts in a common codebase soon enough. We are in last stages of negotiating about substantial funding for webgl+websocket client dev, if that project really begins we can hopefully get this sorted out.
Anyhow the current open source webgl+websocket client, and there's an open source version of the websocket server counter part too (using the same c++ server lib as Admino uses), by Toni Dahl is at
https://github.com/K1ll3rF0x/Chiru-WebClient/ .
Finally a note about limiting script access: as said, currently the default idea is that any script can do anything in the scene. Tundra is not made / configured now for federated worlds where some common environment could host scripts by different parties so that those scripts would be somehow limited to a single object only. Instead, it is made so that normal game and other application development is easy: for example a full game can be one script as it can create and control any number of objects in any way. It makes dev much easier than the SL/Opensim (and possibly Sirikata) way of requiring a separate script for every object and being able to only send messages between the objects to orchestrate a full-scene application. If you are familiar with Opensim region modules, those -- not LSL scripts -- are API-wise similar to Tundra scripts.
However when I originally started making JS support in Tundra (called Naali then as was client only), it was first experimentally in a similar restricted context as SL and Sirikata scripts: it could access only the object it was attached in (actually only a selected set of components in the object then). It is simple to configure the script context, what objects / APIs are available to them. So if someone requires such a limited script context i think it is still doable, possibly quite easy even depending on how much of the core APIs should be exposed to those scripts vs. how much those APIs would leak access to other parts of the scene and app. For example only having the Frame API, but not Scene and Input etc., would allow a script to move/rotate etc. itself based on time, and it could register to handle mouse clicks on it etc. It could still halt the whole execution, though, I don't remember whether preventing that would be easy with the qtscript engine we are currently using.
Just for information if you or someone requires it -- I remember this has been in the talks around TOY sometimes as it might be useful in a school setting to be able to host scripted objects/apps from several students in a common space without needing to worry that some script, perhaps by accident, messes the whole scene.
~Toni