KaibanJS Team as a Native OpenClaw Plugin
The official @kaibanjs/kaibanjs-plugin package registers your KaibanJS Team as a single OpenClaw tool — kaiban_run_team — so the Gateway’s main agent can invoke a full multi-agent workflow with structured arguments, exactly when the orchestrator decides it is the right move.

OpenClaw: Where Developers Ship AI to Real Channels
OpenClaw is a widely adopted AI messaging gateway: one place to connect agents to WhatsApp, Telegram, Discord, and more, with consistent tooling, plugins, and orchestration. For builders who already run KaibanJS Teams in TypeScript, OpenClaw is the shortest path from a workflow in code to users on the channels they already use every day.
This plugin matters because it meets OpenClaw where it is strongest — tool-calling and Gateway extensions — instead of asking you to stand up a separate HTTP surface unless you need one. The main agent decides when to delegate; KaibanJS decides how the Team executes once invoked.
Why This Integration Matters for KaibanJS Developers
Shipping a first-party OpenClaw plugin is a strategic step for the KaibanJS project: it anchors multi-agent orchestration inside a platform developers already trust for production gateways.
One tool, full Team
OpenClaw’s orchestrator passes structured arguments; your Team runs tasks, agents, and optional tools (for example live web search). The plugin bridges those two worlds without bespoke glue code per channel.
Same Team code you already write
You implement createTeam and teamMetadata in an ordinary TypeScript module. The Gateway loads it at startup via team.modulePath.
Ecosystem signal
Alongside MCP, A2A, and other adapters, an official OpenClaw plugin shows that KaibanJS is committed to open, composable integrations — not a siloed framework.
How the Plugin Works
At a high level: OpenClaw loads the plugin entrypoint, reads your config, dynamically imports your Team module, registers kaiban_run_team, and executes your factory when the main agent calls the tool.
1. Startup
OpenClaw loads the plugin and calls register(api) with the plugin id and configuration from plugins.entries.<id>.
2. Config & import
The plugin reads config.team. modulePath must point to your TypeScript file (absolute paths are safest on the Gateway host). The module is loaded with import() via a file: URL.
3. Metadata → tool
teamMetadata.description becomes the tool description for the LLM. Optional teamMetadata.inputs is merged into the tool parameters so the model sends the same keys your createTeam expects.
4. Execute
The plugin merges config.team.defaults with the tool’s inputs, calls createTeam, then team.start(). The user-facing string comes from the workflow result when present.
Your Team Module Contract
Export names default to teamMetadata and createTeam — both configurable in openclaw.json.
teamMetadata
- description (required) — when the main agent should use
kaiban_run_team - inputs (optional) — JSON Schema for the
inputsobject; use explicitpropertiesandadditionalProperties: falseso keys match your factory
createTeam
A function ({ inputs, ctx }) => Team | Promise<Team>. Build and return a KaibanJS Team; the plugin starts it after the factory returns. Context may include session, agent, and channel identifiers from OpenClaw when provided.
OpenClaw Configuration
The manifest id in openclaw.plugin.json is kaibanjs-plugin. Your openclaw.json entry key must match: plugins.entries.kaibanjs-plugin.
Enable the plugin & point Team module
{
plugins: {
enabled: true,
entries: {
'kaibanjs-plugin': {
enabled: true,
config: {
team: {
modulePath: '/absolute/path/to/your/team.ts',
exportName: 'createTeam',
metadataExportName: 'teamMetadata',
defaults: {},
},
},
},
},
},
}Install any extra npm dependencies your Team needs (for example @langchain/tavily) in the environment where OpenClaw resolves modules. Set API keys in the Gateway process environment.
Allow the tool for your agent
{
agents: {
list: [
{
id: 'default',
tools: {
allow: ['kaiban_run_team'],
},
},
],
},
}Restart the Gateway after changing plugin or agent configuration.
Install on the Gateway Host
You do not need to publish to npm: install the package from the KaibanJS repo path (or copy only packages/openclaw-plugin with degit or sparse checkout).
openclaw plugins install /absolute/path/to/KaibanJS/packages/openclaw-plugin
openclaw stop
openclaw startFull documentation, troubleshooting (plugin id mismatch, missing config, wrong tool keys), and links to OpenClaw plugin manifests live in the repository README.
Demo: KaibanJS Team Inside OpenClaw
Watch the plugin invoke a KaibanJS workflow through the Gateway’s tool layer — the same pattern you can use with your own Team module.
Plugin vs OpenResponses Adapter
KaibanJS also documents an OpenClaw integration via the OpenResponses API (a separate HTTP adapter). Use this plugin when you want the main agent to call a tool that runs your Team; use the OpenResponses path when you want OpenClaw to treat your entire Team as a custom model provider. Both are valid — choose based on how you want the orchestrator to route work.
Why OpenClaw Integration Matters for KaibanJS
For the project, first-class OpenClaw support means KaibanJS Teams are not only demoed in sandboxes — they can ship as production tools on a serious gateway stack. For developers, it means less plumbing and more time on agents, tasks, and evaluation.
Reach users where they are
The same OpenClaw deployment that powers messaging channels can now delegate heavy lifting to KaibanJS when the conversation needs a structured multi-agent run.
Clear extension point
Plugins are how OpenClaw grows. A maintained KaibanJS plugin keeps the framework aligned with Gateway capabilities and community expectations.
Build Teams in KaibanJS, Run Them in OpenClaw
Clone the repo, install the plugin on your Gateway, point modulePath at your Team, and ship.
We’re almost there! 🌟 Help us hit 100 stars!
Star KaibanJS - Only 100 to go! ⭐