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

granttap-local

v1.0.0

Published

GrantTap Local: offline MCP for the GrantTap Term desk. One computer, no server.

Readme

GrantTap Term

Стол для одной машины. Он запускается внутри уже открытого терминала: iTerm, другой терминал или сессия SSH. Своего окна нет. Это не эмулятор терминала и не сервер GrantTap.

На одном компьютере стол показывает чаты Grok, Claude и Codex, очередь задач, меш репозиториев Weavatrix, файлы, текстовый браузер и уроки. Агенты остаются на этой машине и сами никуда не подключаются.

Цвета только киберпанк: красный, чёрный и синий. Левого меню нет. Вкладки стоят под строкой ввода. Строка ввода — красный ❯ и синий текст команды. Выбранная строка красная и помечена >. Активная вкладка — чёрный текст на красном.

Спецификация лежит в папке план.

GrantTap Local

Локальный MCP называется granttap-local. Это не сервер GrantTap и не облачный вход. Он офлайн: одна машина, stdio, JSON-RPC по строкам, без HTTP и без OAuth. Имя в initialize — granttap-local, версия 1.0.0.

Программа стола называется granttap-term. Тот же бинарник поднимает MCP:

granttap-term mcp

Пакет npm granttap-local ставит ту же программу и запускает её как MCP. Сборка пакета — darwin arm64.

npx granttap-local

Инструменты: list_chats, preview_image, git_history, git_read_blob, browse_page, list_mesh, list_skills, read_handoff, read_skill. read_handoff принимает chat. read_skill принимает skill.

Запуск стола

Из каталога репозитория:

cargo run

Без терминала программа пишет granttap-term: run this inside a terminal и выходит. granttap-term mcp работает и по трубе: так агент вызывает стол в тестах.

Клавиши: стрелки и мышь двигают курсор, Enter выполняет, Esc закрывает оверлей. F2 включает Vim, F3 раскрывает сплит на весь терминал, F4 правит файл, F10 выходит. Ctrl+V вставляет картинку как [Image #N] с форматом, размером в пикселях, байтами и путём. Предпросмотр всегда есть полублоками ▀. Sixel, Kitty и iTerm рисуются только когда терминал их умеет. Apple Terminal получает полублоки.

Экраны

Снимки сняты с текстового кадра стола, 96×28.

Чаты. Живой чат Grok берётся из active_sessions.json, если процесс ещё жив. Claude и Codex живые только когда процесс с именем claude или codex несёт этот идентификатор. Заголовок Grok читается из summary.json.

Чаты

Задачи. У задачи один владелец, одна модель и один уровень усилия. Строка задачи открывает сплит в виде этого агента.

Очередь

Задача

Меш — это репозитории, которые Weavatrix связал общими коммитами, а не чат. Башни показывают файлы и символы. Дороги идут по mod, use crate::, use super:: и относительному импорту JS. Внешние зависимости — отдельные синие полосы. Имена из .env.example видны, значения нет. Если связей нет, стол пишет none.

Меш

Файлы и редактор. У типа файла свой знак. Vim показывает, где файл, когда он менялся и что это за коммит. Отличие от HEAD помечено. Подсветка зависит от расширения: Rust, Python, JavaScript, TypeScript, Go, shell, C.

Файлы

Редактор

Браузер рисует локальный файл или страницу http/https текстом. Это клеточный разбор страницы для тестов, а не полный движок HTML.

Браузер

Уроки: стол, Claude, терминал и Kubernetes. Отдельного экрана подов нет.

Уроки

Команды

Над строкой ввода висят подсказки. Под ней — короткое описание. desc открывает описание в нижнем сплите. История команд хранится в ~/.granttap-term/desk.txt.

| Команда | Что делает | | --- | --- | | chats tasks mesh files browser lessons | Переключает вкладку | | task <название> | Ставит задачу текущему агенту | | move grok move claude move codex | Передаёт выбранный чат. Пишет ~/.granttap-term/handoff/ и открывает сплит. Хранилища сессий агентов не переписывает | | open context | Открывает чат. context добавляет записанный контекст | | accept ask safe except-push except-destructive full | Автоакцепт для этого меша и выбранного чата | | pause | Ставит автоакцепт на паузу | | permit ask edits bypass plan | Пишет режим в конфиг выбранного агента | | model <имя> effort <уровень> | Пишет модель и усилие только выбранному агенту | | image <путь> | Клеточный предпросмотр картинки | | browse <файл или url> | Страница в сплите | | history blob <путь> | Чтение git через Weavatrix | | health roads health extern | Включает дороги и внешние полосы у этого меша | | skill <имя> | Открывает SKILL.md | | commit | git commit. Ничего не добавляет в индекс | | push | git push без лишних флагов | | fill | Раскрывает сплит или сворачивает его |

ask и safe не выполняют запись сразу. Первый Enter оставляет команду и пишет, что её нужно повторить. Второй Enter выполняет. То же при паузе. except-push, except-destructive и full выполняют permit, model, effort, commit и правку F4 сразу. push сразу проходит только на except-destructive и full. Отдельной разрушающей git-команды нет.

permit пишет Grok [ui] permission_mode, верхний approval_policy Codex и permissions.defaultMode в .claude/settings.local.json проекта. Файл ~/.claude/settings.json стол не переписывает. Модель и усилие Claude пишутся в настройки проекта. У Grok это [models] default и default_reasoning_effort.

Что стол показывает честно

Нет файла — строка no data. Файл есть, а живого вопроса нет — none. Вопросы Grok читаются из короткого хвоста сессии и из ожидания плана. Большие журналы Claude и Codex стол не сканирует, поэтому их вопросы в этой версии не появляются. Квоту стол не выдумывает: видны только уже записанные токены Claude и живой сессии Grok. Рабочий стол Claude и Codex не считается живым чатом CLI.

Связанные репозитории появляются только когда Weavatrix видит общие коммиты. Иначе строка Linked repos none.