This directory contains the official plugin registry and documentation for the Tabularis external plugin system.
plugins/
├── registry.json # Official plugin registry (fetched by the app at runtime)
├── README.md # This file
└── PLUGIN_GUIDE.md # Developer guide for building a plugin
Tabularis supports extending its database support via an external plugin system. Plugins are standalone executables that communicate with the app through JSON-RPC 2.0 over stdin/stdout. They can be written in any programming language and distributed independently of the main application.
Built-in drivers (MySQL, PostgreSQL, SQLite) are compiled into the binary. All additional databases (DuckDB, MongoDB, etc.) are supported through plugins.
- At startup, Tabularis scans the user's plugins directory for subdirectories containing a
manifest.json. - For each valid plugin, it creates an RPC bridge to the plugin executable and registers it as a driver.
- When the user connects to a database using a plugin driver, Tabularis spawns the executable and routes all requests through JSON-RPC.
- Plugins can be installed, updated, and uninstalled from Settings → Available Plugins without restarting the app.
| OS | Path |
|---|---|
| Linux | ~/.local/share/tabularis/plugins/ |
| macOS | ~/Library/Application Support/com.debba.tabularis/plugins/ |
| Windows | %APPDATA%\com.debba.tabularis\plugins\ |
Each plugin lives in its own subdirectory:
plugins/
└── duckdb/
├── manifest.json
└── duckdb-plugin-executable
The registry file is fetched from this repository by the app to display available plugins in the Settings UI.
{
"schema_version": 1,
"plugins": [
{
"id": "duckdb",
"name": "DuckDB",
"description": "DuckDB local analytical database",
"author": "Author Name <https://github.com/author>",
"homepage": "https://github.com/author/repo",
"latest_version": "1.1.0",
"releases": [
{
"version": "1.0.0",
"min_tabularis_version": "0.8.15",
"assets": {
"linux-x64": "https://example.com/plugin-linux-x64-1.0.0.zip",
"darwin-arm64": "https://example.com/plugin-darwin-arm64-1.0.0.zip",
"darwin-x64": "https://example.com/plugin-darwin-x64-1.0.0.zip",
"win-x64": "https://example.com/plugin-win-x64-1.0.0.zip"
}
},
{
"version": "1.1.0",
"min_tabularis_version": "0.9.0",
"assets": {
"linux-x64": "https://example.com/plugin-linux-x64-1.1.0.zip",
"darwin-arm64": "https://example.com/plugin-darwin-arm64-1.1.0.zip",
"darwin-x64": "https://example.com/plugin-darwin-x64-1.1.0.zip",
"win-x64": "https://example.com/plugin-win-x64-1.1.0.zip"
}
}
]
}
]
}| Field | Type | Description |
|---|---|---|
id |
string | Unique driver identifier, must match the id in manifest.json |
name |
string | Display name shown in the UI |
description |
string | Short description shown in the plugins list |
author |
string | Author name and URL in the format "Name <https://url>" |
homepage |
string | URL to the plugin repository or documentation |
latest_version |
string | Latest released version (semver) |
releases[].version |
string | Version string for this release |
releases[].min_tabularis_version |
string | Minimum app version required for this specific release |
releases[].assets |
object | Map of platform key → ZIP download URL |
| Key | Platform |
|---|---|
linux-x64 |
Linux x86-64 |
darwin-arm64 |
macOS Apple Silicon |
darwin-x64 |
macOS Intel |
win-x64 |
Windows x86-64 |
Omit a platform key if your plugin does not support that platform. The app will show a "not supported" message for that platform.
To add your plugin to the official registry:
- Build and release your plugin as a
.zipfile for each supported platform. The ZIP must extract to a directory containingmanifest.jsonand the executable. - Host the release assets (e.g., GitHub Releases).
- Open a pull request adding your plugin entry to
registry.json. - Ensure your
manifest.jsonmatches the format described in PLUGIN_GUIDE.md.
The full list is maintained in registry.json.
- PLUGIN_GUIDE.md — Complete guide for implementing a plugin executable
- Driver Trait — Rust trait all drivers implement
- RPC Protocol — JSON-RPC types used for communication