Plugin SDK

Build OpenVesper plugins in TypeScript. Plugins ship tools, agents, channels, and LLM providers.

Installing

pnpm add @openvesper/plugin-sdk

Minimal plugin

import { definePlugin, defineTool, inputSchema } from "@openvesper/plugin-sdk";

export default definePlugin({
  name: "@your/plugin-hello",
  version: "1.0.0",
  description: "Greets the world",
  tools: [
    defineTool({
      name: "say_hello",
      description: "Returns a greeting",
      inputSchema: inputSchema(
        { name: { type: "string", description: "Who to greet" } },
        ["name"]
      ),
      handler: async (input) => ({
        success: true,
        data: { greeting: `Hello, ${input.name}!` },
      }),
      category: "demo",
    }),
  ],
});

Defining agents

import { defineAgent } from "@openvesper/plugin-sdk";

const myAgent = defineAgent({
  mode: "my-agent",
  name: "My Agent",
  description: "...",
  systemPrompt: "...",
  capabilities: ["read", "external"],
});

Tool permissions

Set permission on tools that mutate or call out:

defineTool({
  name: "telegram_send",
  permission: "mutation", // โ†’ triggers approval prompt
  ...
});

Source-tree layout

packages/plugins/your-plugin/
โ”œโ”€โ”€ package.json    # name, version, deps
โ”œโ”€โ”€ plugin.json     # manifest (optional but recommended)
โ”œโ”€โ”€ tsconfig.json
โ””โ”€โ”€ src/
    โ””โ”€โ”€ index.ts    # default export: definePlugin(...)

What's next?