Multi-agent development on a Kanban board, with semantic and vector memory (Qdrant memory Graph) shared across agent stages.
A self-hosted cockpit for single-developer AI orchestration — persistent graph memory (mem0), 10+ coding agents, Gitea/Forgejo PRs, a terminal cockpit, a Telegram bridge, and usage observability.
Following the shutdown of Bloop's hosted servers, developers were left with orphaned workspaces and broken dependencies.
vibe-kanban-alternative is an actively maintained, independent evolution of BloopAI/vibe-kanban and dexloom/vibe-kanban-indie. It is built for a single-developer workflow: no cloud accounts, no team auth, no remote telemetry. Everything runs on your own machine, and you orchestrate a fleet of coding agents from the browser, a terminal (TUI), or a phone (Telegram).

mem0 with Qdrant and a NetworkX graphSettings → Usage dashboard: tokens, activity heatmaps, per-agent breakdownstream-json parsing, tool-use cards, reasoning-effort controlSoftware engineering increasingly means directing coding agents — planning work, spawning a model to implement it, reviewing its diff, and shipping. The bottleneck is no longer typing code; it's orchestrating, reviewing, and keeping many agent sessions coherent. vibe-kanban-alternative is built to make that process fast, local, and personal: a single developer, entirely on their own machine, with no team, cloud, or account required.
At its core it's a kanban board that plans and tracks agent work, plus a workspace runtime that turns each card into a real branch, terminal, and dev server where any of 10+ coding agents (Claude Code, OpenCode, Qwen Code, Codex, Gemini CLI, Antigravity, Copilot, Amp, Cursor, Droid, CCR) executes the plan:
Settings → Usage dashboard with per-day activity, per-agent execution bars, extraction-token monitoring, and project progress.
Launch the full cockpit with a single command — no install, no account, no cloud setup:
npx vibe-kanban-alternative
This downloads prebuilt binaries and starts the local web cockpit at http://localhost:3001 (backend on :3002).
vibe-kanban-alternative ships with a first-class mem0 integration, giving every coding agent driving a workspace a durable, semantic memory of the repositories it works in.
memory_search with a query scoped to the card's files, modules, or area before starting — a targeted lookup, not a full dump.memory_save; ephemeral chatter is filtered out.memory_search and memory_save as first-class Model Context Protocol (MCP) tools./data/graphs/*.graphml) so knowledge structures survive container reboots.To minimize token costs on providers with prompt caching (Anthropic, OpenRouter, DeepSeek):
memory_search and memory_save execute as MCP tool calls scoped to the current card, keeping the static system/task prefix identical (and cache-hit) across workspace starts.flowchart TB
Mem0["Mem0 Context<br/>Vector and semantic memory"]
Worktree["Worktree<br/>Input"]
A1["Agent 1<br/>Gemini<br/>Research"]
A2["Agent 2<br/>Opus<br/>Planner"]
A3["Agent 3<br/>Qwen3.8 Local<br/>Coding"]
A4["Agent 4<br/>Opencode<br/>Review"]
Merge["Merge<br/>Output"]
Worktree --> A1
A1 --> A2
A2 --> A3
A3 --> A4
A4 --> Merge
A1 -.->|write| Mem0
Mem0 -.->|fetch| A1
A2 -.->|write| Mem0
Mem0 -.->|fetch| A2
A3 -.->|write| Mem0
Mem0 -.->|fetch| A3
A4 -.->|write| Mem0
Mem0 -.->|fetch| A4
style Mem0 fill:#7d6608,stroke:#f9e79f,stroke-width:2px,color:#ffffff
style Worktree fill:#424949,stroke:#d5dbdb,stroke-width:2px,color:#ffffff
style A1 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style A2 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style A3 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style A4 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style Merge fill:#1b4f3d,stroke:#a9dfbf,stroke-width:2px,color:#ffffff
The project memory layer runs on a local Docker stack (mem0-vk): a mem0 API server on :8000, a Qdrant vector store, and a Python embeddings + NetworkX graph service.
For the simplest installation, run the all-in-one Docker Hub image (API, Qdrant, Redis, local embeddings, and graph in one container):
docker run -d \
--name vk-mem0 \
--restart unless-stopped \
-p 8000:8000 \
-e GROQ_API_KEY='your-key' \
-v vk_mem0_data:/data \
datyapoint/vk-mem0:latest
The local embeddings model requires no API key. Settings changed through Settings → Memory persist in the same /data volume.
Updating the image does not delete data as long as you reuse the same /data volume. Stop and remove only the container, then start the new image with the same volume:
docker pull datyapoint/vk-mem0:latest
docker rm -f vk-mem0
docker run -d \
--name vk-mem0 \
--restart unless-stopped \
-p 8000:8000 \
-v vk_mem0_data:/data \
datyapoint/vk-mem0:latest
docker rm -f removes the container only. It does not remove vk_mem0_data. Never use docker volume rm, docker volume prune, or docker compose down -v when you want to keep memories.
The original Compose deployment stores data in three volumes. Before migrating, make a backup and stop the old stack without removing its volumes:
cd mem0-vk
mkdir -p backups
docker run --rm -v mem0-vk_graph_data:/source -v "$PWD/backups":/backup alpine \
tar czf /backup/mem0-graph-data.tgz -C /source .
docker run --rm -v mem0-vk_qdrant_data:/source -v "$PWD/backups":/backup alpine \
tar czf /backup/mem0-qdrant-data.tgz -C /source .
docker run --rm -v mem0-vk_redis_data:/source -v "$PWD/backups":/backup alpine \
tar czf /backup/mem0-redis-data.tgz -C /source .
docker compose down
Start the all-in-one image with the existing volumes mounted at the paths it expects:
docker run -d \
--name vk-mem0 \
--restart unless-stopped \
-p 8000:8000 \
-v mem0-vk_graph_data:/data \
-v mem0-vk_qdrant_data:/data/qdrant \
-v mem0-vk_redis_data:/data/redis \
datyapoint/vk-mem0:latest
Wait for healthy before using the UI:
docker ps --filter name=vk-mem0
curl http://localhost:8000/health
This migration reuses the existing graph, Qdrant, Redis, and /data/config.json contents. To roll back, remove only the new container and start the original Compose stack again; do not delete the three volumes.
For development or independently managed services, use the multi-container stack:
cd mem0-vk
cp .env.example .env # then set an extraction LLM key (see below)
docker compose up -d --build
It can also be configured from the app: open Settings → Memory to manage the graph at runtime, configure extraction providers (Groq, OpenRouter, local llama), and view token usage.
vibe-kanban-alternative integrates natively with 10+ coding agents:
agy) (new)
view_file), search (grep_search, find_by_name), bash commands (run_command), and file edits (write_to_file, replace_file_content).Low, Medium, High) with automatic fallback for gemini-3.7-flash.--dangerously-skip-permissions).ArrowUp / ArrowDown)
ArrowUp at the start of the chat box to cycle backward through previously sent commands and prompts.ArrowDown to cycle forward and restore your uncommitted draft text.Enter mode — press Enter to send instantly; use Ctrl + Enter, Cmd + Enter, or Shift + Enter to insert a newline.ModifierEnter mode — press Cmd/Ctrl + Enter to send; Enter for a newline.A per-machine activity dashboard in Settings → Usage shows how your agent time is spent, straight from the local database — no cloud telemetry:

vibe-tui is a terminal cockpit for the backend — list workspaces and sessions, watch live agent transcripts, manage a kanban board for local projects, and approve, deny, or answer the things agents block on, all without leaving the terminal:
cargo run -p tui
a approvals inbox · ? help · q quit↑↓/jk move · ⇥ switch pane · ⏎ open · n new task · b board · r refresh⇥/←→ move focus · ↑↓/jk navigate · f follow · i message agent · s stop · esc back⇥ focus · ↑↓ select repo · m merge · R rebase · P create PR · u push↑↓ move · y approve · d deny · ⏎ answer · esc back←→ column · ↑↓ card · [ ] move card · n new · e edit · d delete · w workspacevibe-telegram-bridge is a send-only daemon that streams coding-agent escalations to a Telegram supergroup with topics, so a blocked agent can be unblocked remotely from your phone:
# ~/.vibe-kanban/telegram.toml
enabled = true
bot_token = "123456:ABC..."
chat_id = "-1001234567890"
per_worktree_topics = true
cargo run -p telegram-bridge
Full REST API integration alongside GitHub:
github.com remotes use the gh CLI; custom hosts use the Gitea REST API.~/.vibe-kanban/gitea.toml or GITEA_TOKEN.For development, custom ports, a local mem0 vector store, or custom agent configuration, run the project from source.
Prerequisites
1. Clone and install
git clone https://github.com/flashlan/vibe-kanban-alternative.git
cd vibe-kanban-alternative
pnpm i
2. Configure environment variables
cp .env.example .env
Then open .env and set the values relevant to your setup:
# ==========================================
# CORE SERVER CONFIGURATION
# ==========================================
PORT=3000
HOST=localhost
NODE_ENV=development
# ==========================================
# MEM0 LONG-TERM MEMORY SETTINGS
# ==========================================
MEM0_ENABLED=true
MEM0_API_KEY=your_mem0_api_key_here
# If running local embeddings/vector store:
# MEM0_VECTOR_STORE=qdrant
# MEM0_HOST=http://localhost:6333
# ==========================================
# AGENT API KEYS & RUNTIMES
# ==========================================
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=...
# Antigravity (AGY) Specific Settings
AGY_CLI_PATH=/usr/local/bin/agy
AGY_DEFAULT_TEMPERATURE=0.2
# ==========================================
# METRICS & TELEMETRY
# ==========================================
ENABLE_METRICS_DASHBOARD=true
METRICS_STORAGE_PATH=./data/metrics.sqlite
# ==========================================
# BACKUP CONFIGURATION
# ==========================================
BACKUP_ENABLED=true
BACKUP_INTERVAL_MINUTES=30
BACKUP_STORAGE_PATH=./backups
3. Start the project memory stack (optional, recommended)
cd mem0-vk && cp .env.example .env && docker compose up -d --build && cd ..
4. Start the development cockpit
./restart.sh
Frontend runs on :3001, backend on :3002.
Apache 2.0. See LICENSE for details.
(top 30 of 64)
TypeScript
46.7%
Rust
45.6%
Swift
4.6%
CSS
1.3%
JavaScript
1.1%
Multi-agent development on a Kanban board, with semantic and vector memory (Qdrant memory Graph) shared across agent stages.
A self-hosted cockpit for single-developer AI orchestration — persistent graph memory (mem0), 10+ coding agents, Gitea/Forgejo PRs, a terminal cockpit, a Telegram bridge, and usage observability.
Following the shutdown of Bloop's hosted servers, developers were left with orphaned workspaces and broken dependencies.
vibe-kanban-alternative is an actively maintained, independent evolution of BloopAI/vibe-kanban and dexloom/vibe-kanban-indie. It is built for a single-developer workflow: no cloud accounts, no team auth, no remote telemetry. Everything runs on your own machine, and you orchestrate a fleet of coding agents from the browser, a terminal (TUI), or a phone (Telegram).

mem0 with Qdrant and a NetworkX graphSettings → Usage dashboard: tokens, activity heatmaps, per-agent breakdownstream-json parsing, tool-use cards, reasoning-effort controlSoftware engineering increasingly means directing coding agents — planning work, spawning a model to implement it, reviewing its diff, and shipping. The bottleneck is no longer typing code; it's orchestrating, reviewing, and keeping many agent sessions coherent. vibe-kanban-alternative is built to make that process fast, local, and personal: a single developer, entirely on their own machine, with no team, cloud, or account required.
At its core it's a kanban board that plans and tracks agent work, plus a workspace runtime that turns each card into a real branch, terminal, and dev server where any of 10+ coding agents (Claude Code, OpenCode, Qwen Code, Codex, Gemini CLI, Antigravity, Copilot, Amp, Cursor, Droid, CCR) executes the plan:
Settings → Usage dashboard with per-day activity, per-agent execution bars, extraction-token monitoring, and project progress.
Launch the full cockpit with a single command — no install, no account, no cloud setup:
npx vibe-kanban-alternative
This downloads prebuilt binaries and starts the local web cockpit at http://localhost:3001 (backend on :3002).
vibe-kanban-alternative ships with a first-class mem0 integration, giving every coding agent driving a workspace a durable, semantic memory of the repositories it works in.
memory_search with a query scoped to the card's files, modules, or area before starting — a targeted lookup, not a full dump.memory_save; ephemeral chatter is filtered out.memory_search and memory_save as first-class Model Context Protocol (MCP) tools./data/graphs/*.graphml) so knowledge structures survive container reboots.To minimize token costs on providers with prompt caching (Anthropic, OpenRouter, DeepSeek):
memory_search and memory_save execute as MCP tool calls scoped to the current card, keeping the static system/task prefix identical (and cache-hit) across workspace starts.flowchart TB
Mem0["Mem0 Context<br/>Vector and semantic memory"]
Worktree["Worktree<br/>Input"]
A1["Agent 1<br/>Gemini<br/>Research"]
A2["Agent 2<br/>Opus<br/>Planner"]
A3["Agent 3<br/>Qwen3.8 Local<br/>Coding"]
A4["Agent 4<br/>Opencode<br/>Review"]
Merge["Merge<br/>Output"]
Worktree --> A1
A1 --> A2
A2 --> A3
A3 --> A4
A4 --> Merge
A1 -.->|write| Mem0
Mem0 -.->|fetch| A1
A2 -.->|write| Mem0
Mem0 -.->|fetch| A2
A3 -.->|write| Mem0
Mem0 -.->|fetch| A3
A4 -.->|write| Mem0
Mem0 -.->|fetch| A4
style Mem0 fill:#7d6608,stroke:#f9e79f,stroke-width:2px,color:#ffffff
style Worktree fill:#424949,stroke:#d5dbdb,stroke-width:2px,color:#ffffff
style A1 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style A2 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style A3 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style A4 fill:#154360,stroke:#d6eaf8,stroke-width:2px,color:#ffffff
style Merge fill:#1b4f3d,stroke:#a9dfbf,stroke-width:2px,color:#ffffff
The project memory layer runs on a local Docker stack (mem0-vk): a mem0 API server on :8000, a Qdrant vector store, and a Python embeddings + NetworkX graph service.
For the simplest installation, run the all-in-one Docker Hub image (API, Qdrant, Redis, local embeddings, and graph in one container):
docker run -d \
--name vk-mem0 \
--restart unless-stopped \
-p 8000:8000 \
-e GROQ_API_KEY='your-key' \
-v vk_mem0_data:/data \
datyapoint/vk-mem0:latest
The local embeddings model requires no API key. Settings changed through Settings → Memory persist in the same /data volume.
Updating the image does not delete data as long as you reuse the same /data volume. Stop and remove only the container, then start the new image with the same volume:
docker pull datyapoint/vk-mem0:latest
docker rm -f vk-mem0
docker run -d \
--name vk-mem0 \
--restart unless-stopped \
-p 8000:8000 \
-v vk_mem0_data:/data \
datyapoint/vk-mem0:latest
docker rm -f removes the container only. It does not remove vk_mem0_data. Never use docker volume rm, docker volume prune, or docker compose down -v when you want to keep memories.
The original Compose deployment stores data in three volumes. Before migrating, make a backup and stop the old stack without removing its volumes:
cd mem0-vk
mkdir -p backups
docker run --rm -v mem0-vk_graph_data:/source -v "$PWD/backups":/backup alpine \
tar czf /backup/mem0-graph-data.tgz -C /source .
docker run --rm -v mem0-vk_qdrant_data:/source -v "$PWD/backups":/backup alpine \
tar czf /backup/mem0-qdrant-data.tgz -C /source .
docker run --rm -v mem0-vk_redis_data:/source -v "$PWD/backups":/backup alpine \
tar czf /backup/mem0-redis-data.tgz -C /source .
docker compose down
Start the all-in-one image with the existing volumes mounted at the paths it expects:
docker run -d \
--name vk-mem0 \
--restart unless-stopped \
-p 8000:8000 \
-v mem0-vk_graph_data:/data \
-v mem0-vk_qdrant_data:/data/qdrant \
-v mem0-vk_redis_data:/data/redis \
datyapoint/vk-mem0:latest
Wait for healthy before using the UI:
docker ps --filter name=vk-mem0
curl http://localhost:8000/health
This migration reuses the existing graph, Qdrant, Redis, and /data/config.json contents. To roll back, remove only the new container and start the original Compose stack again; do not delete the three volumes.
For development or independently managed services, use the multi-container stack:
cd mem0-vk
cp .env.example .env # then set an extraction LLM key (see below)
docker compose up -d --build
It can also be configured from the app: open Settings → Memory to manage the graph at runtime, configure extraction providers (Groq, OpenRouter, local llama), and view token usage.
vibe-kanban-alternative integrates natively with 10+ coding agents:
agy) (new)
view_file), search (grep_search, find_by_name), bash commands (run_command), and file edits (write_to_file, replace_file_content).Low, Medium, High) with automatic fallback for gemini-3.7-flash.--dangerously-skip-permissions).ArrowUp / ArrowDown)
ArrowUp at the start of the chat box to cycle backward through previously sent commands and prompts.ArrowDown to cycle forward and restore your uncommitted draft text.Enter mode — press Enter to send instantly; use Ctrl + Enter, Cmd + Enter, or Shift + Enter to insert a newline.ModifierEnter mode — press Cmd/Ctrl + Enter to send; Enter for a newline.A per-machine activity dashboard in Settings → Usage shows how your agent time is spent, straight from the local database — no cloud telemetry:

vibe-tui is a terminal cockpit for the backend — list workspaces and sessions, watch live agent transcripts, manage a kanban board for local projects, and approve, deny, or answer the things agents block on, all without leaving the terminal:
cargo run -p tui
a approvals inbox · ? help · q quit↑↓/jk move · ⇥ switch pane · ⏎ open · n new task · b board · r refresh⇥/←→ move focus · ↑↓/jk navigate · f follow · i message agent · s stop · esc back⇥ focus · ↑↓ select repo · m merge · R rebase · P create PR · u push↑↓ move · y approve · d deny · ⏎ answer · esc back←→ column · ↑↓ card · [ ] move card · n new · e edit · d delete · w workspacevibe-telegram-bridge is a send-only daemon that streams coding-agent escalations to a Telegram supergroup with topics, so a blocked agent can be unblocked remotely from your phone:
# ~/.vibe-kanban/telegram.toml
enabled = true
bot_token = "123456:ABC..."
chat_id = "-1001234567890"
per_worktree_topics = true
cargo run -p telegram-bridge
Full REST API integration alongside GitHub:
github.com remotes use the gh CLI; custom hosts use the Gitea REST API.~/.vibe-kanban/gitea.toml or GITEA_TOKEN.For development, custom ports, a local mem0 vector store, or custom agent configuration, run the project from source.
Prerequisites
1. Clone and install
git clone https://github.com/flashlan/vibe-kanban-alternative.git
cd vibe-kanban-alternative
pnpm i
2. Configure environment variables
cp .env.example .env
Then open .env and set the values relevant to your setup:
# ==========================================
# CORE SERVER CONFIGURATION
# ==========================================
PORT=3000
HOST=localhost
NODE_ENV=development
# ==========================================
# MEM0 LONG-TERM MEMORY SETTINGS
# ==========================================
MEM0_ENABLED=true
MEM0_API_KEY=your_mem0_api_key_here
# If running local embeddings/vector store:
# MEM0_VECTOR_STORE=qdrant
# MEM0_HOST=http://localhost:6333
# ==========================================
# AGENT API KEYS & RUNTIMES
# ==========================================
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=...
# Antigravity (AGY) Specific Settings
AGY_CLI_PATH=/usr/local/bin/agy
AGY_DEFAULT_TEMPERATURE=0.2
# ==========================================
# METRICS & TELEMETRY
# ==========================================
ENABLE_METRICS_DASHBOARD=true
METRICS_STORAGE_PATH=./data/metrics.sqlite
# ==========================================
# BACKUP CONFIGURATION
# ==========================================
BACKUP_ENABLED=true
BACKUP_INTERVAL_MINUTES=30
BACKUP_STORAGE_PATH=./backups
3. Start the project memory stack (optional, recommended)
cd mem0-vk && cp .env.example .env && docker compose up -d --build && cd ..
4. Start the development cockpit
./restart.sh
Frontend runs on :3001, backend on :3002.
Apache 2.0. See LICENSE for details.
(top 30 of 64)
TypeScript
46.7%
Rust
45.6%
Swift
4.6%
CSS
1.3%
JavaScript
1.1%