{"id":47939910,"url":"https://github.com/rookedsysc/kanvibe","last_synced_at":"2026-04-04T07:59:26.198Z","repository":{"id":338814862,"uuid":"1154435466","full_name":"rookedsysc/kanvibe","owner":"rookedsysc","description":"Self-hosted Kanban board with browser terminals for AI coding agents. Hook-driven auto-tracking — manage tmux/zellij sessions and git worktrees from one board.","archived":false,"fork":false,"pushed_at":"2026-04-01T14:04:28.000Z","size":6692,"stargazers_count":102,"open_issues_count":3,"forks_count":12,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T07:59:21.307Z","etag":null,"topics":["ai-agent","claude-code","developer-tools","git-worktree","kanban","self-hosted","task-management","terminal","terminal-multiplexer","tmux","typescript","vibe-coding","vibecoding","zellij"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rookedsysc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-10T11:39:12.000Z","updated_at":"2026-04-04T00:42:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rookedsysc/kanvibe","commit_stats":null,"previous_names":["rookedsysc/kanvibe"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rookedsysc/kanvibe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookedsysc%2Fkanvibe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookedsysc%2Fkanvibe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookedsysc%2Fkanvibe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookedsysc%2Fkanvibe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rookedsysc","download_url":"https://codeload.github.com/rookedsysc/kanvibe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookedsysc%2Fkanvibe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31392188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","claude-code","developer-tools","git-worktree","kanban","self-hosted","task-management","terminal","terminal-multiplexer","tmux","typescript","vibe-coding","vibecoding","zellij"],"created_at":"2026-04-04T07:59:25.604Z","updated_at":"2026-04-04T07:59:26.182Z","avatar_url":"https://github.com/rookedsysc.png","language":"TypeScript","funding_links":["https://buymeacoffee.com/rookedsysc"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# KanVibe\n\n**AI Agent Task Management Kanban Board**\n\nA web-based terminal Kanban board for managing AI coding agent (Claude Code, Gemini CLI, Codex CLI, etc.) tasks in real-time.\nMonitor tmux/zellij sessions directly in your browser while tracking task progress on a drag \u0026 drop Kanban board.\nAutomatically track task status via [AI Agent Hooks](#ai-agent-hooks---automatic-status-tracking) — no manual updates needed.\n\n[![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge\u0026logo=buy-me-a-coffee\u0026logoColor=black)](https://buymeacoffee.com/rookedsysc)\n\n\u003e Buying me a coffee is nice, but honestly? A contribution would make my day even more. :)\n\n[KO](./docs/README.ko.md) | [ZH](./docs/README.zh.md)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![▶ Watch Demo on YouTube](https://img.youtube.com/vi/8JTrvd3T_Z0/maxresdefault.jpg)](https://www.youtube.com/watch?v=8JTrvd3T_Z0)\n\n**▶ [Watch Demo on YouTube](https://www.youtube.com/watch?v=8JTrvd3T_Z0)**\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\"\u003e\u003cimg src=\"./docs/images/detail-page.png\" alt=\"Kanban Board\" width=\"100%\"\u003e\u003c/td\u003e\n    \u003ctd width=\"50%\"\u003e\u003cimg src=\"./docs/images/detail-page.png\" alt=\"Task Detail \u0026 Terminal\" width=\"100%\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n---\n\n## Prerequisites\n\nThe `kanvibe` CLI script automatically checks and installs missing dependencies. You can also install them manually:\n\n| Dependency | Version | Required | Install |\n|------------|---------|----------|---------|\n| [Node.js](https://nodejs.org/) | \u003e= 22 | Yes | `brew install node` |\n| [pnpm](https://pnpm.io/) | latest | Yes | `corepack enable \u0026\u0026 corepack prepare pnpm@latest --activate` |\n| [Docker](https://www.docker.com/) | latest | Yes | `brew install --cask docker` |\n| [git](https://git-scm.com/) | latest | Yes | `brew install git` |\n| [tmux](https://github.com/tmux/tmux) | latest | Yes | `brew install tmux` |\n| [gh](https://cli.github.com/) | latest | Yes | `brew install gh` (requires `gh auth login`) |\n| [zellij](https://github.com/zellij-org/zellij) | latest | No | `brew install zellij` |\n\n\u003e Docker is used to run the PostgreSQL database via Docker Compose.\n\n---\n\n## Quick Start\n\n### 1. Configure Environment\n\n```bash\ncp .env.example .env\n```\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `PORT` | Web server port | `4885` |\n| `DB_PORT` | PostgreSQL port | `4886` |\n| `KANVIBE_USER` | Login username | `admin` |\n| `KANVIBE_PASSWORD` | Login password | `changeme` (change this!) |\n\n### 2. Run\n\n```bash\nbash kanvibe.sh start          # Interactive mode selection (foreground/background)\nbash kanvibe.sh start --fg     # Foreground (output to terminal, Ctrl+C to stop)\nbash kanvibe.sh start --bg     # Background (server keeps running after terminal closes)\n```\n\nThis command checks dependencies (with i18n install prompts), installs packages, starts PostgreSQL, runs migrations, builds, and launches the server.\n\n```bash\nbash kanvibe.sh stop\n```\n\nStops the KanVibe server and PostgreSQL container.\n\nOpen `http://localhost:4885` in your browser.\n\n---\n\n## Usage Flow\n\n### 1. Register a Project\n\nSearch for your local git repository using the **fzf-style folder search** in project settings. KanVibe scans the directory and automatically detects existing worktree branches.\n\n### 2. Create Tasks\n\nAdd a TODO task from the Kanban board. When creating a task with a branch name, KanVibe automatically:\n- Creates a **git worktree** for the branch\n- Spawns a **tmux window** or **zellij tab** for the session\n- Links the terminal session to the task\n\n### 3. Work with the Kanban Board\n\nTasks are managed through 5 statuses: **TODO** → **PROGRESS** → **PENDING** → **REVIEW** → **DONE**\n\nChange statuses via drag \u0026 drop, or let [AI Agent Hooks](#ai-agent-hooks---automatic-status-tracking) transition them automatically. When a task moves to **DONE**, its branch, worktree, and terminal session are **automatically deleted**.\n\n### 4. Select Pane Layouts\n\nEach task's terminal page supports multiple pane layouts:\n\n| Layout | Description |\n|--------|-------------|\n| **Single** | One full-screen pane |\n| **Horizontal 2** | Two panes side by side |\n| **Vertical 2** | Two panes stacked |\n| **Left + Right TB** | Left pane + right top/bottom split |\n| **Left TB + Right** | Left top/bottom split + right pane |\n| **Quad** | Four equal panes |\n\nEach pane can run a custom command (e.g., `vim`, `htop`, `lazygit`, test runner, etc.). Configure layouts globally or per-project from the settings dialog.\n\n---\n\n## Features\n\n### Kanban Board\n- 5-status task management (TODO / PROGRESS / PENDING / REVIEW / DONE)\n- Custom task ordering with drag \u0026 drop\n- Multi-project filtering\n- Done column pagination\n- Real-time WebSocket updates\n\n### Git Worktree Integration\n- Automatic git worktree creation when a branch-based task is created\n- Worktree scanning: existing branches are auto-registered as TODO tasks\n- Automatic cleanup (branch + worktree + session) when task moves to DONE\n\n### Terminal Sessions (tmux / zellij)\n- **tmux** and **zellij** are both supported as terminal multiplexers\n- Browser-based terminal via xterm.js + WebSocket\n- SSH remote terminal support (reads `~/.ssh/config`)\n- Nerd Font rendering support\n\n### AI Agent Hooks - Automatic Status Tracking\nKanVibe integrates with **Claude Code Hooks**, **Gemini CLI Hooks**, **Codex CLI**, and **OpenCode** to automatically track task status. Tasks are managed through 5 statuses:\n\n| Status | Description |\n|--------|-------------|\n| **TODO** | Initial state when a task is created |\n| **PROGRESS** | AI is actively working on the task |\n| **PENDING** | AI asked a follow-up question; waiting for user response (Claude Code only) |\n| **REVIEW** | AI has finished; awaiting review |\n| **DONE** | Task complete — branch, worktree, and terminal session are **automatically deleted** |\n\n#### Claude Code\n```\nUser sends prompt          → PROGRESS\nAI asks question (AskUser) → PENDING\nUser answers               → PROGRESS\nAI finishes response       → REVIEW\n```\n\n#### Gemini CLI\n```\nBeforeAgent (user prompt)  → PROGRESS\nAfterAgent (agent done)    → REVIEW\n```\n\n\u003e Gemini CLI does not have an equivalent to Claude Code's `AskUserQuestion`, so the PENDING state is not available.\n\n#### Codex CLI (Partial Support)\n```\nagent-turn-complete (agent done) → REVIEW\n```\n\n\u003e Codex CLI currently only supports the `agent-turn-complete` notification event via the `notify` config. PROGRESS and PENDING transitions are not yet available. OpenAI is [actively designing a hooks system](https://github.com/openai/codex/discussions/2150) — full support will be added when it ships.\n\n#### OpenCode\n```\nUser sends message (message.updated, role=user) → PROGRESS\nAI asks a question (question.asked)             → PENDING\nUser answers question (question.replied)        → PROGRESS\nSession idle (session.idle)                     → REVIEW\n```\n\nOpenCode uses its own [plugin system](https://opencode.ai/docs/plugins/) instead of shell-script hooks. KanVibe generates a TypeScript plugin at `.opencode/plugins/kanvibe-plugin.ts` that subscribes to OpenCode's native event hooks (`message.updated`, `question.asked`, `question.replied`, and `session.idle`) via the `@opencode-ai/plugin` SDK. This means status updates are handled in-process without spawning external shell commands.\n\nAll agent hooks are **auto-installed** when you register a project through KanVibe's directory scan or create a task with a worktree. You can also install them individually from the task detail page.\n\n| Agent | Hook Directory | Config File |\n|-------|---------------|-------------|\n| Claude Code | `.claude/hooks/` | `.claude/settings.json` |\n| Gemini CLI | `.gemini/hooks/` | `.gemini/settings.json` |\n| Codex CLI | `.codex/hooks/` | `.codex/config.toml` |\n| OpenCode | `.opencode/plugins/` | Plugin auto-discovery |\n\n#### Browser Notifications\n\nTask status changes via AI Agent Hooks trigger **browser notifications** with project, branch, and status. **Click to jump directly to the task detail page.**\n\n- **Real-time alerts** — Instant notifications for task status changes\n- **Background mode** — Notifications work even when KanVibe is not focused\n- **Smart navigation** — Click notification → task detail page (with correct language)\n- **Configurable** — Enable/disable per project and filter by status (PROGRESS, PENDING, REVIEW, DONE)\n\nSetup: Browser will prompt for permission on first visit. Configure filters in **Project Settings** → **Notifications**.\n\n#### Hook API Endpoints\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/api/hooks/start` | POST | Create a new task |\n| `/api/hooks/status` | POST | Update task status by `branchName` + `projectName` |\n\n### GitHub-style Diff View\n\nReview code changes directly in the browser with a GitHub-style diff viewer. Click the **Diff** badge on the task detail page to see all modified files compared to the base branch.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"30%\"\u003e\u003cimg src=\"./docs/images/diff-view-button.png\" alt=\"Diff Badge on Task Detail\" width=\"100%\"\u003e\u003c/td\u003e\n    \u003ctd width=\"70%\"\u003e\u003cimg src=\"./docs/images/diff-view.png\" alt=\"Diff View Page\" width=\"100%\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n- File tree sidebar with changed file count\n- Inline diff viewer powered by Monaco Editor\n- Edit mode for quick fixes directly in the browser\n- Viewed file tracking with checkboxes\n\n### Pane Layout Editor\n- 6 layout presets (Single, Horizontal 2, Vertical 2, Left+Right TB, Left TB+Right, Quad)\n- Per-pane custom command configuration\n- Global and per-project layout settings\n\n### Internationalization (i18n)\n- Supported languages: Korean (ko), English (en), Chinese (zh)\n- Powered by next-intl\n\n---\n\n## Tech Stack\n\n| Category | Technology |\n|----------|------------|\n| Frontend/Backend | Next.js 16 (App Router) + React 19 + TypeScript |\n| Database | PostgreSQL 16 + TypeORM |\n| Styling | Tailwind CSS v4 |\n| Terminal | xterm.js + WebSocket + node-pty |\n| SSH | ssh2 (Node.js) |\n| Drag \u0026 Drop | @hello-pangea/dnd |\n| i18n | next-intl |\n| Container | Docker Compose |\n\n---\n\n## License\n\nThis project is licensed under the **AGPL-3.0**. You are free to use, modify, and extend it for open-source purposes. Commercial SaaS distribution is not permitted under this license. See [LICENSE](./LICENSE) for details.\n\n---\n\n## Contributing\n\nSee [docs/CONTRIBUTING.md](./docs/CONTRIBUTING.md) for guidelines.\n\n---\n\n## Inspired By\n\n- [workmux](https://github.com/raine/workmux) — tmux workspace manager\n- [vibe-kanban](https://github.com/BloopAI/vibe-kanban) — AI-powered Kanban board\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frookedsysc%2Fkanvibe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frookedsysc%2Fkanvibe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frookedsysc%2Fkanvibe/lists"}