npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

local-kanban

v2.0.0-beta.15

Published

A local kanban board for working in tandem with Claude Code: the kb CLI plus a web board, with an optional GitHub mirror (issues + Projects v2)

Downloads

2,977

Readme

Вы планируете и принимаете работу, Claude берёт её из очереди, делает и отчитывается. Всё лежит в одном файле SQLite на вашем компьютере и управляется через kb — CLI, который тратит мало токенов Claude. GitHub — необязательное зеркало: пока вы его не включите, ничего с компьютера не уходит.

[!NOTE] 2.0 в бете, и именно её ставит npm install -g local-kanban. Она каждый день работает на настоящих проектах. Доска обновляется на месте и сохраняет данные; остаться на последней 1.x — npm install -g [email protected]. Что-то сломалось? Заведите issue.

Быстрый старт

npm install -g local-kanban
local-kanban            # мастер настройки: хватит Enter-Enter-Enter
local-kanban start      # доска на http://localhost:3100

Нужен Node.js 22 или новее на macOS или Linux. Подробности — в разделе Установка.

Возможности

  • Лимиты в сайдбаре: пятичасовой и недельный лимиты подписки и расход токенов по каждой задаче.
  • Зеркало на GitHub: задача — issue, проект — GitHub Project, в одну сторону и в фоне. Выключено, пока не настроите.
  • Бэкапы: копия каждый день, копия перед каждой миграцией, и любую можно открыть второй доской рядом с живой.
  • Ручные задачи: метка noclaude не пускает вашу работу в метрики Claude, и Claude такую задачу не возьмёт.
  • Связи, подзадачи, чек-листы, картинки в комментариях, поиск, горячие клавиши — и всё это Claude читает через kb.
  • Русский и английский — по языку системы.
  • HTTP API и поток событий для своих ботов и статистики: docs/API.md.

Как этим пользоваться

  1. Пишешь задачу в Бэклог проекта — достаточно заголовка, описание можно добавить позже.
  2. Перекладываешь в «Сделать», когда задача готова к работе. Эта колонка и есть очередь.
  3. Жмёшь ▶ на колонке «Сделать» («Запустить эти задачи в Claude»). Claude сразу начинает работу прямо внутри доски: ничего не открывается, карточка показывает его экран на вкладке «Терминал», и на его вопросы отвечаешь там же. Если на машине нет tmux, доска открывает Claude в папке проекта — новую сессию в приложении Claude или Терминал с claude; решает Настройки → Claude Code → Запуск задач. У отдельной карточки свой ▶ в шапке. Кнопка копирования рядом даёт тот же текст, чтобы вставить его куда удобно. Запущенные задачи сразу уходят в «Подготовку» — кроме приложения Claude: туда доска только кладёт промпт, отправляешь его ты, и в «Подготовку» задачи переводит сам Claude.
  4. Дальше Claude ведёт задачу сам. Читает её, делает работу, по ходу пишет комментарии, коммитит и пушит, деплоит, если у проекта задан деплой-скилл, привязывает коммит к issue на GitHub, если включён синк, — и останавливается на «Проверяю». В «Готово» он не переводит ничего и никогда.
  5. Принимаешь ты. Смотришь, что получилось, и двигаешь карточку в «Готово» — или возвращаешь с замечанием. Это замечание Claude прочитает первым, когда возьмёт задачу снова. Пока Claude, которого запустила доска, ещё на месте и ждёт тебя, кнопка >_ рядом со стрелкой отправки комментария передаёт комментарий и ему — он продолжит в той же сессии. Принятая или отменённая задача закрывает этого Claude.

Приём, который сильно ускоряет. Дай «Проверяю» накопиться — десять, двадцать, тридцать карточек. Потом заведи на доске одну задачу: пройди всё в «Проверяю», попробуй сломать, что выдержало — переведи в «Готово». Claude разберёт всю колонку за один заход. Только запускай её в новом чате: сессия, которая только что писала этот код, — худший его проверяющий, потому что помнит, что хотела сделать, а не то, что получилось. Раздел «Claude проверить» в сайдбаре делает всё это одной кнопкой на проект: показывает, что лежит в «Проверяю», заводит такую задачу со списком внутри и запускает на неё свежий Claude — отчёт остаётся в карточке проверки.

Зачем

  • Очередь для Claude, а не просто доска. Статусы повторяют реальный цикл: бэклог → сделать → подготовка → делаю → деплою → проверяю → готово. Claude берёт следующую задачу через kb take, работает и останавливается на «Проверяю» — принимает всегда человек.
  • Локально прежде всего. Всё живёт в одном SQLite-файле на твоей машине. GitHub-синк опционален и выключен, пока не настроишь.
  • Честные метрики. Время считается только пока Claude реально работает; дашборд показывает streak, цикл задачи и что ждёт тебя.

Модель безопасности — прочитай сначала

Сервер слушает только 127.0.0.1, авторизации нет. Доска строго локальная: граница доверия — твоя машина. Никогда не выставляй порт наружу (никаких reverse proxy, 0.0.0.0, проброса портов). Сторонние интеграции запускаются на той же машине и ходят на 127.0.0.1 (см. docs/API.md).

Исключение одно — твой выключатель: «Настройки → Wi-Fi» открывает отдельный вход в локальной сети (порт + 10, KB_SHARE_PORT) для тех, кому ты покажешь QR-код. Пускает только ключ: он в ссылке QR-кода, а в браузере без ссылки его можно ввести руками. С ним гость может на доске всё то же, что и ты, — в том числе говорить с Claude на твоём компьютере. Соединение идёт простым HTTP: ключ не пускает посторонних, но не шифрует трафик, поэтому в сети с чужими людьми вход выключай. По умолчанию он закрыт; выключатель закрывает вход, а новый ключ выкидывает всех гостей.

Доска не хранит доступов. У проекта можно указать ssh-хост, куда он выкатывается, но ни ключ, ни пароль здесь не вводятся: доска просто запускает ssh <хост>, а кто ты, на каком порту и с каким ключом — решает твой собственный ~/.ssh/config, тот же файл, которым пользуется терминал. Пароль не подойдёт вовсе: доска подключается без запросов, значит нужен ключ. Проверка одной строкой: работает ssh <хост> в терминале — заработает и здесь.

Требования

  • Node.js ≥ 22 (macOS или Linux) — у большинства стоит 24 LTS или новее
  • Опционально, только для GitHub-синка: gh CLI с правом project: gh auth login && gh auth refresh -s project
  • Опционально, чтобы Claude запускался прямо внутри доски: Claude Code (claude) и tmux (brew install tmux на macOS)

Установка

npm install -g local-kanban
local-kanban            # мастер настройки
local-kanban start      # доска на http://localhost:3100

Мастер спросит порт, папку данных, нужен ли GitHub-синк и ставить ли в ~/.claude/skills два скилла для Claude Code — скилл самой доски и деплой-скилл. У каждого вопроса есть ответ по умолчанию, поэтому Enter-Enter-Enter достаточно. Он же создаст ecosystem.config.cjs для автозапуска через pm2.

У local-kanban start есть --port <N> и --data <путь>. Данные по умолчанию лежат в ~/.local-kanban, вне каталога пакета, поэтому обновление пакета никогда не трогает доску.

Из исходников:

git clone <адрес-репозитория> local-kanban && cd local-kanban
npm install
npx local-kanban     # мастер настройки (необязательно)
npm start            # доска на http://localhost:3100

Команда kb глобально: npm link (или npm install -g .).

Первый запуск покажет пустой дашборд с предложением создать демо-проект — один клик создаёт, один удаляет.

Переезжаете с vibe-kanban? Его «Export data» даёт zip; local-kanban import vibe-kanban-export-<дата>.zip (или «Настройки → Бэкапы → Перенести») кладёт на доску его проекты, задачи, родителей (связью «подзадача») и картинки. Статусы встают в колонки доски — «In progress» в «Сделать», свой статус в «Бэклог», с пометкой в описании; перенесённая однажды задача в следующий раз пропускается. --dry-run только считает.

Настройку может довести сам Claude

На последнем шаге мастера первого запуска показывается готовый промпт (на языке доски). Вставь его в Claude Code — он проверит, что работает kb, спросит, нужно ли зеркало в GitHub, заведёт первые проекты с их путями и деплоем и покажет результат. Тот же промпт лежит в Настройки → О доске, чтобы к нему можно было вернуться.

Скиллы Claude Code

В skills/ лежат два скилла:

  • skills/kanban — учит Claude рабочему циклу задач (kb take → работа → kb review);
  • skills/deploy — универсальный деплой от данных реестра проектов (kb info).

Установка — симлинк или копия:

ln -s "$(pwd)/skills/kanban" ~/.claude/skills/kanban
ln -s "$(pwd)/skills/deploy" ~/.claude/skills/deploy

Другие ИИ-клиенты через MCP (опционально)

Claude Code ведёт доску через kb. Для Claude Desktop, Cursor и других MCP-клиентов в пакете есть kb-mcp — MCP-сервер по stdio, тонкий слой над тем же API, только на 127.0.0.1. Инструменты: list_projects, list_tasks, get_task, create_task, update_task («Готово» и «Отменено» остаются твоим словом на доске), add_comment, start_task (Claude Code внутри доски на этой задаче). В настройках клиента:

{ "mcpServers": { "kanban": { "command": "kb-mcp", "env": { "KB_URL": "http://127.0.0.1:3100" } } } }

Подключить доску к Claude Code (опционально)

Одна команда настраивает оба пункта ниже — лимиты в сайдбаре и ответы Claude из карточки:

local-kanban hooks install     # из клона: node bin/local-kanban hooks install

Она показывает, что допишет в settings.json каталога Claude, и спрашивает разрешения; твои хуки и строка состояния остаются, прежний файл сохраняется в резервных копиях доски (где они, команда спрашивает у запущенной доски; доска не запущена — назови её каталог данных: --data <каталог>), а local-kanban hooks uninstall снимает ровно то, что добавила. Тот же шаг предлагает мастер установки.

Каталог Claude — ~/.claude, или $CLAUDE_CONFIG_DIR, если Claude Code перенесён туда. KB_CLAUDE_DIR важнее обоих — и для доски, и для local-kanban hooks: доска читает там сессии, переписки и скиллы Claude, а записи ложатся в его settings.json. Задай её, если доска работает в другом окружении, чем твой терминал (например под pm2), а каталог Claude Code — не ~/.claude: иначе записи лягут в файл, который твой Claude Code не читает.

На доске то же делает кнопка в Настройки → Claude Code — после того как покажет, что именно запишет, — и там же видно, что ещё доске нужно от Claude Code на этом компьютере: программа claude, tmux, приложение Claude, скилл доски и правда ли работают строка состояния и хук. У каждого недостающего — как это исправить. claude доска ищет на своём PATH, там, куда его кладут установщики, и — на Mac — внутри приложения Claude, у которого своя копия Claude Code; если нет нигде, раздел даёт команду установки одной строкой. Если досок на компьютере две, подключена может быть только одна: раздел называет доску, которая держит подключение, а Подключить спрашивает, прежде чем его перехватить. Выключатели Показывать на доске там же прячут расход Claude (блок на дашборде и строку в меню ⋯ карточки) и подвал с лимитами, если они тебе не нужны — например, когда работаешь в приложении Claude и подвал всегда пишет «нет данных».

Что именно она добавляет, если хочешь руками:

Лимиты в сайдбаре

Внизу сайдбара видно, сколько израсходовано из лимитов подписки Claude на 5 часов и на неделю. Claude Code отдаёт эти цифры только команде строки состояния, поэтому kb statusline берёт её JSON, отправляет лимиты доске и передаёт JSON дальше без изменений. Поставь её перед своей строкой состояния в ~/.claude/settings.json:

"statusLine": { "type": "command", "command": "kb statusline | node ~/.claude/my-statusline.js" }

Если твоя строка состояния — не одна команда (cd … && …, input=$(cat); …), пусть её запишет local-kanban hooks install: она берёт твою команду в скобки, чтобы JSON прочла вся она, и передаёт JSON дальше, даже когда kb не запускается.

Своей строки состояния нет — kb statusline --line печатает короткую: 5h 24% · 7d 41% · ctx 8%. Подвал показывает то, что прислала последняя сессия: перешёл в другой аккаунт Claude — видишь его цифры. Лимиты приходят подписчикам Pro и Max после первого ответа Claude в сессии. У приложения Claude строки состояния нет, поэтому доска, с которой работают только из приложения, показывает «нет данных».

Ответы Claude из карточки

Когда Claude Code собирается что-то у тебя спросить — разрешение, вопрос, одобрение плана, — доска может показать это в карточке задачи и принять ответ там. Окно Claude всё это время остаётся рабочим: чей ответ первый, тот и действует. Добавь хук PermissionRequest в ~/.claude/settings.json:

"hooks": { "PermissionRequest": [ { "matcher": "*", "hooks": [ { "type": "command", "command": "command -v kb >/dev/null && exec kb hook permission || true", "timeout": 1800 } ] } ] }

Хук сразу уступает, если доска не запущена или сессия не работает ни над одной задачей доски. Проверка вокруг kb держит Claude Code в тишине, когда доски уже нет (хук, который не запускается, — это сообщение об ошибке на каждом запросе разрешения), а exec ставит kb на место оболочки, так что ответ в окне самого Claude останавливает и kb. Каждый ответ с доски записывается в историю задачи; в GitHub он не уходит.

Ответы доска принимает со своей страницы: страница чужого сайта ответить не может. Программа на твоём компьютере — может: всё, что достаёт до порта доски, увидит ждущие запросы и ответит на них, в том числе сам Claude, если правила разрешений дают ему запускать curl без спроса. Пока доска подключена, не разрешай Claude сетевые команды к доске без спроса.

GitHub-синк (опционально)

Укажи owner и репозиторий для issues в Настройки → Синхронизация (или env KB_GH_OWNER / KB_GH_REPO). Без них доска работает в local-only режиме: без очереди и предупреждений. С ними каждая задача становится issue, а каждый проект получает GitHub Project kb: <slug> с теми же колонками. Синк односторонний (доска → GitHub), фоновый.

Issues всей доски лежат в ОДНОМ репозитории, а не по одному на проект, и создать его надо самому до того, как заполнять поля. Сделай его приватным: заголовки, описания и комментарии уезжают туда целиком, и это единственная функция, которая вообще что-то отправляет с твоей машины. gh должен быть авторизован со scope project (gh auth login && gh auth refresh -s project) - без него issue создастся, а карточка в Projects не появится, и понять причину будет непросто.

Обновление

Доска сама замечает новую версию и предлагает кнопку в Настройках → О доске: она ставит обновление тем способом, каким доска установлена, и под менеджером процессов перезапускается и перечитывает страницу сама. Если запускали руками — скажет, что обновление на месте, и подождёт, пока её запустят заново. Скиллы Claude Code, которые скопировала установка, едут вместе с ней: копия, совпадающая с версией доски, обновится, уже отличающаяся останется как есть, а Настройки → Claude Code скажут, если скилл доски — не её версия; Настройки → Скиллы возьмут версию доски одной кнопкой, прежний файл останется в бэкапах.

Руками. Установка из npm:

npm install -g local-kanban@latest
local-kanban skills          # обновить скиллы Claude Code — они копия, а не ссылка; заменённый файл остаётся в <данные>/backups/skills
pm2 restart kanban           # или останови `local-kanban start` и запусти заново: работающая доска ещё на старом коде

Клон репозитория:

npm run update   # git pull + npm install + pm2 restart (если применимо)

Обновления не трогают данные: data/ в .gitignore, миграции схемы прогоняются на старте автоматически — со снапшотом до миграции в data/backups/pre-migrate/.

Откат: останови сервер, восстанови свежий файл из data/backups/ (суточные) или data/backups/pre-migrate/ поверх data/kanban.db, затем git checkout <предыдущий тег> и запусти снова.

Релизы живут в main (с тегами); ежедневная разработка — в dev. Бета выходит так же, как релиз, поэтому latest и кнопка обновления приносят и её. Вернуться назад: npm install -g [email protected].

Как убрать доску

Сначала отключи её от Claude Code: Настройки → Claude Code → Отключить или local-kanban hooks uninstall. Если доска остановлена, команда попросит её папку данных — туда она кладёт копию settings.json: local-kanban hooks uninstall --data <папка данных>. Потом npm uninstall -g local-kanban (или удали клон) и, если больше не нужны, папку данных (по умолчанию ~/.local-kanban) и скиллы в ~/.claude/skills/kanban и ~/.claude/skills/deploy.

Удалил, не отключив? Claude Code работает и молчит — хук проверяет, что доска на месте, — но две записи остаются в ~/.claude/settings.json, а строка состояния, которую печатала сама доска, становится пустой. Убери их руками: хук PermissionRequest, в команде которого есть kb hook permission, и из statusLine часть доски перед твоей командой — строку { … kb statusline 2>/dev/null || cat; } | { и закрывающую } — или весь statusLine, если его команда — просто … kb statusline --line.

Переменные окружения

| Переменная | Дефолт | Смысл | |---|---|---| | PORT | 3100 | HTTP-порт (привязан к 127.0.0.1) | | KB_DATA_DIR | ./data | папка данных (SQLite, вложения, бэкапы) | | KB_LOCAL_ROOT | ~/claude-projects | корень локальных проектов-папок | | KB_URL | http://127.0.0.1:3100 | адрес доски для CLI kb | | KB_GH_OWNER / KB_GH_REPO | — | цель GitHub-синка; пусто = синк выключен (можно задать и в Настройках) | | KB_PANEL_URL | — | свой HTTP-источник статусов сервисов; пусто = локальный pm2 jlist | | KB_PANEL_INFO | — | опциональный info.json внешней панели для синка категорий | | KB_SSE_MAX | 20 | потолок одновременных SSE-соединений | | KB_SHARE_PORT | PORT + 10 | порт входа по Wi-Fi («Настройки → Wi-Fi»), закрыт, пока не включишь | | KB_SKILLS_EXTRA | — | дополнительные корни скиллов через : | | KB_GH_BIN | — | путь к gh, если он лежит не в обычном месте (Homebrew, /usr/bin, ~/.local/bin) | | KB_CLAUDE_DIR | $CLAUDE_CONFIG_DIR, иначе ~/.claude | каталог Claude Code: доска читает там сессии, переписки и скиллы, а local-kanban hooks и «Настройки → Claude Code» пишут его settings.json; важнее CLAUDE_CONFIG_DIR |

Старые имена PANEL_URL и PANEL_INFO (без префикса) продолжают работать как запасные.

Метрики и метка noclaude

Задачи, сделанные руками (без Claude), помечаются меткой noclaude — они считаются на дашборде отдельно и не подмешиваются в метрики Claude (время работы, цикл, доведено %), которые иначе исказились бы нулевым временем. Метка необязательна, можно ставить позже. Ручным задачам разрешён прямой переход в «Проверяю»/«Готово».

Расширение

Полный HTTP API и SSE-поток событий — официальная точка расширения: боты, статистика и интеграции пишутся отдельными программами, без плагинов внутри страницы. См. docs/API.md.

Разработка

node --test   # БД изолируется через KB_DATA_DIR

Дев-окружение, флоу веток и правило миграций — в CONTRIBUTING.md. Архитектура — в ARCHITECTURE.md, что менялось между версиями — в CHANGELOG.md.

Язык интерфейса

Исходный язык интерфейса — английский, русский приходит переводом. Доска следует языку системы и переключается в Настройки → Основные; строка без перевода остаётся английской, а не утекает в чужую локаль.

Использование в работе

Доска под лицензией MIT и бесплатна для всех: ничего не отключено и нечего активировать. Если она зарабатывает тебе деньги — в компании или на платных заказах — $12 в год за человека помогают её поддерживать. Это просьба, а не правило: docs/COMMERCIAL.md.

Планы

Не обещания — направление, в котором проект движется:

  • Больше языков интерфейса. Английский и русский уже есть. Словарь лежит в одном файле, так что перевод — это пул-реквест, а не проект.
  • Работа с Codex так же, как сейчас с Claude Code. CLI kb и модель статусов не привязаны к Claude — привязаны только скиллы.
  • Плагины по-честному — манифест с заявленными правами и изолированный фрейм, а не галочка «доверяю». Плагин, который может читать твои задачи и ходить в сеть, обязан сказать об этом до запуска, а не после.
  • Доска на команду — для начала в пределах одной локальной сети и без превращения локального инструмента в сервис, которому нужны аккаунты, сервер и кто-то, кто его поддерживает.
  • Подключение CLI прямо в доску, чтобы агентом можно было управлять из карточки, а не из соседнего окна терминала.

И самое дальнее: устроиться на работу мечты в Anthropic и сделать это для всех пользователей.

Лицензия

MIT.