Skip to content

Latest commit

 

History

80,995 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MikoStorm – Fast. Modern. Open Source

Going on vacation until August 29.

Download

MikoStorm is a fork of the Firestorm Viewer for Second Life. The client codebase has been open source since 2007 and is available under the LGPL license.

Mikostorm Startpage - Discord

This repository is not released by SecondLife or Firestorm!

MikoStorm aims to provide a viewer with many missing or unique features that enhance the Second Life experience. Anyone looking for a viewer with illegal features must look elsewhere — this is not the place for it.

This project is a one man show! So be patient

Builds

We develop on Linux because it offers a much better and much friendlier build environment. Compiling on Windows is a big hassle and needs many adjustments, so there will be fewer Windows builds than Linux builds. See Building on Windows and Building on Linux for details.

screen

Not on the TPV List.. why?

application in progress secondlife/third-party-viewers#12

Changelog

See CHANGELOG.md for the full release history. The current version is 1.16.36.

No 32Bit version

There is and never will be a 32bit version

Issues

You can post them here on github or send me a mail. Email is in my profile here on github.

Documentation

ADDITIONAL FEATURES

This viewer contains experimental features like

  • a slider for Animationspeed
  • Set individual IM sounds for your contacts
  • photogrammetry tool for our fellow 3D Scanners an 3D Printers (i.e. to use with 3DF Zephyr Meshlab
  • multiuser Posing system for photographers (Yes it has an IM request if someone wants to be posed)
  • Voicebox TTS A tool to connect to an external voicebox server on your system, to read messages aloud.
  • A unique color scheme
  • New render pipeline from Ayastorm which gives you alot more advantages over the original
  • LL-style Chat Window — Ported Linden Lab chat UI with mini profile icons and range filtering
    • Three chat window styles: FS V1 (plain text), FS V7 (modern headers), LL Style
    • Mini profile icons next to speaker names in nearby chat
    • Range filtering: only shows speakers within your say range
    • Flash effect for new IMs in conversation list
    • Human/System & Object tab split for chat history
    • Configurable via Preferences > Chat > Chat Window Style (requires restart)
  • 3D Stream forked from Ayastorm which lets you stream music from prims.
  • Script bulk upload — Specially made for scripters who want to upload their script repositories to SL.
  • 3D Stream Audio — Positional streaming audio from prims with multi-speaker / 5.1ch support
    • Set a prim's Description field to [3dstream:{url:http://example.com/stream.mp3}]
    • Range: [3dstream:{url:...}{range:30}] (default 20m)
    • Distributed Stereo (multiple Speakers in Linkset)
    • Optional Parameters: binaural:on|off, venue:NAME, upmix:on|off, volume:0.8
    • Activate: Preferences > Sound > 3D Stream Enabled
  • 3D Stream Metadata Notifications — Display title/artist metadata from 3D streams
    • Toast notifications when stream metadata changes (configurable)
    • Optional script channel output for custom integrations
    • Settings: Stream3DShowToast, Stream3DChatNotify, Stream3DChatChannel
  • 3D Stream Preferences — Configure 3D stream behavior in Preferences > Sound > 3D Stream
    • Scan linked child prims for stream tags (Stream3DDescriptionScan) — Scan child prims for distributed-stereo speaker layouts
    • Scan avatar attachments for stream tags (Stream3DScanAttachments) — Also scan worn objects and HUDs for stream tags (default: off)
    • Max concurrent streams (Stream3DMaxConcurrent) — Limit simultaneous 3D streams (default: 4, 0 = unlimited)
  • URL Phishing / Scam Link Detection — Warns before opening suspicious URLs
  • Hide Local Chat — Toggle to hide chat in quick preferences
  • MCP Server — Model Context Protocol for AI assistants (see MCP Documentation)
  • Camera Timeline — Record and playback camera movements for machinima and photography
    • Capture camera position, rotation, FOV as keyframes at any point on the timeline
    • Smooth step interpolation between keyframes for natural camera motion
    • Adjustable playback speed (0.25x–4x) and total duration (up to 600s)
    • Scrub the timeline to preview camera positions at any time
    • Select and delete individual keyframes to fine-tune your camera path
    • Save/Load camera timelines as XML files for reuse and sharing
    • Reset camera to previous position after playback stops

Additional Rendering Features

  • HQ Depth of Field — High-quality circular bokeh DoF with foreground blur and chromatic aberration
  • Shadow Softness — Adjustable PCF shadow sample tap radius
  • 3D Color Grading LUT — Load .cube LUT files for cinematic color grading
  • HDR Tonemapping — ACES and Khronos Neutral tonemapping operators
  • CAS Sharpening — Contrast Adaptive Sharpening
  • PBR Materials — Full GLTF/PBR material support with 16 shader variants

Build Configuration

  • AVX2 optimization
  • FMOD audio
  • 3D Stream (Ayastorm)
  • OpenSim support
  • MCP (Model Context Protocol)

MCP (Model Context Protocol)

MikoStorm includes a built-in MCP server that allows AI assistants like Claude Desktop, Cursor, and other MCP-compatible clients to interact with Second Life.

Overview

The MCP server implements the Model Context Protocol specification using JSON-RPC 2.0 over HTTP. It runs on localhost only and is disabled by default.

Configuration

Enable the MCP server in Preferences > Network & Files > MCP Server:

Setting Description
MCPEnabled Enable/disable the MCP server (default: false)
MCPPort Port number (default: 13231)
MCPAuthToken Optional Bearer token for authentication

Endpoint

http://localhost:13231/mcp

Available Tools

Chat Tools

Tool Description Parameters
chat_say Send a message in local chat message (required), channel (optional, default: 0)
chat_shout Send a shout in local chat (up to 100m range) message (required), channel (optional, default: 0)
chat_im Send an instant message to another avatar target (UUID or name, required), message (required)

Avatar Tools

Tool Description Parameters
avatar_sit Sit down on the ground or nearby object None
avatar_stand Stand up from sitting position None
avatar_walk_to Walk to a specific position in the current region x, y, z (required)
avatar_teleport Teleport to a location in any region region, x, y, z (required)
avatar_fly Enable or disable flying enabled (required, boolean)

Information Tools

Tool Description Parameters
get_position Get current avatar position, region, and rotation None
get_region_info Get information about the current region None
get_nearby_agents List nearby avatars with positions and distances None
get_nearby_objects List nearby objects with positions and distances max_results, include_attachments (optional)
get_parcel_info Get information about the current parcel None
get_self_info Get own avatar name, group, and state None

Inventory Tools

Tool Description Parameters
notecard_write Create a new notecard in your inventory name, content (required)
inventory_list List inventory folders and items at the root level None
inventory_search Search inventory folders and items by name query (required), folder, type, max_results (optional)
attachment_list List currently worn attachments None

Available Resources

Resources provide read-only access to viewer state:

URI Description
mikostorm://position Current avatar position and region
mikostorm://region Current region information
mikostorm://nearby List of nearby avatars
mikostorm://attachments Currently worn attachments
mikostorm://parcel Current parcel information
mikostorm://inventory Root-level inventory listing

Example Configuration

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "mikostorm": {
      "command": "curl",
      "args": ["-X", "POST", "-H", "Content-Type: application/json", "-d", "@-", "http://localhost:13231/mcp"]
    }
  }
}

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "mikostorm": {
      "url": "http://localhost:13231/mcp"
    }
  }
}

With Authentication

{
  "mcpServers": {
    "mikostorm": {
      "url": "http://localhost:13231/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

Protocol Methods

The server supports the following JSON-RPC methods:

Method Description
initialize Initialize the MCP session
ping Health check
tools/list List all available tools
tools/call Call a specific tool
resources/list List all available resources
resources/read Read a specific resource
notifications/initialized Notify that client is initialized

Example Requests

List Tools

curl -X POST http://localhost:13231/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Send Chat Message

curl -X POST http://localhost:13231/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"chat_say","arguments":{"message":"Hello from AI!"}}}'

Get Position

curl -X POST http://localhost:13231/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_position"}}'

Teleport

curl -X POST http://localhost:13231/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"avatar_teleport","arguments":{"region":"Ahern","x":128,"y":128,"z":25}}}'

Security

  • The server binds to localhost only (127.0.0.1)
  • No external network access
  • Optional Bearer token authentication
  • All tool calls are executed on the main thread with proper synchronization

Camera Timeline

Record and play back camera movements for machinima and photography. Capture your camera's position, rotation, and field of view as keyframes, then play them back with smooth interpolated motion.

How to Open

Click the Camera Timeline icon in the toolbar (Toybox). The floater appears as a bar above the bottom toolbar.

Quick Start

  1. Position your camera where you want the first keyframe
  2. Click Capture Camera to record the keyframe
  3. Move your camera to the next position and capture again
  4. Click Play to watch the playback (minimum 2 keyframes required)
  5. Use Save/Load to store timelines as XML files for reuse

Controls

Control Description
Capture Camera Records current camera position, rotation, and FOV as a keyframe
Play Starts timeline playback (requires 2+ keyframes)
Stop Stops playback and restores camera to its pre-playback state
Duration Total timeline length in seconds (0.5–600s, default: 30s)
Speed Playback speed multiplier (0.25x–4.0x, default: 1.0x)
Timeline Slider Scrub through the timeline to preview camera positions
Keyframes >> Expands the keyframe management panel

Keyframe Panel

Expand the panel to view and manage your keyframes:

  • Keyframe list — Shows index, time (seconds), position (x,y,z), and FOV for each keyframe
  • Delete — Remove the selected keyframe
  • Clear All — Remove all keyframes
  • Save — Export timeline to a .camera_timeline.xml file
  • Load — Import a previously saved timeline

Interpolation

Camera motion uses smooth step easing (3t² - 2t³) for natural acceleration and deceleration at each keyframe boundary. Position uses linear interpolation, rotation uses spherical linear interpolation (SLERP), and FOV is linearly interpolated.

Tips

  • Capture keyframes at regular intervals for smoother, more predictable motion
  • Use the timeline slider to preview the interpolated position at any point before playing
  • Save your timelines to share with other MikoStorm users
  • The camera always restores to its original position when playback stops

Links

License

This project is licensed under the LGPL-2.1-only license. See LICENSE for details.

About

A secondlife viewer with atdvanced features. Photogrammetry, Animation speeds in dock, MCP Server for automation...

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages