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.
Salamatrix Extension FrameworkA shared, versioned extension layer for Open Salamander
Open Salamander platform foundation
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 or Node extension does not need to reinvent the host integration for every runtime.
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.
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.
Extensions can reason about Salamander.Sides, Tabs, Commands, File Operations, Dialogs, Events and Storage in a consistent way across languages.
The SMX1 worker protocol provides a bounded JSON line transport with typed messages, request IDs, events, shutdown and error handling.
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.
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.
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.
Salamatrix.Events provides versioned subscriptions with safe unsubscribe handles. Extensions can receive host notifications and tab lifecycle events through the same event names, including worker-runtime bridges.
Salamatrix.Storage gives every manifest extension its own validated namespace for typed values and keys. State survives reloads without falling back to one unsafe global script namespace.
Salamatrix.UI supplies shared dialog primitives and progress UI. Runtime workers can add controls, validation, events, file pickers and folder pickers while Salamander owns the actual native window.
Salamatrix.Runtime is the broker between the framework and optional interpreter providers. It keeps Python, PowerShell, PHP and Node integration modular and discoverable.
Salamatrix.Extensions tracks manifest-backed extensions, activation state, capabilities and lifecycle callbacks. It gives the Plugin Manager a stable host-side view of installed extensions.
The Automation adapter exposes the same modern services through a script-shaped Salamander object. Existing one-shot scripts remain useful while manifest extensions gain lifecycle and persistent state.
A simple script can remain simple. A manifest-backed extension opts into identity, capabilities, lifecycle and services only when it needs them.
{
"id": "example.folder-watcher",
"runtime": "python",
"entry": "main.py",
"minimumFramework": "1.0",
"capabilities": ["events", "storage", "commands"]
}
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.
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.
The four workers share the same dialog surface, command state, storage contract, event bridge and SMX1 transport. They 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)
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.
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.
Use local AI model based on LLaMA and Qwen2.5-Coder 0.5B Instruct GGUF Q4_K_M model or connect to a remote AI service for automated tasks, scripts and extensions development.
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.
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.
Open Salamander is open-source software licensed under GPLv2 or later. Some individual files and libraries use different but compatible licenses.