* Done! The changes ensure user messages display immediately when a coding agent execution process is created. **What changed:** 1. `getActiveAgentProcess()` - now detects created/queued/running processes (not just running) 2. `ensureProcessVisible()` - adds process to state with empty entries and emits immediately 3. `idStatusKey` - tracks status changes so effect runs when process transitions states 4. Active process effect - calls `ensureProcessVisible()` before starting stream **Result:** User sees their message instantly, then logs populate as they stream in. * Done! All consistency issues fixed: **Changes made:** 1. ✅ Moved `emitEntries()` out of `ensureProcessVisible()` to caller - consistent with pattern where helpers mutate but don't emit 2. ✅ Updated both historic loaders to skip `['created', 'queued', 'running']` - prevents race condition with active process path 3. ✅ Renamed `lastRunningProcessId` → `lastActiveProcessId` - accurate naming for what it tracks The implementation is now internally consistent with the existing codebase patterns. * Done! The fix ensures streaming only starts when the process is actually `running`, not when it's just `created` or `queued`. **How it works now:** 1. Process detected (created/queued/running) → user message shows immediately 2. Process transitions to `running` → streaming starts once and logs appear 3. No wasted backoff attempts before endpoint is ready * ## Analysis Complete I found the fork's enum attribute: **`#[ts(use_ts_enum)]`** **Current state:** - Rust: `ExecutionProcessStatus` enum with values `Running`, `Completed`, `Failed`, `Killed` - TypeScript: `type ExecutionProcessStatus = "running" | "completed" | "failed" | "killed"` **Important finding:** The Oracle identified a bug in our recent changes - we're checking for `['created', 'queued', 'running']` but `ExecutionProcessStatus` doesn't have `created` or `queued` values. Those don't exist in the enum. ## Proposed Changes 1. **Add `#[ts(use_ts_enum)]` to Rust enum** in [crates/db/src/models/execution_process.rs](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/91b8-adjust-useconver/crates/db/src/models/execution_process.rs#L31-L39) 2. **Regenerate TypeScript types** with `npm run generate-types` 3. **Fix the bug in useConversationHistory.ts** - remove `'created', 'queued'` from the check (they don't exist) 4. **Update frontend to use enum** instead of string literals **Proceed with this plan?** * Cleanup script changes for task attempt 91b81dd2-0f76-48f7-a309-683373d87d0d * Done! All changes complete: **Changes made:** 1. ✅ Added `#[ts(use_ts_enum)]` to Rust enum 2. ✅ Regenerated TypeScript types - now `export enum ExecutionProcessStatus` 3. ✅ Fixed bug: removed non-existent `'created', 'queued'` from status checks 4. ✅ Updated all frontend code to use `ExecutionProcessStatus.running` instead of string literals **Result:** TypeScript now has a proper enum with type safety and autocomplete, and the bug with checking for non-existent statuses is fixed. * remove unnecessary path
Get 10X more out of Claude Code, Gemini CLI, Codex, Amp and other coding agents...
Overview
AI coding agents are increasingly writing the world's code and human engineers now spend the majority of their time planning, reviewing, and orchestrating tasks. Vibe Kanban streamlines this process, enabling you to:
- Easily switch between different coding agents
- Orchestrate the execution of multiple coding agents in parallel or in sequence
- Quickly review work and start dev servers
- Track the status of tasks that your coding agents are working on
- Centralise configuration of coding agent MCP configs
You can watch a video overview here.
Installation
Make sure you have authenticated with your favourite coding agent. A full list of supported coding agents can be found in the docs. Then in your terminal run:
npx vibe-kanban
Documentation
Please head to the website for the latest documentation and user guides.
Support
We use GitHub Discussions for feature requests. Please open a discussion to create a feature request. For bugs please open an issue on this repo.
Contributing
We would prefer that ideas and changes are first raised with the core team via GitHub Discussions or Discord, where we can discuss implementation details and alignment with the existing roadmap. Please do not open PRs without first discussing your proposal with the team.
Development
Prerequisites
Additional development tools:
cargo install cargo-watch
cargo install sqlx-cli
Install dependencies:
pnpm i
Running the dev server
pnpm run dev
This will start the backend. A blank DB will be copied from the dev_assets_seed folder.
Building the frontend
To build just the frontend:
cd frontend
pnpm build
Build from source
- Run
build-npm-package.sh - In the
npx-clifolder runnpm pack - You can run your build with
npx [GENERATED FILE].tgz
Environment Variables
The following environment variables can be configured at build time or runtime:
| Variable | Type | Default | Description |
|---|---|---|---|
GITHUB_CLIENT_ID |
Build-time | Ov23li9bxz3kKfPOIsGm |
GitHub OAuth app client ID for authentication |
POSTHOG_API_KEY |
Build-time | Empty | PostHog analytics API key (disables analytics if empty) |
POSTHOG_API_ENDPOINT |
Build-time | Empty | PostHog analytics endpoint (disables analytics if empty) |
BACKEND_PORT |
Runtime | 0 (auto-assign) |
Backend server port |
FRONTEND_PORT |
Runtime | 3000 |
Frontend development server port |
HOST |
Runtime | 127.0.0.1 |
Backend server host |
DISABLE_WORKTREE_ORPHAN_CLEANUP |
Runtime | Not set | Disable git worktree cleanup (for debugging) |
Build-time variables must be set when running pnpm run build. Runtime variables are read when the application starts.
Custom GitHub OAuth App (Optional)
By default, Vibe Kanban uses Bloop AI's GitHub OAuth app for authentication. To use your own GitHub app for self-hosting or custom branding:
- Create a GitHub OAuth App at GitHub Developer Settings
- Enable "Device Flow" in the app settings
- Set scopes to include
user:email,repo - Build with your client ID:
GITHUB_CLIENT_ID=your_client_id_here pnpm run build
