Plugin types
SQL Explorer is built around a small set of plugin types. Each is a folder with a manifest and an entry assembly, loaded at runtime.
| type | What it is | Host API |
|---|---|---|
provider | A database-engine integration (implements IDbProvider). Every engine is a provider plugin. | ProviderHostApi |
tool | A one-shot action on a connection or node (e.g. backup, BACPAC export). | ToolHostApi |
mcp | Contributes tools to the host-owned MCP server for AI access. | McpHostApi |
extension | A long-lived subsystem: its own bottom panel, background work, menu items and managed connections, each behind per-capability consent. | ToolHostApi |
extension is driven by the capabilities it declares (panel, background, menu, storage, connections, process). You consent to those when you install it. See the manifest reference.Where plugins live
Each plugin is a folder plugins/<id>/ holding its plugin.json, entry DLL and
private dependencies. There are two roots: bundled plugins ship next to the app (read-only),
and user plugins install into your app-data folder
(%AppData%/Lionear/SqlExplorer/plugins) with no admin rights. If both provide the same
id, the user copy wins.
Isolation
Every plugin loads into its own AssemblyLoadContext. Only the SqlExplorer.Sdk
contract and Avalonia are shared with the host — a plugin's own drivers and dependencies load
privately, so it can pin whatever versions it needs without clashing with the app or other plugins. A broken
plugin is captured as an error and logged; it never takes down the app.
Host-API versioning
Each plugin type has its own host-API version, bumped independently. A plugin records the
hostApiVersion it was built against, and the loader accepts any version within the host's
supported range — additive changes stay compatible, while a genuinely breaking change raises the floor.
A plugin outside the range is skipped with a clear message rather than crashing the app.
Building your own
A plugin references only the MIT-licensed SqlExplorer.Sdk. For the developer guide and the full
contract, see PLUGINS.md,
and the manifest reference here for the plugin.json fields.
SQL Explorer