Open Salamander platform foundation

Extensions that feel native, whatever the language.

Salamatrix is the new extension layer between a one-shot Automation script and a full native C++ plugin. It gives extensions a stable service model, a manifest, lifecycle, events, persistent state and a common way to work with Salamander panels.

Native plugins and out-of-process workers can use the same concepts. A Python, PowerShell, PHP, Node or Lua extension does not need to reinvent the host integration for every runtime.

Build native dialogs Read the Platform specification

ExtensionsNative · Automation · Workers
Salamatrix servicesUI · Commands · Events · Storage
Open SalamanderHost, panels and Plugin Manager
SMX1
API protocol

One framework, several ways to extend Salamander

Salamatrix keeps the useful simplicity of Automation while adding the pieces needed for real, long-lived extensions. The public surface is service-oriented and versioned, so providers can evolve through append-only contracts instead of coupling every extension to Salamander internals.

Native foundation

SALAMATRIX.SPL is the framework provider. It registers the shared service registry, host adapters and the common object model used by native and scripted callers.

Common object model

Extensions can reason about Salamander.Sides, Tabs, Commands, File Operations, Dialogs, Events, Storage, the clipboard and the host language in a consistent way across runtimes.

Process boundary when useful

The SMX1 worker protocol provides a bounded JSON line transport with typed messages, request IDs, events, shutdown and error handling.

The Salamatrix service catalog

Services are discovered through the host registry by a stable identifier and version. The framework can expose the same capability to C++, Automation and runtime workers without making runtime providers dependencies of Automation.

Sides & tabs

Salamatrix.Sides exposes snapshots of the left and right sides, their active tabs, paths and selection context. It is the foundation for extensions that inspect or react to the current workspace.

Commands & file operations

Salamatrix.Commands maps public names such as QuickRename, Copy and Move to existing Salamander command handlers. FileOperations adds interactive copy, move, rename, delete, folder creation, refresh and properties operations.

Events

Salamatrix.Events provides versioned subscriptions with safe unsubscribe handles. Extensions can receive lifecycle, settings, color, panel, path, selection, tab and filesystem-change notifications through the same event bridge.

Persistent storage

Salamatrix.Storage gives every manifest extension its own validated namespace for strings, integers, booleans and key enumeration. Declared defaults and bounded settings migrations keep state compatible across package updates.

UI and dialogs

Salamatrix.UI supplies native dialogs, controls, progress, notifications and clipboard support. Workers can use the complete DemoPlug control gallery—including host static text, hyperlinks, progress bars, arrow/color buttons and toolbar headers—while Salamander owns dark mode, DPI scaling and the actual windows. Explore the UI framework →

Runtime broker

Salamatrix.Runtime keeps Python, PowerShell, PHP, Node and Lua providers modular and discoverable. Persistent SMX1 sessions expose bounded diagnostics and can be stopped without sharing native pointers across the process boundary.

Extensions registry

Salamatrix.Extensions tracks manifest-backed packages, activation state, capabilities, dependencies, localized metadata, settings and lifecycle callbacks. Plugin Manager remains the single host-side management surface.

Automation and host adapters

The Automation adapter exposes modern services through a script-shaped Salamander object, while workers also receive the selected Salamander language and locale. Existing one-shot JavaScript and VBScript automation remains compatible.

Salamatrix.UI 1.4

One native window, built seven different ways.

The Node, Python, PowerShell, PHP, Lua, Automation JScript, and native DemoPlug demos now construct the same Salamatrix UI capabilities dialog themselves. Each source file contains the complete layout and identifies its runtime and extension in the window.

The package dialog dispatcher belongs to Salamatrix Framework. Every runtime receives the same controls and option vocabulary over SMX1; native and Automation callers adapt the same IDialog/IControl service.

Read the Salamatrix.UI guide

19 native control kinds 5 independent worker runtimes 1 framework-owned dialog implementation 0 Automation dependencies for modern runtimes

From script to extension

A simple script can remain simple. A manifest-backed extension opts into identity, capabilities, lifecycle and services only when it needs them.

01DiscoverSalamatrix finds the manifest, selects its locale, checks its runtime and resolves extension dependencies.
02ActivateThe framework validates capabilities, applies settings migrations, registers commands and starts the selected entry point.
03RunThe extension uses shared services, receives events and keeps its own persistent state.
04ReleaseSubscriptions, worker sessions and provider registrations are removed safely and predictably.
{
  "schema": 1,
  "id": "example.folder-watcher",
  "name": "Folder Watcher",
  "version": "1.0.0",
  "runtime": "Lua",
  "entryPoint": "main.lua",
  "capabilities": ["panels.read", "events", "storage"],
  "commands": [{
    "id": "example.folder-watcher.open",
    "title": "Folder Watcher...",
    "handler": "open",
    "menu": "both",
    "toolbar": true
  }]
}

Native menu and toolbar integration

Every declared command can contribute to the Plugins menu, panel context menus and the dedicated, configurable Extension Bar. Multi-command packages are grouped under their localized package name, toolbar buttons can open package-local command menus, and command-specific light/dark SVG icons follow Salamander's theme and DPI.

Plugin Manager shows ordinary plugins and manifest extensions together. Users can activate or deactivate an extension, edit its declared settings, and inspect runtime or dependency status. The Samandarin Plugin Updates window installs catalog packages together with their required plugin dependencies.

Design boundary: Salamatrix is not intended to replace the complete native Plugin SDK. Native plugins remain the right choice for deep integration, maximum performance and ownership of complex UI.

Standalone runtime providers

Runtime providers are optional .SPL plugins. The user installs the interpreter separately; the provider discovers it, owns the worker bootstrap and registers its runtime with the Salamatrix broker.

PythonRuntime.SPLCPython worker and Python API
PowerShellRuntime.SPLPowerShell worker and cmdlet-shaped API
PHPRuntime.SPLPHP CLI worker and PHP API
JavaScriptRuntime.SPLNode worker and asynchronous API
LuaRuntime.SPLBundled Lua interpreter, worker and Lua API
Develop Your Own RuntimeIntegrate any language with Salamander

The five workers share the same dialog surface, command state, typed storage contract, event bridge, host language lookup and SMX1 transport. Python, PowerShell, PHP and Node are discovered from explicit environment overrides or the system path. The Lua provider ships a compatible interpreter, while still allowing an explicit override. Workers can add native folder and file pickers, for example:

dialog.add_folder_picker("root", "C:\\")
commands.register("watch", "Watch folder")
await dialog.addFolderPicker("root", "C:\\")
commands.setState("watch", true, true)

Lua extensions use the same snake-case facade as Python, including dialog.add_folder_picker, commands.register, storage.keys and ui.notify.

Operational note: Runtime providers borrow the framework broker but do not own it. Shutdown validates the broker identity before unregistering adapters, preventing stale-broker calls during unload.

Bundled extensions

Git Worktree Navigator

Browse, open, create and safely remove Git worktrees, inspect branch state, commit changes and create a local repository from native Salamatrix dialogs and toolbar menus.

File Lock Inspector

Find processes that keep selected files locked and prevent them from being changed, moved or deleted, with actions exposed from the menu, context menu and Extension Bar.

Extension Menu Builder

Create and edit simple menu-driven Salamatrix extension packages interactively, including commands, context-menu placement, Extension Bar buttons and toolbar menus.

All three packages include localized metadata and UI resources for the languages shipped by Samandarin.

Salamatrix AI (experimental)

SalamatrixAI.SPL is a separate native provider and the sole owner of the local assistant workflow. It can use the same service registry and focused events without making AI or Automation a prerequisite for the runtime providers.

The assistant supports provider selection, structured generation, capability and effect validation, preview, run and save/package flows. The optional Salamatrix AI Local LLaMA.SPL companion runs a server-free llama.cpp and Qwen coder model; its CPU runtime and model assets are installed on demand instead of being bundled with the main installer.

AI-ready by design

The framework exposes machine-readable service and API descriptions so an assistant can propose an extension action, show the user what will happen, run it through the same command and file-operation paths, and persist the useful result.

AskPreviewRunSave

Current status

Salamatrix is an evolving MVP with a working platform foundation. The implementation and GAP analysis are intentionally explicit about what is already wired and what remains to mature.

ImplementedService registry, versioned contracts, package discovery, Plugin Manager integration, localized manifests, lifecycle, typed settings and migrations, dependencies, storage, events, Sides, UI, Commands and FileOperations.
ImplementedStandalone Python, PowerShell, PHP, Node and Lua providers with the shared worker protocol, native pickers, command state, notifications and host-language access.
IntegratedExtension Bar, Plugins and context menus, package-local toolbar menus, light/dark command icons, catalog installation with dependency resolution, and three bundled extension packages.
Next layersRicher diagnostics and permission UX, broader value bindings, package removal, debugger integration and continued end-to-end compatibility testing.
Guiding ruleExtend contracts append-only, preserve legacy Automation, and keep runtime providers independent from Automation dependencies.

Technical documentation

License

Salamatrix Framework and official extensions are open-source software licensed under GPLv2 or later. Some individual files and libraries may use different but compatible licenses.