Plugins
Overview

Plugin Development

Agentbase uses a WordPress-inspired hook/filter system for extensibility.

Plugin Structure

Every plugin needs a manifest and an entry point:

my-plugin/
├── manifest.json     # Plugin metadata
├── src/
│   └── index.ts      # Entry point
└── package.json

Manifest

{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "My custom Agentbase plugin",
  "author": "Your Name",
  "hooks": ["before_message", "after_response"],
  "permissions": ["conversations:read"]
}

Using the SDK

import {
  createPlugin,
  registerHook,
  registerFilter,
} from "@agentbase/plugin-sdk";
 
const plugin = createPlugin({
  name: "my-plugin",
  version: "1.0.0",
  activate() {
    registerHook("before_message", async (message) => {
      console.log("User sent:", message.content);
    });
 
    registerFilter("response_text", async (text) => {
      return text + "\n\n— Powered by My Plugin";
    });
  },
  deactivate() {
    console.log("Plugin deactivated");
  },
});
 
export default plugin;

Available Hooks

HookDescriptionPayload
before_messageFires before a user message is processed{ content, userId, appId }
after_responseFires after AI generates a response{ response, conversationId }
on_installFires when plugin is installed{ appId, config }
on_activateFires when plugin is activated{ appId }

Available Filters

FilterDescriptionInput
response_textModify AI response textstring
system_promptModify system promptstring
message_contentModify user messagestring

Next Steps