|
| 1 | +# Veles Plugin Catalog |
| 2 | + |
| 3 | +A rundown of the plugins that ship alongside Radegast Veles, for people |
| 4 | +deciding what to enable — not a coding guide. If you want to write your own |
| 5 | +plugin, see the [Plugin Creator's Guide](PluginCreatorsGuide.md) instead. |
| 6 | + |
| 7 | +All plugins are managed from **Plugins → Plugin Manager** in the main |
| 8 | +window. See the [Veles User Guide](VelesUserGuide.md#plugins) for how to |
| 9 | +install, enable, and configure plugins. |
| 10 | + |
| 11 | +> **Privacy note:** several bundled plugins relay nearby chat, group chat, |
| 12 | +> or IMs to a third-party service (Discord, IRC, email, or a chatbot |
| 13 | +> backend) once you configure and enable them. That means messages from |
| 14 | +> *other* people, not just you, leave the client — see each plugin's own |
| 15 | +> privacy note below before turning one on. |
| 16 | +
|
| 17 | +- [Demo Plugin](#demo-plugin) — reference example, safe to ignore |
| 18 | +- [Automation Plugin](#automation-plugin) — AutoSit, PseudoHome, LSL Helper, rule engine |
| 19 | +- [Discord Relay](#discord-relay) — bridges chat to a Discord channel |
| 20 | +- [IRC Relay](#irc-relay) — bridges chat to an IRC channel |
| 21 | +- [Email Digest](#email-digest) — batches chat/IMs into periodic emails |
| 22 | +- [Ollama Chatbot](#ollama-chatbot) — AI chat replies via a local (or remote) LLM |
| 23 | +- [Import/Export](#importexport) — save objects, animations, sounds, textures, wearables to disk and back |
| 24 | +- [Macros](#macros) — record and replay named sequences of in-world actions |
| 25 | + |
| 26 | +--- |
| 27 | + |
| 28 | +## Demo Plugin |
| 29 | + |
| 30 | +*Source: `plugins/Veles.Plugin.Demo/`* |
| 31 | + |
| 32 | +A minimal reference plugin — not intended for daily use, but harmless to |
| 33 | +leave enabled. It demonstrates the four basic plugin building blocks: |
| 34 | + |
| 35 | +- A `demo` chat command that echoes back whatever text you give it. |
| 36 | +- A **Demo: Say Hello** entry in the Plugins menu that posts a greeting to |
| 37 | + nearby chat and remembers the last time you used it. |
| 38 | +- A nearby-chat listener that pipes up if anyone (including you) says |
| 39 | + "demo plugin" in local chat. |
| 40 | +- A persisted setting (`last_greet`) showing plugin settings survive |
| 41 | + restarts. |
| 42 | + |
| 43 | +Safe to disable if you don't need a live example to poke at. |
| 44 | + |
| 45 | +--- |
| 46 | + |
| 47 | +## Automation Plugin |
| 48 | + |
| 49 | +*Source: `plugins/Veles.Plugin.Automation/`* |
| 50 | + |
| 51 | +Client-side behavior automation. It reimplements three features Legacy |
| 52 | +users may recognize, plus a general-purpose rule engine layered on top. |
| 53 | + |
| 54 | +### AutoSit |
| 55 | + |
| 56 | +Keeps you seated on a designated object. A background check runs every 10 |
| 57 | +seconds and force-sits your avatar back onto the configured target if |
| 58 | +you're found standing. |
| 59 | + |
| 60 | +``` |
| 61 | +autosit set <uuid> [name] set the target you should stay seated on |
| 62 | +autosit on / off enable or disable the watcher |
| 63 | +autosit status show current target and state |
| 64 | +``` |
| 65 | + |
| 66 | +### PseudoHome |
| 67 | + |
| 68 | +A fake "home" location with an automatic return. Every 5 seconds the |
| 69 | +plugin checks your position against a saved region + coordinates, and |
| 70 | +teleports you back if you've drifted beyond a configured tolerance. |
| 71 | + |
| 72 | +``` |
| 73 | +pseudohome set [tolerance] save your current position as home, with optional drift tolerance |
| 74 | +pseudohome on / off enable or disable auto-return |
| 75 | +pseudohome status show saved location, tolerance, and state |
| 76 | +``` |
| 77 | + |
| 78 | +### LSL Helper |
| 79 | + |
| 80 | +Lets an in-world script remote-control parts of the viewer by sending it |
| 81 | +instant messages. For safety, the plugin only accepts commands from |
| 82 | +avatar UUIDs you've explicitly allow-listed — a script owned by anyone |
| 83 | +else is ignored. |
| 84 | + |
| 85 | +``` |
| 86 | +lslhelper allow <uuid> permit an object owner to send commands |
| 87 | +lslhelper deny <uuid> revoke a previously allowed owner |
| 88 | +lslhelper on / off enable or disable the listener |
| 89 | +lslhelper status show allow-list and state |
| 90 | +``` |
| 91 | + |
| 92 | +Supported script-side commands (sent as an object IM): `send_im`, `say`, |
| 93 | +`give_inventory`. |
| 94 | + |
| 95 | +### Rule Engine |
| 96 | + |
| 97 | +A more general automation layer beyond the three features above: rules |
| 98 | +made of a **trigger** (proximity enter/leave, payment received, IM |
| 99 | +received) and an **action** (invite to group, send IM/chat, give |
| 100 | +inventory). Rules are managed from: |
| 101 | + |
| 102 | +- The `rule` chat command, or |
| 103 | +- The plugin's **Preferences** tab (added to both the main Preferences |
| 104 | + window and the plugin's own Settings window), which also supports |
| 105 | + importing/exporting your rule set as a file via the platform's native |
| 106 | + file picker. |
| 107 | + |
| 108 | +A `groupinviter` command is included as a quick shortcut for the common |
| 109 | +"invite this avatar to my group" rule action. |
| 110 | + |
| 111 | +> **Heads up:** AutoSit, PseudoHome, and the Rule Engine all act on your |
| 112 | +> avatar automatically in the background. Review what you've configured |
| 113 | +> before leaving a session unattended, especially LSL Helper's allow-list. |
| 114 | +
|
| 115 | +--- |
| 116 | + |
| 117 | +## Discord Relay |
| 118 | + |
| 119 | +*Source: `plugins/Veles.Plugin.Discord/`* |
| 120 | + |
| 121 | +A two-way bridge between one SL chat source — nearby chat, a group |
| 122 | +conference, or a direct IM with someone specific — and one Discord text |
| 123 | +channel. Messages sent in SL show up in Discord tagged with the sender's |
| 124 | +name; messages typed in Discord appear in SL prefixed `(discord) Name:`. |
| 125 | +Reconnects automatically (backing off from 5s up to 2 minutes) if the |
| 126 | +connection drops. |
| 127 | + |
| 128 | +``` |
| 129 | +discord connect start relaying (also a Plugins-menu item) |
| 130 | +discord disconnect stop relaying |
| 131 | +discord status show current relay target and connection state |
| 132 | +``` |
| 133 | + |
| 134 | +Configure it from **Preferences → Discord Relay**: a bot token, the target |
| 135 | +Discord channel's numeric ID, an optional webhook URL (so relayed messages |
| 136 | +show the sender's name instead of the bot's), and which SL chat target to |
| 137 | +relay. |
| 138 | + |
| 139 | +**You'll need:** a Discord bot token (create one in the Discord Developer |
| 140 | +Portal, invite it to your server, enable the message-content intent) and |
| 141 | +the channel ID you want to bridge to. |
| 142 | + |
| 143 | +> **Privacy:** while connected, everything said in the chosen SL chat |
| 144 | +> source — including messages from other residents, not just you — is |
| 145 | +> sent to Discord's servers (and to the webhook URL, if set). Treat the |
| 146 | +> bridged channel as public to anyone with Discord access to it. |
| 147 | +
|
| 148 | +--- |
| 149 | + |
| 150 | +## IRC Relay |
| 151 | + |
| 152 | +*Source: `plugins/Veles.Plugin.IRC/`* |
| 153 | + |
| 154 | +The same two-way bridge idea as Discord Relay, but for a single IRC |
| 155 | +channel, using a built-in TLS + SASL-capable IRC client. |
| 156 | + |
| 157 | +``` |
| 158 | +irc connect start relaying (also a Plugins-menu item) |
| 159 | +irc disconnect stop relaying |
| 160 | +irc status show current relay target and connection state |
| 161 | +``` |
| 162 | + |
| 163 | +Configure it from **Preferences → IRC Relay**: server address and port |
| 164 | +(defaults to `irc.libera.chat:6697`), TLS toggle, nickname, channel, and |
| 165 | +optional SASL login/password for networks that require authentication — |
| 166 | +plus the same SL chat-source picker as Discord Relay. |
| 167 | + |
| 168 | +> **Privacy:** as with Discord Relay, chat/IM content from anyone in the |
| 169 | +> chosen SL source is sent to the IRC network while connected, and IRC |
| 170 | +> channels are commonly logged by others without your knowledge. |
| 171 | +
|
| 172 | +--- |
| 173 | + |
| 174 | +## Email Digest |
| 175 | + |
| 176 | +*Source: `plugins/Veles.Plugin.Email/`* |
| 177 | + |
| 178 | +Batches nearby chat, group chat, and IMs, then emails you a digest on a |
| 179 | +schedule instead of a live relay. Older messages are dropped once the |
| 180 | +batch hits a configured size cap; failed sends are retried. |
| 181 | + |
| 182 | +``` |
| 183 | +email start begin batching/sending on the configured schedule |
| 184 | +email stop stop |
| 185 | +email sendnow flush the current batch immediately |
| 186 | +email status show schedule, batch size, and state |
| 187 | +``` |
| 188 | + |
| 189 | +Configure it from **Preferences → Email Digest**: SMTP host/port/TLS, |
| 190 | +SMTP username/password, From/To addresses, a subject line template |
| 191 | +(supports a `{date}` placeholder), how often to send, the max messages |
| 192 | +per digest, and which categories (nearby/IM/group) to include. |
| 193 | + |
| 194 | +**You'll need:** SMTP server details and credentials for an account you |
| 195 | +can send mail through. |
| 196 | + |
| 197 | +> **Privacy:** digested chat/IM content (again, from others as well as |
| 198 | +> you) is sent to your SMTP provider and lands in whatever inbox you |
| 199 | +> configured as the recipient. |
| 200 | +
|
| 201 | +--- |
| 202 | + |
| 203 | +## Ollama Chatbot |
| 204 | + |
| 205 | +*Source: `plugins/Veles.Plugin.OllamaChat/`* |
| 206 | + |
| 207 | +An AI chatbot that replies to nearby chat and/or IMs using a locally |
| 208 | +running [Ollama](https://ollama.com/) server (Llama 3, Mistral, Phi-3, |
| 209 | +etc.). Keeps a short rolling conversation history per user, and can be |
| 210 | +scoped to only reply within a chat distance range, only when your name is |
| 211 | +mentioned, or only to certain message types. |
| 212 | + |
| 213 | +``` |
| 214 | +ollama on|off enable or disable replies (also a menu toggle) |
| 215 | +ollama status show current state and settings |
| 216 | +ollama clear [user] clear conversation history (optionally for one user) |
| 217 | +ollama model <name> switch the model in use |
| 218 | +ollama models list models installed on the Ollama server |
| 219 | +ollama prompt <text> set the system prompt |
| 220 | +``` |
| 221 | + |
| 222 | +Configure it from **Preferences → Ollama Chatbot**: which message types |
| 223 | +trigger a reply, response range, the Ollama Base URL and model, max |
| 224 | +tokens, and the system prompt (with a button to fetch installed models). |
| 225 | + |
| 226 | +**You'll need:** Ollama installed and running somewhere reachable at the |
| 227 | +configured Base URL — by default `http://localhost:11434` (your own |
| 228 | +machine), no API key required. |
| 229 | + |
| 230 | +> **Privacy:** if you leave the Base URL at its local default, chat |
| 231 | +> content never leaves your computer. If you point it at a *remote* |
| 232 | +> Ollama server instead, chat/IM content (including from other residents) |
| 233 | +> is sent to that server. |
| 234 | +
|
| 235 | +--- |
| 236 | + |
| 237 | +## Import/Export |
| 238 | + |
| 239 | +*Source: `plugins/Veles.Plugin.ImportExport/`* |
| 240 | + |
| 241 | +A local content toolkit — no external service involved. Despite the name, |
| 242 | +it covers more than linksets: |
| 243 | + |
| 244 | +- **Objects**: export a linkset (with its textures) to a `.vobj` file and |
| 245 | + re-import it in-world later. Export is only allowed for objects you own |
| 246 | + and created (or, on OpenSim-style grids, own with full permissions) — |
| 247 | + it can't be used to copy no-copy content that isn't yours. |
| 248 | +- **Animations**: export to BVH. |
| 249 | +- **Scripts & notecards**: export/import as `.lsl`/`.txt` files. |
| 250 | +- **Wearables**: export/import shape, skin, hair, eyes, clothing, and |
| 251 | + physics as `.llw` files (type is auto-detected on import). |
| 252 | +- **Textures**: export to PNG/JPG/WebP/BMP/TGA, or as raw JPEG2000. |
| 253 | +- **Sounds**: export to OGG or decoded WAV. |
| 254 | + |
| 255 | +``` |
| 256 | +export <localID> [path] export a linkset by its in-world local ID |
| 257 | +import <path> [x y z] import a .vobj, reusing original texture UUIDs |
| 258 | +importtex <path> [x y z] import a .vobj, re-uploading textures instead |
| 259 | +exportanim <assetUUID> [path] export an animation to BVH |
| 260 | +exportscript / importscript <path> export/import a script |
| 261 | +exportnote / importnote <path> export/import a notecard |
| 262 | +exportshape / importshape export/import a shape |
| 263 | +exportphysics / importphysics export/import a physics profile |
| 264 | +exportwearable <type> [uuid] [path] export a wearable by type |
| 265 | +importwearable <path> [name] import and wear a saved wearable |
| 266 | +exporttex <assetUUID> [path] export a texture |
| 267 | +exportsound <assetUUID> [path] export a sound |
| 268 | +``` |
| 269 | + |
| 270 | +Every command has a matching Plugins-menu entry and a file-picker flow — |
| 271 | +you don't need to remember the chat syntax. Files land in |
| 272 | +`~/VelesExports/` by default. |
| 273 | + |
| 274 | +> No settings/preferences tab and no credentials needed — this one's |
| 275 | +> entirely local file I/O plus normal asset requests to the grid you're |
| 276 | +> logged into. |
| 277 | +
|
| 278 | +--- |
| 279 | + |
| 280 | +## Macros |
| 281 | + |
| 282 | +*Source: `plugins/Veles.Plugin.Macros/`* |
| 283 | + |
| 284 | +Record named sequences of actions and replay them on demand: Say (with |
| 285 | +channel/volume), Emote, Wait, IM, Stand, Sit (on a specific object), Play |
| 286 | +Gesture, or run any other chat command as a step. Only one macro plays at |
| 287 | +a time — starting another cancels the current one. |
| 288 | + |
| 289 | +``` |
| 290 | +macro list show your saved macros |
| 291 | +macro run <name-or-id> play a macro back (matches by name, then ID, then partial name) |
| 292 | +macro stop cancel the currently running macro |
| 293 | +``` |
| 294 | + |
| 295 | +A full GUI editor is available from **Preferences → Macros** or the |
| 296 | +**Plugins → Macros…** menu item, for building and editing macros without |
| 297 | +touching chat commands. Macros are saved per-avatar and can be imported |
| 298 | +or exported as JSON files. |
| 299 | + |
| 300 | +> **Heads up:** macro files are plain JSON and portable — if you import |
| 301 | +> one someone else made, check what it does first, since a step could |
| 302 | +> reference IMs, UUIDs, or targets you didn't intend to send. |
| 303 | +
|
| 304 | +> No external service or credentials involved — everything stays local. |
0 commit comments