# KaibanJS: features, protocols, quickstart

## TL;DR

KaibanJS is an MIT-licensed JavaScript framework from Kaiban that organises agents like a Kanban team: role-based agents work through tasks that move across a board, with dependencies, parallel runs and human validation steps. It suits JavaScript developers who want role-based agent teams in Node.js or the browser. The repository has had no pushes since May 2026.

## Key facts

| Field | Value |
| --- | --- |
| Type | Framework |
| Languages / SDKs | JavaScript, TypeScript |
| License | MIT |
| Pricing model | Unknown |
| Orchestration pattern | Crew / roles |
| GitHub stars | 1,480 (as of 2026-09-30) |
| GitHub forks | 159 |
| Last push | 2026-05-15 |
| Latest release | v0.24.1 |
| Repository | [kaiban-ai/KaibanJS](https://github.com/kaiban-ai/KaibanJS) |
| Website | [www.kaibanjs.com](https://www.kaibanjs.com/) |
| Documentation | [docs.kaibanjs.com](https://docs.kaibanjs.com/) |
| Last verified | 2026-09-30 |

## Key features

- Agents defined by name, role, goal, background and tools; the default type is the LLM-backed `ReactChampionAgent`. ([source](https://docs.kaibanjs.com/core-concepts/Agents))
- A `Team` groups agents and tasks, takes `inputs`, and runs tasks sequentially, by declared `dependencies`, or in parallel with `allowParallelExecution`. ([source](https://docs.kaibanjs.com/core-concepts/Task-Orchestration))
- Task outputs flow forward with the `{taskResult:taskN}` placeholder in later task descriptions. ([source](https://docs.kaibanjs.com/how-to/Task-Result-Passing))
- Kaiban Board: a local Kanban-style UI started with `npx kaibanjs@latest init` that shows tasks moving between states as agents work. ([source](https://docs.kaibanjs.com/get-started/The%20Kaiban%20Board))
- Human validation: tasks marked `externalValidationRequired` stop in `AWAITING_VALIDATION` until `validateTask()` or `provideFeedback()` is called. ([source](https://docs.kaibanjs.com/core-concepts/Human-in-the-Loop))
- A central Team Store (`team.useStore()`) exposes task statuses and workflow logs to React or other UIs. ([source](https://docs.kaibanjs.com/core-concepts/State%20Management))
- `ExternalCodingAgent` runs each task through the Claude Code or OpenCode CLI instead of an in-process model call. ([source](https://docs.kaibanjs.com/core-concepts/ExternalCodingAgent))
- `WorkflowDrivenAgent` executes `@kaibanjs/workflow` step graphs without LLM reasoning and supports suspend and resume. ([source](https://docs.kaibanjs.com/core-concepts/WorkflowDrivenAgent))

## Architecture and orchestration pattern

Pattern: Crew / roles.

A KaibanJS program is a `Team` of agents and tasks. Each task names the agent that performs it and an expected output. The docs describe three deterministic execution modes that can be combined: tasks run in list order, start once their `dependencies` finish, or run side by side when marked `allowParallelExecution`. An LLM manager that would re-plan tasks at runtime is listed as coming soon, so the order is always defined by the developer.

Agents come in three types. The default `ReactChampionAgent` runs an LLM reasoning loop with tools (LangChain-compatible tools are accepted). `WorkflowDrivenAgent` executes a step graph from `@kaibanjs/workflow`, and `ExternalCodingAgent` hands a task to a local Claude Code or OpenCode process, one CLI call per task.

All state sits in a Team Store, described as Redux-inspired, which records task statuses (TODO, DOING, BLOCKED, REVISE, AWAITING_VALIDATION, DONE) and workflow logs; UIs subscribe to it. Team-level memory is on by default, so every task sees earlier results; with `memory: false`, tasks only receive results referenced through `{taskResult:taskN}`.

### Human in the loop

A task created with `externalValidationRequired: true` moves to `AWAITING_VALIDATION` when its agent finishes, and the workflow status becomes `BLOCKED`. The application listens with `team.onWorkflowStatusChange()`, lists waiting tasks with `getTasksByStatus('AWAITING_VALIDATION')`, and either approves with `validateTask(taskId)` or sends `provideFeedback(taskId, text)`. Feedback moves the task to `REVISE`, and the agent reworks it; feedback can also be given on tasks that are `BLOCKED` or already `DONE`. Each task keeps a `feedbackHistory` with content, status and timestamp. `ExternalCodingAgent` appends reviewer feedback to the prompt before calling the CLI again.

### Harnesses it can drive

- Claude Code ([evidence](https://docs.kaibanjs.com/core-concepts/ExternalCodingAgent))
- OpenCode ([evidence](https://docs.kaibanjs.com/core-concepts/ExternalCodingAgent))
- OpenClaw ([evidence](https://docs.kaibanjs.com/how-to/OpenClaw-Native-Plugin))

## Protocols

| Protocol | Support | Evidence | Note |
| --- | --- | --- | --- |
| MCP | Partial (checked 2026-09-30) | [link](https://docs.kaibanjs.com/how-to/MCP-Adapter-Integration) | Client only, through LangChain's `@langchain/mcp-adapters` (`MultiServerMCPClient`) from KaibanJS 0.20.1, over stdio or SSE; KaibanJS has no MCP module of its own. |
| A2A | Partial (checked 2026-09-30) | [link](https://docs.kaibanjs.com/how-to/A2A-Protocol-Integration) | A how-to guide wraps a team in a server-side A2A endpoint built with the A2A project's `@a2a-js/sdk` plus Express; A2A is not part of the `kaibanjs` package and a client side is not covered. |
| AG-UI | Unknown (checked 2026-09-30) | — | No mention in the KaibanJS docs sitemap, README or repository code (code search for 'ag-ui' and 'agui' returned nothing); KaibanJS is not listed in the AG-UI README. |

## Best for

- JavaScript or TypeScript apps that want role-based agent teams in React, Next.js or Node.js
- Research-then-write task chains where each step's output feeds the next
- Running Claude Code or OpenCode on a fixed sequence of repository tasks
- Demos and internal tools that show agent progress on a Kanban board

## Not for

- Workflows that need an LLM manager to re-plan tasks at runtime, which the docs list as coming soon
- Projects that need an actively updated dependency; there have been no pushes since 2026-05-15
- Python codebases

## Quickstart

```sh
npx kaibanjs@latest init
```

Install not yet verified by this site.

```js
import { Agent, Task, Team } from 'kaibanjs';

const researcher = new Agent({ name: 'Ada', role: 'Researcher', goal: 'Collect facts on a topic' });
const writer = new Agent({ name: 'Ben', role: 'Writer', goal: 'Turn research into a short brief' });

const research = new Task({ referenceId: 'research', description: 'List key facts about {topic}',
  expectedOutput: 'Bullet list', agent: researcher });
const brief = new Task({ description: 'Write a 100-word brief from: {taskResult:task1}',
  expectedOutput: 'Short brief', agent: writer, dependencies: ['research'], externalValidationRequired: true });

const team = new Team({ name: 'Brief team', agents: [researcher, writer], tasks: [research, brief],
  inputs: { topic: 'solid-state batteries' }, env: { OPENAI_API_KEY: process.env.OPENAI_API_KEY } });

team.onWorkflowStatusChange((status) => {
  if (status === 'BLOCKED') team.getTasksByStatus('AWAITING_VALIDATION').forEach((t) => team.validateTask(t.id));
});
const output = await team.start();
console.log(output.status, output.result);
```

### Common pitfalls

- `npx kaibanjs@latest init` scaffolds a Kaiban Board project; the key goes in `.env` as `VITE_OPENAI_API_KEY` (or another provider), then `npm run kaiban` restarts the board. For library use, install with `npm install kaibanjs`.
- The quick start lists Node.js 14+ and npm 6+ as prerequisites.
- Anonymous telemetry is on by default; set `KAIBAN_TELEMETRY_OPT_OUT=true` to disable it.
- `ExternalCodingAgent` needs Node.js (it spawns child processes), the `claude` or `opencode` CLI on `PATH`, and has a default timeout of 10 minutes per call.
- A2A and OpenClaw adapters must run server-side, not in browser bundles.

Official quickstart: https://docs.kaibanjs.com/get-started/Quick%20Start

## Pros

- Works in front-end frameworks (React, Vue, Angular, Next.js) as well as Node.js. ([source](https://docs.kaibanjs.com/how-to/Integrating%20with%20JavaScript%20Frameworks))
- Validation and feedback are built into task states, including a `REVISE` loop and a per-task feedback history. ([source](https://docs.kaibanjs.com/core-concepts/Human-in-the-Loop))
- Release v0.24.1 added `ExternalCodingAgent`, so a team can hand tasks to Claude Code or OpenCode. ([source](https://github.com/kaiban-ai/KaibanJS/releases/tag/v0.24.1))
- An official OpenClaw plugin (`@kaibanjs/kaibanjs-plugin`) exposes a team as the `kaiban_run_team` tool. ([source](https://docs.kaibanjs.com/how-to/OpenClaw-Native-Plugin))
- Team memory can be switched off so tasks only see results they reference, which limits prompt size. ([source](https://docs.kaibanjs.com/core-concepts/Memory))

## Cons

- Maintenance has slowed: the last push to the repository was on 2026-05-15, and the latest release, v0.24.1, dates from 2026-05-01. ([source](https://github.com/kaiban-ai/KaibanJS))
- Dynamic orchestration by a manager LLM is still marked "Coming Soon"; task order must be defined up front. ([source](https://docs.kaibanjs.com/core-concepts/Task-Orchestration))
- Telemetry is enabled by default and must be turned off with `KAIBAN_TELEMETRY_OPT_OUT`. ([source](https://docs.kaibanjs.com/get-started/Telemetry))
- MCP support depends on LangChain's adapter package rather than a KaibanJS module. ([source](https://docs.kaibanjs.com/how-to/MCP-Adapter-Integration))
- The project is still on 0.x releases (0.24.1). ([source](https://github.com/kaiban-ai/KaibanJS/releases))

## Alternatives

- [CrewAI](https://multiagentguide.top/tools/crewai.md)
- [VoltAgent](https://multiagentguide.top/tools/voltagent.md)
- [Mastra](https://multiagentguide.top/tools/mastra.md)
- [AgentKit by Inngest](https://multiagentguide.top/tools/inngest-agentkit.md)
- [OpenAI Agents SDK (JavaScript/TypeScript)](https://multiagentguide.top/tools/openai-agents-js.md)

## FAQ

### Does KaibanJS support MCP?

Partly. Since 0.20.1 its agents can use MCP tools through LangChain's `@langchain/mcp-adapters` client over stdio or SSE. KaibanJS does not ship its own MCP module or server.

### Is KaibanJS still maintained?

The repository's last push was on 2026-05-15 and the newest release is v0.24.1 from 2026-05-01, so there has been no activity for several months.

### Is KaibanJS free?

The library is MIT-licensed. Its maker, Kaiban, also runs the separate KaibanIO platform, which the docs connect to over A2A; no public pricing page for it was found.

### Can KaibanJS drive coding agents?

Yes. `ExternalCodingAgent` runs a task through the Claude Code or OpenCode CLI, and an OpenClaw plugin exposes a whole team as a single tool.

### How does a human approve work in KaibanJS?

Mark a task with `externalValidationRequired`; when it reaches `AWAITING_VALIDATION`, call `validateTask()` to approve or `provideFeedback()` to send it back for revision.

## Sources

- [KaibanJS GitHub repository](https://github.com/kaiban-ai/KaibanJS)
- [KaibanJS README](https://github.com/kaiban-ai/KaibanJS/blob/main/README.md)
- [KaibanJS LICENSE](https://github.com/kaiban-ai/KaibanJS/blob/main/LICENSE)
- [KaibanJS releases](https://github.com/kaiban-ai/KaibanJS/releases)
- [KaibanJS v0.24.1 release notes](https://github.com/kaiban-ai/KaibanJS/releases/tag/v0.24.1)
- [KaibanJS docs](https://docs.kaibanjs.com/)
- [Agents (docs)](https://docs.kaibanjs.com/core-concepts/Agents)
- [Teams (docs)](https://docs.kaibanjs.com/core-concepts/Teams)
- [Task orchestration (docs)](https://docs.kaibanjs.com/core-concepts/Task-Orchestration)
- [Task result passing (docs)](https://docs.kaibanjs.com/how-to/Task-Result-Passing)
- [The Kaiban Board (docs)](https://docs.kaibanjs.com/get-started/The%20Kaiban%20Board)
- [Human-in-the-loop (docs)](https://docs.kaibanjs.com/core-concepts/Human-in-the-Loop)
- [State management (docs)](https://docs.kaibanjs.com/core-concepts/State%20Management)
- [Memory (docs)](https://docs.kaibanjs.com/core-concepts/Memory)
- [ExternalCodingAgent (docs)](https://docs.kaibanjs.com/core-concepts/ExternalCodingAgent)
- [WorkflowDrivenAgent (docs)](https://docs.kaibanjs.com/core-concepts/WorkflowDrivenAgent)
- [MCP adapter integration (docs)](https://docs.kaibanjs.com/how-to/MCP-Adapter-Integration)
- [A2A protocol integration (docs)](https://docs.kaibanjs.com/how-to/A2A-Protocol-Integration)
- [OpenClaw native plugin (docs)](https://docs.kaibanjs.com/how-to/OpenClaw-Native-Plugin)
- [OpenClaw integration via OpenResponses (docs)](https://docs.kaibanjs.com/how-to/OpenClaw-Integration)
- [Integrating with the KaibanIO platform (docs)](https://docs.kaibanjs.com/how-to/Integrating-with-KaibanIO-Platform)
- [Telemetry (docs)](https://docs.kaibanjs.com/get-started/Telemetry)
- [Quick start (docs)](https://docs.kaibanjs.com/get-started/Quick%20Start)
- [Using TypeScript (docs)](https://docs.kaibanjs.com/how-to/Using%20Typescript)
- [Integrating with JavaScript frameworks (docs)](https://docs.kaibanjs.com/how-to/Integrating%20with%20JavaScript%20Frameworks)
- [AG-UI README, supported integrations](https://github.com/ag-ui-protocol/ag-ui/blob/main/README.md)
- [KaibanJS homepage](https://www.kaibanjs.com/)
- [Kaiban (vendor site linked from the kaiban-ai GitHub org)](https://www.kaiban.io/)

## Unknown fields

pricing_model: the library is MIT, but the same vendor (the kaiban-ai GitHub org links to kaiban.io) documents a hosted KaibanIO platform that KaibanJS teams connect to over A2A; kaiban.io offers demos but no public pricing page was found (https://www.kaiban.io/pricing returns 404), so the model is left unknown. protocols.agui: searched the docs sitemap, README, the AG-UI README integration list and a repository code search for 'ag-ui' / 'agui' with no result.

---

Data as of 2026-09-30. Not affiliated with listed projects. HTML version: https://multiagentguide.top/tools/kaibanjs
