docs/plugin_development/manifest.md
!!! warning "Beta Feature" The plugin system is in beta (available in Beekeeper Studio 5.3+). We'd love your feedback!
The manifest.json file defines your plugin's metadata, capabilities, settings, and permissions. This file must be located in the root of your plugin directory.
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for your plugin. Use lowercase letters, numbers, and hyphens only. |
name | string | Yes | Display name shown to users in the Plugin Manager and UI. |
author | string | AuthorInfo | Yes | Plugin author or organization name. |
description | string | Yes | Brief description of what your plugin does. |
version | string | Yes | Semantic version of your plugin (e.g., "1.0.0", "2.1.5"). |
icon | string | No | Material UI icon name. See Material Icons for available options. |
capabilities | Capabilities | Yes | Defines what views your plugin provides. |
pluginEntryDir | string | No | Path to your plugin's built files relative to the plugin root. Defaults to project root. |
manifestVersion | 1 | 0 | No | Version of the manifest format. Defaults to 0. |
minAppVersion | string | No | Minimum Beekeeper Studio version required. If not specified, all version of Beekeeper Studio are supported. |
settings | unknown | No | (Planned for future releases) Configuration options that can be set via config files. |
permissions | unknown | No | (Planned for future releases) List of permissions your plugin requires. |
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Author or organization name. |
url | string | Yes | Author or organization URL. |
| Property | Type | Required | Description |
|---|---|---|---|
views | View[] | Yes | Array of view definitions for your plugin. |
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this view. |
name | string | Yes | Display name shown in tabs/sidebar. |
type | ViewType | Yes | Type of view. |
entry | string | Yes | Path to the HTML file relative to plugin root. |
| Value | Description |
|---|---|
"shell-tab" | Tab with your plugin's iframe at the top and a collapsible result table at the bottom. |
"base-tab" | Full-tab interface. |
"primary-sidebar" | (Planned for future releases) Primary sidebar panel. |
"secondary-sidebar" | (Planned for future releases) Secondary sidebar panel. |
{
"id": "my-database-plugin",
"name": "Database Analyzer",
"author": "Your Name",
"description": "Analyzes database performance and provides optimization suggestions",
"version": "1.0.0",
"manifestVersion": 1,
"minAppVersion": "5.4.0",
"icon": "analytics",
"capabilities": {
"views": [
{
"id": "analyzer-tab",
"name": "Analyzer",
"type": "shell-tab",
"entry": "index.html"
}
],
"menus": [
{
"command": "openAnalyzer",
"name": "Open Analyzer",
"view": "analyzer-tab",
"placement": "menubar.tools"
}
]
}
}
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Author or organization name. |
url | string | Yes | Author or organization URL. |
| Property | Type | Required | Description |
|---|---|---|---|
views | PluginView[] | No | Array of view definitions for your plugin. |
menus | PluginMenuItem[] | No | Array of menu definitions for your plugin. |
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this view. |
name | string | Yes | Display name shown in tabs/sidebar. |
type | PluginViewType | Yes | Type of view. |
entry | string | Yes | Path to the HTML file relative to plugin root. |
| Value | Description |
|---|---|
"plain-tab" | Tab with your plugin's iframe taking up the entire tab. |
"shell-tab" | Tab with your plugin's iframe at the top and a collapsible result table at the bottom. |
"primary-sidebar" | (Planned for future releases) Primary sidebar panel. |
"secondary-sidebar" | (Planned for future releases) Secondary sidebar panel. |
| Property | Type | Required | Description |
|---|---|---|---|
command | string | Yes | Command or id of the menu item. |
name | string | Yes | User-facing label shown in the UI for this menu item. |
view | string | No | ID of a view defined in capabilities.views; the host opens a new tab of that view. |
placement | PluginMenuItemPlacement | No | Location or locations in the app where this menu item should appear, expressed as a string or array of strings. |
group | string | No | (Planned for future releases) Optional group identifier for sorting and grouping items within a placement. |
order | number | No | (Planned for future releases) Optional numeric order for fine-grained sorting within a group, with lower numbers shown first. |
| Value | Description |
|---|---|
"newTabDropdown" | Shown in the dropdown list when opening a new tab |
"menubar.tools" | Shown in the tools menu |
"editor.query.context" | Context menu inside the query editor |
"results.cell.context" | Context menu on a cell |
"results.columnHeader.context" | Context menu on a row header |
"results.rowHeader.context" | Context menu on a column header |
"results.corner.context" | Context menu on the top left corner |
"tableTable.cell.context" | Context menu on a cell |
"tableTable.columnHeader.context" | Context menu on a row header |
"tableTable.rowHeader.context" | Context menu on a column header |
"tableTable.corner.context" | Context menu on the top left corner |
"tab.query.header.context" | Context menu on the query tab header |
"tab.table.header.context" | Context menu on the table tab header |
"entity.table.context" | Context menu on a table |
"entity.schema.context" | Context menu on a schema |
"entity.routine.context" | Context menu on a routine |
The old tabTypes format looks like this:
{
"manifestVersion": 0,
"capabilities": {
"views": {
"tabTypes": [
{
"id": "data-visualizer",
"name": "Data Visualizer",
"kind": "shell",
"entry": "tab.html"
}
]
}
}
}
Please use the new capabilities format instead.