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

  1. At startup, Tabularis scans the user's plugins directory for subdirectories containing a .tabularium manifest (or a legacy manifest.json).
  2. For each valid plugin, it creates an RPC bridge to the plugin executable and registers it as a driver.
  3. When the user connects to a database using a plugin driver, Tabularis spawns the executable and routes all requests through JSON-RPC.
  4. Plugins can be installed, updated, and uninstalled from Settings โ†’ Available Plugins without restarting the app.

Plugin Installation Directory

OSPath
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

FieldTypeDescription
idstringUnique driver identifier, must match the plugin's manifest identity (name in a .tabularium, id in a legacy manifest.json)
namestringDisplay name shown in the UI
descriptionstringShort description shown in the plugins list
authorstringAuthor name and URL in the format "Name <https://url>"
homepagestringURL to the plugin repository or documentation
latest_versionstringLatest released version (semver)
releases[].versionstringVersion string for this release
releases[].min_tabularis_versionstringMinimum app version required for this specific release
releases[].assetsobjectMap of platform key โ†’ ZIP download URL

Platform Keys

KeyPlatform
linux-x64Linux x86-64
darwin-arm64macOS Apple Silicon
darwin-x64macOS Intel
win-x64Windows 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:

  1. Build and release your plugin as a .zip file for each supported platform. The ZIP must extract to a directory containing the .tabularium manifest and the executable.
  2. Host the release assets (e.g., GitHub Releases) and upload .tabularium as a standalone release asset too โ€” GitHub renames the dotfile to default.tabularium; the registry accepts both.
  3. 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.
  4. Legacy path: a pull request adding your plugin entry to registry.json still 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:


Development Resources