Tabularis Plugin Registry
August 6, 2026 ยท View on GitHub
This directory contains the official plugin registry and documentation for the Tabularis external plugin system.
๐ The canonical, browsable plugin documentation lives on the website: tabularis.dev/wiki/plugins (protocol reference) and tabularis.dev/wiki/building-plugins (walkthrough). Registry and manifest docs live at docs.tabularium.wiki (
/manifest/,/publishing/,/consuming/). The files here are the in-repo working copies.
Quick start โ build a plugin
First time? Read PLUGIN_TUTORIAL.md โ a 20-minute walkthrough that ends with a working Google Sheets driver in your local Tabularis.
Already know the system?
npm create @tabularis/plugin@latest my-driver
cd my-driver
just dev-install
Your driver appears in the Tabularis connection picker immediately. Fill in the handlers as you go โ full reference in PLUGIN_GUIDE.md. Scaffolder source and options: packages/create-plugin/.
Directory Contents
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
Plugin System Overview
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.
How It Works
- At startup, Tabularis scans the user's plugins directory for subdirectories containing a
.tabulariummanifest (or a legacymanifest.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.
Plugin Installation Directory
| OS | Path |
|---|---|
| Linux | ~/.local/share/tabularis/plugins/ |
| macOS | ~/Library/Application Support/tabularis/plugins/ |
| Windows | %APPDATA%\tabularis\plugins\ |
Each plugin lives in its own subdirectory:
plugins/
โโโ duckdb/
โโโ .tabularium (or legacy manifest.json)
โโโ duckdb-plugin-executable
registry.json Format
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"
}
}
]
}
]
}
Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique driver identifier, must match the plugin's manifest identity (name in a .tabularium, id in a legacy 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 |
Platform Keys
| 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.
Publishing a Plugin
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 containing the.tabulariummanifest and the executable. - Host the release assets (e.g., GitHub Releases) and upload
.tabulariumas a standalone release asset too โ GitHub renames the dotfile todefault.tabularium; the registry accepts both. - Submit at registry.tabularis.dev/submit. Manifest validation is enforced: a manifest that fails the schema is rejected with HTTP 422. Format reference: PLUGIN_GUIDE.md and docs.tabularium.wiki/manifest.
- Legacy path: a pull request adding your plugin entry to
registry.jsonstill works during the transition, but new plugins should use the hosted registry.
Available Plugins
The full list is maintained in registry.json.
UI Extensions (Phase 2)
Starting with v0.9.15, plugins can also inject custom UI components into the Tabularis interface through a slot-based extension system. Plugins declare a ui_extensions array in their manifest, targeting predefined insertion points (slots) such as the toolbar, context menu, row editor, sidebar, and plugin settings page.
This is entirely optional โ plugins without ui_extensions continue to work identically.
For details, see:
- Plugin UI Extensions Spec โ Full specification
- PLUGIN_GUIDE.md ยง 3b โ Quick-start guide for UI extensions
Development Resources
- PLUGIN_GUIDE.md โ Complete guide for implementing a plugin executable
- Plugin UI Extensions Spec โ UI extension system specification
- Driver Trait โ Rust trait all drivers implement
- RPC Protocol โ JSON-RPC types used for communication