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

@kernelonpanic/kitcode

v1.3.1

Published

Terminal coding agent with a config you never have to write by hand

Readme

KitCode

English · Русский

  ╱\_╱\
 ( o.o )
  > ^ <

KitCode — терминальный агент для работы с кодом. Он читает и изменяет файлы, ищет по проекту, запускает команды, подключает внешние инструменты через MCP и сохраняет историю сессий.

Интерфейс построен на TypeScript, React и Ink. Поддерживаются Anthropic API и OpenAI-совместимые провайдеры, включая OpenRouter и локальные серверы.

Возможности

  • потоковые ответы и отображение reasoning;
  • чтение, создание и точечное редактирование файлов;
  • поиск по именам и содержимому файлов;
  • запуск shell-команд с подтверждением;
  • режимы normal, accept и plan;
  • продолжение и восстановление прошлых сессий с обычным scrollback терминала;
  • поиск по сессиям, переименование, удаление и экспорт в Markdown;
  • история введённых сообщений по клавишам ↑ и ↓;
  • очередь сообщений, пока агент занят;
  • вложения PNG, JPEG, GIF, WebP и текстовых UTF-8 файлов;
  • ручное и автоматическое сжатие старого контекста;
  • индикатор токенов, стоимости, точного заполнения контекста и rate limits провайдера;
  • автоматические чекпоинты файлов и команда /undo;
  • автоматическое определение проверок проекта после правок;
  • переключение моделей и провайдеров из TUI;
  • добавление, включение, выключение и удаление MCP без перезапуска, skills и субагенты;
  • команда /checker для проверки runtime, провайдера, сессии, контекста и MCP;
  • русский и английский интерфейс, настраиваемый цвет темы.

Требования

  • Node.js 22 или новее;
  • npm.

Установка

npm i -g @kernelonpanic/kitcode

Установка из исходников

git clone https://github.com/KernelEditor/KitCode.git
cd KitCode
npm install
npm run build
npm link

После npm link команда kitcode доступна глобально. Для запуска без глобальной установки:

npm run dev

Первый запуск

kitcode

При первом запуске KitCode предложит выбрать язык, ввести базовый URL API и ключ. Затем он определит тип провайдера, загрузит доступные модели и откроет основное окно агента.

Примеры базовых URL:

https://api.anthropic.com
https://openrouter.ai/api/v1
http://localhost:11434/v1

Командная строка

| Команда | Назначение | | --- | --- | | kitcode | Запустить TUI в текущей директории. | | kitcode -c | Продолжить последнюю сессию этого проекта. | | kitcode -r <id> | Восстановить сессию по идентификатору. | | kitcode --cwd <path> | Использовать другую рабочую директорию. | | kitcode --model <provider/model> | Запуститься с выбранной моделью. | | kitcode --mode <normal|accept|plan> | Выбрать начальный режим работы. | | kitcode sessions | Показать сохранённые сессии. | | kitcode ask "вопрос" | Выполнить один запрос без TUI. | | kitcode add <url> | Добавить провайдера; ключ вводится в скрытом поле. | | kitcode add <url> --key-env <name> | Прочитать ключ из переменной окружения. | | kitcode trust | Включить конфиг и skills текущего проекта. | | kitcode config | Показать расположение конфига и ключей. | | kitcode config --local | Создать конфиг проекта ./kitcode.json. | | kitcode prompt list | Показать сохранённые промты. | | kitcode prompt rm <slug> | Удалить сохранённый промт. |

Команды внутри TUI

Нажмите /, чтобы открыть список команд.

| Команда | Назначение | | --- | --- | | /model | Выбрать модель. | | /provider | Переключить провайдера. | | /login · /logout [provider] | Добавить провайдера или выбрать конкретный API для выхода. | | /key [provider] | Сменить ключ провайдера. | | /refresh [provider] | Перечитать список моделей провайдера в обход суточного кеша. | | /effort [auto|low|medium|high|xhigh|max] · /thinking | Выбрать effort и настроить reasoning. | | /memory show · /memory set <текст> · /memory clear | Просмотреть, заменить или очистить постоянные заметки проекта. | | /resume · /clear | Восстановить сессию или начать новую. | | /sessions | Найти сессию и открыть, переименовать, удалить или экспортировать её. | | /sessions list | Показать все сохранённые сессии. | | /sessions rename <id> <название> | Переименовать сохранённую сессию. | | /sessions delete <id> | Удалить сохранённую сессию. | | /sessions delete all | Удалить все сохранённые чаты после двух отдельных подтверждений. | | /sessions export <id> [путь] | Экспортировать сессию в приватный Markdown-файл (по умолчанию .kitcode-exports/). | | /attach <путь> · /attach clipboard · /attach clear | Управлять вложениями следующего сообщения; введите @ в строке ввода для поиска и прикрепления файла проекта. | | /compact | Заменить старую часть контекста краткой сводкой модели. | | /update | Проверить новую версию KitCode в npm. | | /subagents | Показать текущее количество активных суб-агентов. | | /undo | Откатить встроенные правки файлов из последнего сообщения. | | /usage | Показать токены, запросы, стоимость, доступный баланс и rate limits, если API их отдаёт. | | /checker | Проверить настройку и список моделей без платного chat-запроса. | | /prompt | Вставить сохранённый промт. | | /prompt save <name> | Сохранить последнее сообщение как промт. | | /prompt delete <name> | Удалить сохранённый промт. | | /skills · /mcp list | Показать skills и состояние MCP. | | /mcp add <имя> <url> | Добавить и сразу подключить MCP-сервер. | | /mcp add <имя> -- <команда> [аргументы] | Добавить и подключить локальный MCP-сервер. | | /mcp enable <имя> · /mcp disable <имя> | Подключить или отключить MCP без удаления. | | /mcp delete <имя> | Отключить и удалить MCP-сервер. | | /theme · /lang | Изменить тему или язык. | | /config | Показать активный конфиг. | | /bypass | Переключить работу без запросов подтверждения. | | /help · /exit | Показать помощь или выйти. |

Клавиши

| Клавиша | Действие | | --- | --- | | Enter | Отправить сообщение или выбрать пункт. | | ↑ / ↓ | Листать историю сообщений или пункты меню. | | Tab | Дополнить slash-команду или выбранный файл после @. | | Shift+Tab | Переключить режим normal → accept → plan. | | Ctrl+V / Cmd+V | Прикрепить картинку из системного буфера; явный запасной вариант — /attach clipboard. | | Esc | Остановить текущий запрос или закрыть окно. |

Сообщения можно вводить, пока агент работает: они попадут в очередь и выполнятся по порядку.

Режимы

  • normal — изменения файлов, shell и MCP при необходимости запрашивают подтверждение;
  • accept — изменения файлов применяются автоматически;
  • plan — агент исследует проект и отвечает планом без изменений.

Текущий режим, модель и usage отображаются в нижней панели, а заполняющаяся слева направо колба контекста — справа. До 60% она зелёная, затем жёлтая, а с 85% — красная. ctx ? означает, что провайдер ещё не вернул точный usage для текущей модели. Под колбой показывается количество подключённых MCP. Завершённый вывод переносится в обычный scrollback терминала, поэтому историю можно плавно листать даже во время потокового ответа.

При достижении 80% известного окна KitCode автоматически сворачивает старые сообщения в сводку, оставляя последние два пользовательских хода. Команда /compact запускает это вручную.

Перед изменением файла встроенными инструментами write и edit KitCode создаёт приватный чекпоинт. Команда /undo восстанавливает последний чекпоинт и не перезаписывает более свежие ручные изменения. После правок KitCode определяет стандартные команды проекта — например lint, typecheck и test — и перед запуском показывает их для подтверждения.

Reasoning effort

Откройте /effort для выбора в меню или используйте /effort high, чтобы задать уровень сразу. Команда показывает выбранный уровень и значение, которое KitCode отправит API для текущей переписки. Это проверяет кодирование запроса, но не гарантирует, что шлюз провайдера применит параметр.

auto выбирает medium для коротких общих запросов и high для длинных сообщений или задач с признаками исправления, тестирования и реализации. Это локальная эвристика, а не оценка сложности моделью. Ручной уровень отключает эвристику. Для исходного GPT-5, GPT-5.1 и o-серии KitCode сводит xhigh и max к high; для GPT-5.2–5.4 max сводится к xhigh. Для неизвестных OpenAI-совместимых моделей параметр не отправляется. Anthropic получает выбранный уровень в output_config. Реальная поддержка зависит от модели и провайдера.

Память проекта

Заметки проекта сохраняются между чатами, /clear и перезапусками:

/memory show
/memory set Запускать npm test перед коммитом. Ченджлог публиковать только в GitHub Release.
/memory clear

set заменяет всю заметку; clear запрашивает подтверждение. Лимит — 16 000 символов. Файлы хранятся в ~/.kitcode/memory/, отдельно для каждого канонического пути проекта.

Агент тоже может использовать инструмент memory: читать, добавлять, заменять и удалять записи. Для изменений он обязан указать источник: инструкцию пользователя или подтверждение из файла либо инструмента. В транскрипте показывается diff. Точная замена и удаление защищают соседние записи. В обычном и accept-режимах инструмент разрешён по умолчанию. Ограничьте его через permissions.memory значением ask или deny. Plan-режим блокирует инструмент.

Агент сохраняет подтверждённые факты проекта, явные предпочтения и принятые решения. Он должен проверять старые заметки по текущим файлам. Временный прогресс остаётся в переписке. Redaction секретов работает по известным шаблонам, поэтому ключи и пароли не записывайте. Сжатие контекста отдельно сохраняет требования, подтверждения, команды проверок и результаты, предположения и оставшуюся работу. Модель всё ещё может пропустить детали в автоматически созданной сводке.

Конфигурация

Основные файлы KitCode:

| Путь | Содержимое | | --- | --- | | ~/.kitcode/config.json | Глобальные настройки. | | ~/.kitcode/auth.json | Ключи провайдеров. | | ~/.kitcode/sessions/ | Сохранённые сессии. | | ~/.kitcode/checkpoints/ | Автоматические чекпоинты для /undo. | | ~/.kitcode/prompts/ | Сохранённые промты. | | ~/.kitcode/skills/ | Глобальные skills. | | ./.kitcode/skills/ | Skills текущего проекта. | | ./kitcode.json | Локальный конфиг проекта. |

Минимальный пример ручной настройки провайдера:

{
  "version": 1,
  "model": "openrouter/openai/gpt-5",
  "providers": {
    "openrouter": {
      "type": "openai",
      "baseUrl": "https://openrouter.ai/api/v1",
      "keyEnv": "OPENROUTER_API_KEY"
    }
  }
}

Основные параметры: model, effort, thinking, maxTokens, budget и diagnostics, theme, permissions, providers и mcp. Секция budget задаёт лимиты запросов к модели, токенов, примерной стоимости (если провайдер сообщает цены) и субагентов на одно сообщение. diagnostics.autoRun включает проверки после правок, а diagnostics.commands позволяет заменить автоопределение списком до восьми команд. При каждом входе KitCode проверяет новую версию в npm и, если она вышла, показывает команду обновления. /update повторяет проверку вручную. Обычно редактировать конфиг вручную не требуется — провайдер можно добавить при первом запуске или через /login.

После проверки проекта включите его локальный конфиг и skills командой:

kitcode trust

Команда kitcode trust --revoke снова оставит для проекта только глобальные настройки и skills.

MCP и skills

MCP поддерживает локальные stdio-серверы и удалённые HTTP-серверы. Ими можно управлять из TUI:

/mcp add docs https://mcp.example.com/mcp
/mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem .
/mcp list
/mcp disable filesystem
/mcp enable filesystem
/mcp delete filesystem

Серверы сохраняются в секции mcp:

{
  "mcp": {
    "github": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "${env:GITHUB_TOKEN}"
      }
    }
  }
}

Skill — это директория с файлом SKILL.md. Глобальные skills находятся в ~/.kitcode/skills, проектные — в ./.kitcode/skills.

Во вложениях поддерживаются PNG, JPEG, GIF и WebP до 10 МБ, а также UTF-8 текст до 256 КБ. Если вставить или перетащить отдельный путь к существующему файлу, он автоматически появится чипом под полем ввода. Содержимое отправляется провайдеру только вместе со следующим сообщением.

Разработка

npm run dev        # запустить исходники через tsx
npm run build      # собрать dist/index.js
npm run typecheck  # проверить TypeScript
npm test           # запустить тесты

Основные директории:

src/app/        запуск приложения и runtime
src/core/       цикл агента, сессии и usage
src/providers/  Anthropic и OpenAI-совместимые адаптеры
src/tools/      файловые, shell и служебные инструменты
src/mcp/        MCP-клиент и адаптер инструментов
src/ui/         TUI на Ink
test/           тесты Vitest

Лицензия

MIT