A plugin is one folder that can add several kinds of contributions to Kucedr. Manage plugins in Settings → Plugins: install, enable, disable, or remove them without restarting the app.

What a plugin can contain

KindWhere it livesWhat it adds
Extensionsextensions/<id>/HTML, JS, and CSS shown inside the main window in a sandboxed frame
Appsapps/<id>/Standalone apps that open in their own window
MCP serversmcp/<id>/mcp.json or mcp/servers.jsonAgent tools from local stdio or remote http servers
Skillsskills/<id>/SKILL.mdInstructions that teach the agent a task
Modelsmanifest.json → modelsRemote API models, or local models through Ollama
Searchmanifest.json → web_searchWeb search engines for the agent
Databasesmanifest.json → vector_databasesVector databases for knowledge search
Storagemanifest.json → storageCloud file storage
Botsmanifest.json → botsMessaging bots, such as Telegram

The manifest doesn't list folder contributions. Kucedr finds them from the folders, and each folder name is the contribution's id. A plugin whose manifest has models, search, databases, storage, or bots is also a provider. See Providers.

Install a plugin

  1. Open Settings → Plugins.
  2. Upload a plugin folder or .tgz archive, or paste an https URL to a .tgz.
  3. Kucedr validates the plugin, then makes its contributions available right away.

Installed plugins live in ~/.kucedr/plugins/<id>/. An installed plugin overrides a built-in plugin with the same id. Removing a plugin deletes its folder, and disabling one hides all of its contributions at once.

Built-in plugins

Kucedr ships with built-in plugins for model providers, MCP servers, search, storage, and bots. They can be disabled but not removed. The core Kucedr plugin ships the built-in extensions and skills, and it can't be disabled.

Plugin layout

<plugin-id>/
  manifest.json               plugin info, plus provider services when it is a provider
  assets/                     icons and other data
  apps/<app-id>/              app manifest.json + entry file
  extensions/<extension-id>/  manifest.json + index.html
  mcp/servers.json            optional: server configs keyed by id
  mcp/<server-id>/mcp.json    one server per folder
  skills/<skill-id>/SKILL.md

A minimal manifest.json:

{
  "schemaVersion": 5,
  "id": "acme-tools",
  "title": "Acme Tools",
  "version": "1.0.0",
  "description": "Acme models, dashboard, and CRM tools.",
  "categories": ["LLM"],
  "minAppVersion": "1.3.0",
  "icon": "icon.svg"
}
  • schemaVersion, id, title, version, and description are required. Unknown keys are rejected.
  • id is lowercase kebab-case and must match the folder name.
  • icon is a png, svg, jpg, or webp file in assets/, 256 KB max.
  • A plugin needs at least one contribution and can't contain symlinks.

Extensions and isolation

An extension needs an index.html and a manifest.json with a title, a description, and a slot. Open it from Extensions in the command menu; it replaces the chat and stays in the sidebar while open.

Each extension runs in an iframe with its own origin, no Node, no window.api, and no network access. A strict content security policy blocks inline scripts. Extensions can also be imported on their own in Settings → Extensions.

Current limits

  • Plugin settings forms, permissions, and a host bridge for extensions aren't available yet.
  • There is no plugin catalog or automatic updates yet.
  • The Kucedr CLI uses its own plugin format and data directory. The desktop app doesn't read CLI-installed plugins.

See Apps, MCP Servers, Skills, and the source plugin specification.