Skip to the content.

D/s Collar

D/s Collar is a modular, script-driven D/s collar system for Second Life.
It provides a modern, lightweight, and extensible framework for collars, emphasizing security, modularity, and performance.

This project replaces the old monolithic collars with a clean kernel + plugin architecture, using JSON messaging and strict ABI conventions.


✨ Features


📂 Project Structure

ds_collar_modular/
├── LICENSE
├── README.md
├── agents.md                    # LSL coding requirements & best practices
└── src/stable/
    ├── ds_collar_kernel.lsl                  # Core kernel (v1.0)
    ├── ds_collar_control_hud.lsl             # External HUD controller
    ├── ds_collar_leash_holder.lsl            # Leash holder object
    │
    ├── Kernel Modules (kmod_*)
    │   ├── ds_collar_kmod_auth.lsl           # ACL and policy engine
    │   ├── ds_collar_kmod_bootstrap.lsl      # Startup coordination, RLV detection
    │   ├── ds_collar_kmod_dialogs.lsl        # Centralized dialog management
    │   ├── ds_collar_kmod_leash.lsl          # Leashing engine services
    │   ├── ds_collar_kmod_particles.lsl      # Visual renderer + Lockmeister
    │   ├── ds_collar_kmod_remote.lsl         # External HUD bridge
    │   ├── ds_collar_kmod_settings.lsl       # Persistent key-value store
    │   └── ds_collar_kmod_ui.lsl             # Root touch menu
    │
    └── Plugins (plugin_*)
        ├── ds_collar_plugin_animate.lsl      # Animation menu
        ├── ds_collar_plugin_bell.lsl         # Bell controls
        ├── ds_collar_plugin_blacklist.lsl    # Blacklist management
        ├── ds_collar_plugin_leash.lsl        # Leash UI and config
        ├── ds_collar_plugin_lock.lsl         # Lock/unlock toggle
        ├── ds_collar_plugin_maintenance.lsl  # Maintenance utilities
        ├── ds_collar_plugin_owner.lsl        # Owner/trustee management
        ├── ds_collar_plugin_public.lsl       # Public access toggle
        ├── ds_collar_plugin_rlvexceptions.lsl # RLV exception management
        ├── ds_collar_plugin_rlvrelay.lsl     # RLV relay modes
        ├── ds_collar_plugin_rlvrestrict.lsl  # RLV restriction management
        ├── ds_collar_plugin_status.lsl       # Status information display
        └── ds_collar_plugin_tpe.lsl          # Total Power Exchange mode

🏗️ Architecture & ISP

Consolidated ISP v1.0

The system uses a 5-channel architecture for all inter-script communication:

Channel Name Purpose
500 KERNEL_LIFECYCLE Plugin registration, heartbeat (ping/pong), soft resets
700 AUTH_BUS ACL queries and results
800 SETTINGS_BUS Settings sync, delta updates, notecard loading
900 UI_BUS UI navigation (start, return, close)
950 DIALOG_BUS Centralized dialog management

ACL Levels

Level Name Description
-1 Blacklisted Explicitly denied access
0 No Access Default for unknown users, wearer in TPE mode
1 Public Any user (when public mode enabled)
2 Owned Wearer (when owner is set)
3 Trustee Trusted users with elevated permissions
4 Unowned Wearer (when no owner is set)
5 Primary Owner Full administrative control

Security Features (v1.0)


🚀 Installation & Setup

  1. Rez a prim in Second Life.
  2. Drop ds_collar_kernel.lsl and all 8 kernel modules (ds_collar_kmod_*.lsl) into it.
  3. Add the plugins you want to use (all 13 recommended for full functionality).
  4. (Optional) Add a “settings” notecard for pre-configured owners/trustees.
  5. Wear the prim as a collar.
  6. On reset, the collar will:
    • Bootstrap and detect RLV capability
    • Load settings from notecard (if present)
    • Register all plugins with the kernel
    • Open the UI menu on touch

Note: All scripts are in src/stable/ directory. The HUD and leash holder are separate objects.


📚 Documentation


🔧 Contributing

  1. Fork the repo.
  2. Read agents.md thoroughly — it contains all LSL quirks, coding standards, versioning rules, and the review checklist.
  3. Work from the authoritative baselines (kernel, modules, plugin skeleton).
  4. Ensure your scripts compile in Second Life.
  5. Use the Code Review Checklist in agents.md before submitting.
  6. Apply appropriate version numbers according to the Versioning Specification in agents.md.
  7. Submit a pull request with a clear description of your changes.

📜 License

GPL v3 License – see LICENSE for details.