KaibanJS

Framework · Last verified 2026-09-30

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

KaibanJS key facts. Data as of 2026-09-30.
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
Website www.kaibanjs.com
Documentation 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)
  • A Team groups agents and tasks, takes inputs, and runs tasks sequentially, by declared dependencies, or in parallel with allowParallelExecution. (source)
  • Task outputs flow forward with the {taskResult:taskN} placeholder in later task descriptions. (source)
  • Kaiban Board: a local Kanban-style UI started with npx kaibanjs@latest init that shows tasks moving between states as agents work. (source)
  • Human validation: tasks marked externalValidationRequired stop in AWAITING_VALIDATION until validateTask() or provideFeedback() is called. (source)
  • A central Team Store (team.useStore()) exposes task statuses and workflow logs to React or other UIs. (source)
  • ExternalCodingAgent runs each task through the Claude Code or OpenCode CLI instead of an in-process model call. (source)
  • WorkflowDrivenAgent executes @kaibanjs/workflow step graphs without LLM reasoning and supports suspend and resume. (source)

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

Protocols

MCP, A2A and AG-UI support for KaibanJS. See the full matrix.
ProtocolSupportNote
MCP Partial evidence
checked 2026-09-30
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 evidence
checked 2026-09-30
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

npx kaibanjs@latest init

Install not yet verified by this site. What this means

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

Pros

  • Works in front-end frameworks (React, Vue, Angular, Next.js) as well as Node.js. (source)
  • Validation and feedback are built into task states, including a REVISE loop and a per-task feedback history. (source)
  • Release v0.24.1 added ExternalCodingAgent, so a team can hand tasks to Claude Code or OpenCode. (source)
  • An official OpenClaw plugin (@kaibanjs/kaibanjs-plugin) exposes a team as the kaiban_run_team tool. (source)
  • Team memory can be switched off so tasks only see results they reference, which limits prompt size. (source)

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)
  • Dynamic orchestration by a manager LLM is still marked "Coming Soon"; task order must be defined up front. (source)
  • Telemetry is enabled by default and must be turned off with KAIBAN_TELEMETRY_OPT_OUT. (source)
  • MCP support depends on LangChain's adapter package rather than a KaibanJS module. (source)
  • The project is still on 0.x releases (0.24.1). (source)

Alternatives

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

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.