vibe-kanban
Manage AI coding agents on a visual Kanban board. Run parallel agents through a To Do→In Progress→Review→Done flow with automatic git worktree isolation and GitHub PR creation.
Best use case
vibe-kanban is best used when you need a repeatable AI agent workflow instead of a one-off prompt. It is especially useful for teams working in multi. Manage AI coding agents on a visual Kanban board. Run parallel agents through a To Do→In Progress→Review→Done flow with automatic git worktree isolation and GitHub PR creation.
Manage AI coding agents on a visual Kanban board. Run parallel agents through a To Do→In Progress→Review→Done flow with automatic git worktree isolation and GitHub PR creation.
Users should expect a more consistent workflow output, faster repeated execution, and less time spent rewriting prompts from scratch.
Practical example
Example input
Use the "vibe-kanban" skill to help with this workflow task. Context: Manage AI coding agents on a visual Kanban board. Run parallel agents through a To Do→In Progress→Review→Done flow with automatic git worktree isolation and GitHub PR creation.
Example output
A structured workflow result with clearer steps, more consistent formatting, and an output that is easier to reuse in the next run.
When to use this skill
- Use this skill when you want a reusable workflow rather than writing the same prompt again and again.
When not to use this skill
- Do not use this when you only need a one-off answer and do not need a reusable workflow.
- Do not use it if you cannot install or maintain the related files, repository context, or supporting tools.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/vibe-kanban/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How vibe-kanban Compares
| Feature / Agent | vibe-kanban | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Manage AI coding agents on a visual Kanban board. Run parallel agents through a To Do→In Progress→Review→Done flow with automatic git worktree isolation and GitHub PR creation.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
## Platform Support Status (Current)
| Platform | Current Support | Requirements |
|---|---|---|
| Claude | Native MCP integration | Register in `mcpServers` |
| Codex | MCP script integration | `scripts/mcp-setup.sh --codex` or equivalent config |
| Gemini | MCP registration | `mcpServers`/bridge configuration |
| OpenCode | MCP/bridge integration | `omx`/`ohmg` or equivalent setup |
Whether this skill alone is sufficient:
- Claude/Gemini: **Yes**
- Codex: **Yes (requires script-based setup)**
- OpenCode: **Yes (via orchestration)**
# Vibe Kanban — AI Agent Kanban Board
> Manage multiple AI agents (Claude/Codex/Gemini) from a single Kanban board.
> Moving a card (task) to In Progress automatically creates a git worktree and starts the agent.
## When to use this skill
- When breaking an epic into independent tasks for parallel agent assignment
- When you want to visually track the status of ongoing AI work
- When you want to review agent results as diffs/logs in the UI and retry them
- When combining GitHub PR-based team collaboration with AI agent work
---
## Prerequisites
```bash
# Node.js 18+ required
node --version
# Complete agent authentication beforehand
claude --version # Set ANTHROPIC_API_KEY
codex --version # Set OPENAI_API_KEY (optional)
gemini --version # Set GOOGLE_API_KEY (optional)
opencode --version # No separate setup needed (GUI-based)
```
> **Verified versions (as of 2026-02-22)**
> - vibe-kanban: v0.1.17
> - claude (Claude Code): 2.1.50
> - codex: 0.104.0
> - gemini: 0.29.5
> - opencode: 1.2.10
---
## Installation & Running
### npx (fastest)
```bash
# Run immediately (no installation needed)
npx vibe-kanban
# Specify port (default port 3000)
npx vibe-kanban --port 3001
# Specify port and environment variable together
PORT=3001 npx vibe-kanban --port 3001
# Use wrapper script
bash scripts/vibe-kanban-start.sh
```
Browser opens `http://localhost:3000` automatically.
> ⚠️ **Port conflict warning**: If another dev server like Next.js is using port 3000,
> run `PORT=3001 npx vibe-kanban --port 3001`.
> Confirm `Main server on :3001` in the startup log, then visit `http://localhost:3001`.
Normal startup log:
```
Starting vibe-kanban v0.1.17...
No user profiles.json found, using defaults only
Starting PR monitoring service with interval 60s
Remote client initialized with URL: https://api.vibekanban.com
Main server on :3001, Preview proxy on :XXXXX
Opening browser...
```
### Clone + dev mode
```bash
git clone https://github.com/BloopAI/vibe-kanban.git
cd vibe-kanban
pnpm i
pnpm run dev
```
---
## Environment Variables
| Variable | Description | Default |
|------|------|--------|
| `PORT` | Server port | `3000` |
| `HOST` | Server host | `127.0.0.1` |
| `VIBE_KANBAN_REMOTE` | Allow remote connections | `false` |
| `VK_ALLOWED_ORIGINS` | CORS allowed origins | Not set |
| `DISABLE_WORKTREE_CLEANUP` | Disable worktree cleanup | Not set |
| `ANTHROPIC_API_KEY` | For Claude Code agent | — |
| `OPENAI_API_KEY` | For Codex/GPT agent | — |
| `GOOGLE_API_KEY` | For Gemini agent | — |
Set in `.env` file before starting the server.
> **API key location per agent (Settings → Agents → Environment variables)**
> - Claude Code: `ANTHROPIC_API_KEY`
> - Codex: `OPENAI_API_KEY`
> - Gemini: `GOOGLE_API_KEY`
> - Opencode: No separate setup needed (built-in auth)
---
## MCP Configuration
Vibe Kanban runs as an MCP (Model Context Protocol) server, letting agents control the board directly.
### Claude Code MCP Setup
`~/.claude/settings.json` or project `.mcp.json`:
```json
{
"mcpServers": {
"vibe-kanban": {
"command": "npx",
"args": ["vibe-kanban", "--mcp"],
"env": {
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "3001"
}
}
}
}
```
### OpenCode MCP Setup
Add to `~/.config/opencode/opencode.json`:
```json
{
"mcp": {
"vibe-kanban": {
"command": "npx",
"args": ["vibe-kanban", "--mcp"],
"env": {
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "3001"
}
}
}
}
```
After restarting, `vk_*` tools are available directly in your OpenCode session.
### MCP Tool List
| Tool | Description |
|------|------|
| `vk_list_cards` | List all cards (workspaces) |
| `vk_create_card` | Create a new card |
| `vk_move_card` | Change card status |
| `vk_get_diff` | Get card diff |
| `vk_retry_card` | Re-run a card |
> ⚠️ **Tool name changes from older versions**: `vk_list_tasks` → `vk_list_cards`, `vk_create_task` → `vk_create_card`
> These are the confirmed tool names from the actual MCP API as of v0.1.17.
### Codex MCP Integration
To connect Vibe Kanban with Codex, run the following from your project root:
```bash
bash scripts/mcp-setup.sh --codex
```
This command adds the `vibe-kanban` MCP server config to `~/.codex/config.toml`.
Hook-based auto-looping is not default Codex behavior, so retry/loop management is handled via board card progress states or a higher-level orchestrator.
---
## Workspace → Parallel Agents → PR Workflow
> **v0.1.17 actual UI structure**: Vibe Kanban is a Kanban board, but
> the actual unit of work is a **Workspace**.
> Each workspace handles one task independently.
### 1. Start the server
```bash
# Default run
npx vibe-kanban
# → http://localhost:3000
# Port conflict (e.g., Next.js)
PORT=3001 npx vibe-kanban --port 3001
# → http://localhost:3001
```
### 2. (Optional) Review epic plan with planno
```text
Review the implementation plan for this feature with planno
```
planno (plannotator) is an independent skill — usable without Vibe Kanban.
### 3. Create a Workspace
1. Open the UI → click **"+ Create Workspace"** or the `+` button in the left sidebar
2. **Which repositories?** screen:
- **Browse** → select a git repo from the filesystem (manual path entry supported)
- **Recent** → previously used repos
- Select a repo, then choose a branch (default: `main`)
- Click **Continue**
3. **What would you like to work on?** screen:
- Select an agent (Opencode, Claude Code, Codex, Gemini, Amp, Qwen Code, Copilot, Droid, Cursor Agent)
- Enter a task description (Markdown supported)
- Select a mode (Default, Build, etc.)
- Click **Create**
### 4. Automatic agent execution
When a workspace is created:
- A `vk/<hash>-<slug>` branch is created automatically (e.g., `vk/3816-add-a-comment-to`)
- A git worktree is created automatically (fully isolated per agent)
- The selected agent CLI runs with log streaming
Workspace states:
- **Running**: Agent is executing (left sidebar)
- **Idle**: Waiting
- **Needs Attention**: Agent finished or needs input
### 5. Review results
- **Changes panel**: View file diffs
- **Logs panel**: Agent execution logs
- **Preview panel**: Web app preview
- **Terminal**: Run commands directly
- **Notes**: Write notes
### 6. Create PR & finish
- Workspace detail → **"Open pull request"** button
- PR merge → workspace moves to Archive
- Worktree cleaned up automatically
---
## Git Worktree Isolation Structure
Workspace directory (configurable in Settings → General → Workspace Directory):
```
~/.vibe-kanban-workspaces/ ← default location (under home directory)
├── <workspace-uuid-1>/ ← workspace 1 isolated environment
├── <workspace-uuid-2>/ ← workspace 2 isolated environment
└── <workspace-uuid-3>/ ← workspace 3 isolated environment
```
Branch naming (configurable in Settings → General → Git → Branch Prefix):
```
vk/<4-char ID>-<task-slug>
e.g.: vk/3816-add-a-comment-to-readme
```
Internal behavior:
```bash
git worktree add <workspace-dir> -b vk/<hash>-<task-slug> main
<agent-cli> -p "<task-description>" --cwd <workspace-dir>
```
> **Recommended .gitignore entries:**
> ```
> .vibe-kanban-workspaces/
> .vibe-kanban/
> ```
---
## Remote Deployment
### Docker
```bash
# Official image
docker run -p 3000:3000 vibekanban/vibe-kanban
# Pass environment variables
docker run -p 3000:3000 \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e VK_ALLOWED_ORIGINS=https://vk.example.com \
vibekanban/vibe-kanban
```
### Reverse Proxy (Nginx/Caddy)
```bash
# CORS must be allowed
VK_ALLOWED_ORIGINS=https://vk.example.com
# Or multiple origins
VK_ALLOWED_ORIGINS=https://a.example.com,https://b.example.com
```
### SSH Remote Access
Integrates with VSCode Remote-SSH:
```
vscode://vscode-remote/ssh-remote+user@host/path/to/.vk/trees/<task-slug>
```
---
## Troubleshooting
### Worktree conflicts / orphaned worktrees
```bash
# Clean up orphaned worktrees
git worktree prune
# List current worktrees
git worktree list
# Force remove a specific worktree
git worktree remove .vk/trees/<slug> --force
```
### 403 Forbidden (CORS error)
```bash
# CORS config required for remote access
VK_ALLOWED_ORIGINS=https://your-domain.com npx vibe-kanban
```
### Agent won't start
```bash
# Test CLI directly
claude --version
codex --version
# Check API keys
echo $ANTHROPIC_API_KEY
echo $OPENAI_API_KEY
```
### Port conflict
```bash
# Use a different port
npx vibe-kanban --port 3001
# Or use environment variable
PORT=3001 npx vibe-kanban
```
### SQLite lock error
```bash
# Disable worktree cleanup and restart
DISABLE_WORKTREE_CLEANUP=1 npx vibe-kanban
```
---
## UI vs CLI Decision Guide
| Situation | Mode |
|------|------|
| Shared team board, visual progress tracking | UI (`npx vibe-kanban`) |
| CI/CD pipeline, script automation | CLI (`scripts/pipeline.sh`) |
| Quick local experiments | CLI (`scripts/conductor.sh`) |
| Browser diff/log review | UI |
---
## Supported Agents (verified v0.1.17)
Configure each agent in Settings → Agents:
| Agent | Command | API Key |
|----------|------|--------|
| **Opencode** | `opencode` | Built-in (default) |
| **Claude Code** | `claude` | `ANTHROPIC_API_KEY` |
| **Codex** | `codex` | `OPENAI_API_KEY` |
| **Gemini** | `gemini` | `GOOGLE_API_KEY` |
| **Amp** | `amp` | Separate |
| **Qwen Code** | `qwen-coder` | Separate |
| **Copilot** | `copilot` | GitHub account |
| **Droid** | `droid` | Separate |
| **Cursor Agent** | `cursor` | Cursor subscription |
Configurable per agent:
- **Append prompt**: Additional instructions appended at agent runtime
- **Model**: Model name to use (e.g., `claude-opus-4-6`)
- **Variant**: Model variant
- **Auto Approve**: Auto-approve agent actions (default: ON)
- **Auto Compact**: Auto-compress context (default: ON)
- **Environment variables**: API keys and other env vars
## Representative Use Cases
### 1. Parallel epic decomposition
```
"Payment Flow v2" epic
├── Workspace 1: Frontend UI → Claude Code
├── Workspace 2: Backend API → Codex
└── Workspace 3: Integration tests → Opencode
→ 3 workspaces Running simultaneously → parallel implementation
```
### 2. Role-based specialist agent assignment
```
Claude Code → design/domain-heavy features
Codex → types/tests/refactoring
Gemini → docs/storybook writing
Opencode → general tasks (default)
```
### 3. GitHub PR-based team collaboration
```
Set VIBE_KANBAN_REMOTE=true
→ Team members check status on the board
→ Review/approval only via GitHub PR
→ Parallel agents + traditional PR process combined
```
### 4. Implementation comparison
```
Same task, two workspaces:
Workspace A → Claude Code (UI structure focus)
Workspace B → Codex (performance optimization focus)
→ Compare PRs, pick best-of-both
```
### 5. OpenCode + ulw parallel delegation
Combine with OpenCode's ulw (ultrawork) mode to run agents in parallel at the epic level:
```python
# ulw keyword → activates ultrawork parallel execution layer
# Vibe Kanban board: npx vibe-kanban (run in a separate terminal)
task(category="visual-engineering", run_in_background=True,
load_skills=["frontend-ui-ux", "vibe-kanban"],
description="[Kanban WS1] Frontend UI",
prompt="Implement payment flow UI — card input, order confirmation, and completion screens in src/components/payment/")
task(category="unspecified-high", run_in_background=True,
load_skills=["vibe-kanban"],
description="[Kanban WS2] Backend API",
prompt="Implement payment flow API — POST /charge, POST /refund, GET /status/:id")
task(category="unspecified-low", run_in_background=True,
load_skills=["vibe-kanban"],
description="[Kanban WS3] Integration tests",
prompt="Write payment E2E tests — success/failure/refund scenarios")
# → 3 workspaces appear simultaneously in Running state on the Kanban board
# → On each completion: Needs Attention → PR created → Archive
```
---
## Tips
- Keep card scope narrow (1 card = 1 commit unit)
- For changes spanning 2+ files, review the plan with planno first
- Use `VIBE_KANBAN_REMOTE=true` only on trusted networks
- If an agent stalls, reassign or split the card
---
## Architecture Overview
```
┌─────────────────────────────────────────────────────────┐
│ Vibe Kanban UI │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ To Do │In Progress│ Review │ Done │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
└───────────────────────────┬─────────────────────────────┘
│ REST API
┌───────────────────────────▼─────────────────────────────┐
│ Rust Backend │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌──────────┐ │
│ │ server │ │executors │ │ git │ │ services │ │
│ └─────────┘ └──────────┘ └─────────┘ └──────────┘ │
│ │ │
│ ┌─────▼─────┐ │
│ │ SQLite │ │
│ └───────────┘ │
└─────────────────────────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌────▼────┐
│ Claude │ │ Codex │ │ Gemini │
│worktree1│ │ worktree2 │ │worktree3│
└─────────┘ └───────────┘ └─────────┘
```
---
## References
- [GitHub repo: BloopAI/vibe-kanban](https://github.com/BloopAI/vibe-kanban)
- [Official landing page: vibekanban.com](https://vibekanban.online)
- [Architecture analysis: vibe-kanban – a Kanban board for AI agents](https://virtuslab.com/blog/ai/vibe-kanban/)
- [Adoption story](https://bluedreamer-twenty.tistory.com/7)
- [Demo: Run Multiple Claude Code Agents Without Git Conflicts](https://www.youtube.com/watch?v=W45XJWZiwPM)
- [Demo: Claude Code Just Got Way Better | Auto Claude Kanban Boards](https://www.youtube.com/watch?v=vPPAhTYoCdA)
---
## Skill File Structure
```
.agent-skills/vibe-kanban/
├── SKILL.md # Main skill document
├── SKILL.toon # TOON format (compressed)
├── scripts/
│ ├── start.sh # Server start wrapper
│ ├── cleanup.sh # Worktree cleanup
│ ├── mcp-setup.sh # MCP setup automation
│ └── health-check.sh # Server health check
├── references/
│ ├── environment-variables.md # Environment variable reference
│ └── mcp-api.md # MCP API reference
└── templates/
├── claude-mcp-config.json # Claude Code MCP config
├── docker-compose.yml # Docker deployment template
└── .env.example # Environment variable example
```
### Script Usage
```bash
# Start server
bash scripts/start.sh --port 3001
# Worktree cleanup
bash scripts/cleanup.sh --dry-run # Preview
bash scripts/cleanup.sh --all # Remove all VK worktrees
# MCP setup
bash scripts/mcp-setup.sh --claude # Claude Code setup
bash scripts/mcp-setup.sh --all # Setup for all agents
# Health check
bash scripts/health-check.sh
bash scripts/health-check.sh --json # JSON output
```
---
## Quick Reference
```
=== Start server ===
npx vibe-kanban Run immediately (port 3000)
PORT=3001 npx vibe-kanban --port 3001 Port conflict (e.g., Next.js)
http://localhost:3000 Board UI
=== Environment variables ===
PORT=3001 Change port
VK_ALLOWED_ORIGINS=https://... Allow CORS
ANTHROPIC_API_KEY=... Claude Code auth
OPENAI_API_KEY=... Codex auth
GOOGLE_API_KEY=... Gemini auth
=== MCP integration ===
npx vibe-kanban --mcp MCP mode
vk_list_cards List cards (workspaces)
vk_create_card Create card
vk_move_card Change status
=== Workspace flow ===
Create → Running → Needs Attention → Archive
Running: worktree created + agent started
Needs Attention: finished or needs input
Archive: PR merge complete
=== MCP config file locations ===
Opencode: ~/.config/opencode/opencode.json
Claude Code: ~/.claude/settings.json or .mcp.json
=== worktree cleanup ===
git worktree prune Clean up orphans
git worktree list List all
git worktree remove <path> Force remove
```Related Skills
vibecoder-guide-legacy
Guides VibeCoder (non-technical users) through natural language development (legacy). Use when user mentions どうすればいい, 次は何, 使い方, 困った, help, what should I do. Do NOT load for: 技術者向け作業, 直接的な実装指示, レビュー.
vibe-security
Security intelligence for code analysis. Detects SQL injection, XSS, CSRF, authentication issues, crypto failures, and more. Actions: scan, analyze, fix, audit, check, review, secure, validate, sanitize, protect. Languages: JavaScript, TypeScript, Python, PHP, Java, Go, Ruby. Frameworks: Express, Django, Flask, Laravel, Spring, Rails. Vulnerabilities: SQL injection, XSS, CSRF, authentication bypass, authorization issues, command injection, path traversal, insecure deserialization, weak crypto, sensitive data exposure. Topics: input validation, output encoding, parameterized queries, password hashing, session management, CORS, CSP, security headers, rate limiting, dependency scanning.
azure-quotas
Check/manage Azure quotas and usage across providers. For deployment planning, capacity validation, region selection. WHEN: "check quotas", "service limits", "current usage", "request quota increase", "quota exceeded", "validate capacity", "regional availability", "provisioning limits", "vCPU limit", "how many vCPUs available in my subscription".
raindrop-io
Manage Raindrop.io bookmarks with AI assistance. Save and organize bookmarks, search your collection, manage reading lists, and organize research materials. Use when working with bookmarks, web research, reading lists, or when user mentions Raindrop.io.
zlibrary-to-notebooklm
自动从 Z-Library 下载书籍并上传到 Google NotebookLM。支持 PDF/EPUB 格式,自动转换,一键创建知识库。
discover-skills
当你发现当前可用的技能都不够合适(或用户明确要求你寻找技能)时使用。本技能会基于任务目标和约束,给出一份精简的候选技能清单,帮助你选出最适配当前任务的技能。
web-performance-seo
Fix PageSpeed Insights/Lighthouse accessibility "!" errors caused by contrast audit failures (CSS filters, OKLCH/OKLAB, low opacity, gradient text, image backgrounds). Use for accessibility-driven SEO/performance debugging and remediation.
project-to-obsidian
将代码项目转换为 Obsidian 知识库。当用户提到 obsidian、项目文档、知识库、分析项目、转换项目 时激活。 【激活后必须执行】: 1. 先完整阅读本 SKILL.md 文件 2. 理解 AI 写入规则(默认到 00_Inbox/AI/、追加式、统一 Schema) 3. 执行 STEP 0: 使用 AskUserQuestion 询问用户确认 4. 用户确认后才开始 STEP 1 项目扫描 5. 严格按 STEP 0 → 1 → 2 → 3 → 4 顺序执行 【禁止行为】: - 禁止不读 SKILL.md 就开始分析项目 - 禁止跳过 STEP 0 用户确认 - 禁止直接在 30_Resources 创建(先到 00_Inbox/AI/) - 禁止自作主张决定输出位置
obsidian-helper
Obsidian 智能笔记助手。当用户提到 obsidian、日记、笔记、知识库、capture、review 时激活。 【激活后必须执行】: 1. 先完整阅读本 SKILL.md 文件 2. 理解 AI 写入三条硬规矩(00_Inbox/AI/、追加式、白名单字段) 3. 按 STEP 0 → STEP 1 → ... 顺序执行 4. 不要跳过任何步骤,不要自作主张 【禁止行为】: - 禁止不读 SKILL.md 就开始工作 - 禁止跳过用户确认步骤 - 禁止在非 00_Inbox/AI/ 位置创建新笔记(除非用户明确指定)
internationalizing-websites
Adds multi-language support to Next.js websites with proper SEO configuration including hreflang tags, localized sitemaps, and language-specific content. Use when adding new languages, setting up i18n, optimizing for international SEO, or when user mentions localization, translation, multi-language, or specific languages like Japanese, Korean, Chinese.
google-official-seo-guide
Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation
github-release-assistant
Generate bilingual GitHub release documentation (README.md + README.zh.md) from repo metadata and user input, and guide release prep with git add/commit/push. Use when the user asks to write or polish README files, create bilingual docs, prepare a GitHub release, or mentions release assistant/README generation.