Quick Start
Control your project while AI writes the code — without leaving the terminal.
When you work with AI agents it's easy to lose track of what's done, which branch it touched, and how many tokens you burned. zkb keeps that visible.
1. Install in seconds
Download the binary for macOS (arm64 or x86). No account, no Electron app, no cloud.
curl -fsSL https://zkb-alpha.vercel.app/install.sh | sh2. Initialize your roadmap
One command creates a
.roadmap.jsonnext to your code. You and your agents share the same source of truth.zkb init3. Work with your agents
Tell your agent (Claude Code, OpenCode, Cursor, Codex…) to update the roadmap as it goes. Or do it yourself:
zkb progress --task t1 --agent claude-code --tokens 12000 --done4. See where you stand
Phases, progress, who did what, on which branch, and token usage — all in the terminal.
zkb status zkb gantt5. Unlock the full view
History, full Gantt, cost estimates and exports. One-time payment, yours forever. The free tier covers init, status, phase, task, progress and doctor.
Agent prompt (copy & paste)
Hand this to Claude Code, OpenCode, Cursor or Codex and watch the roadmap update live.
Eres un agente que parte de un directorio vacío. El usuario quiere una todo list mínima. Tú la construyes y, en paralelo, dejas el trabajo mapeado en zkb para que lo vea en vivo en el navegador.
Habla con el usuario en español. Los comandos van exactamente como están escritos.
## Antes de escribir código
1. Si no existe `.roadmap.json` en este directorio ni en uno padre:
zkb init
2. Crea el mapa solo con la CLI. No edites `.roadmap.json`.
zkb phase add "Todo list" --start 2026-10-20 --end 2026-10-20 --status in_progress
zkb task add "Proyecto vacío que abre en el navegador" --phase phase-1 --agent opencode
zkb task add "Agregar una tarea" --phase phase-1 --agent opencode
zkb task add "Marcar una tarea como hecha" --phase phase-1 --agent opencode
zkb task add "Borrar una tarea" --phase phase-1 --agent opencode
Usa los ids que imprima el comando. Si no son phase-1 y t1…t4, usa los que salieron.
3. Arranca el tablero en segundo plano, una sola vez:
zkb serve
Si el puerto 8080 está ocupado, zkb serve --port 8787.
4. Dile al usuario, una sola vez, la URL que imprimió el comando (http://127.0.0.1:8080 o el puerto que hayas usado). Dile que la deje abierta: se actualiza sola.
Si init, task add, progress o serve responden que hace falta licencia, detente y dile que ejecute zkb activate. No sigas editando el JSON para saltarte eso.
## Mientras construyes
La app es un solo archivo HTML con CSS y JS dentro. Sin framework, sin backend, sin base de datos. Se abre en el navegador. Se puede agregar un texto, marcarlo hecho y borrarlo. La lista vive en localStorage. Estado vacío cuando no hay nada. Nada más.
Trabaja de a una tarea. Para cada id:
zkb progress --task <id> --agent opencode --status in_progress
haz solo esa tarea
zkb progress --task <id> --agent opencode --done
No abras la siguiente hasta haber cerrado la anterior. No uses zkb status ni zkb gantt para decidir qué sigue. Para mirar lo que queda abierto:
zkb context
No pongas --tokens si no tienes la cifra. No archives nada. No crees más fases ni más tareas.
## Al terminar
Corre zkb context. Dile al usuario cuántas tareas quedaron abiertas y recuérdale la URL. No le pegues el JSON. Si las cuatro están done, dilo en una línea.