ketch CLI

Один бинарный файл для веб-поиска, поиска по коду, документации библиотек и скрапинга страниц с JSON-выводом для агентов

  • 748 ★ репозитория
  • Последний коммит
  • MIT
CLI

Расширенный доступ

Почему такой уровень

  • Запросы и адреса страниц уходят выбранным поисковым и скрапинговым сервисам, а свои cookies для закрытых страниц передаются файлом.
  • Скрапинг и обход сайтов нагружают чужие ресурсы и подчиняются их правилам.
Все причины и проверки

1broseidon/ketch

Установка

Работает в

Ручная установка

curl -fsSL https://ketch.run/install | sh

Скрипт для macOS и Linux из README выбирает сборку под систему и проверяет контрольные суммы релиза.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Запросы и адреса страниц уходят выбранным поисковым и скрапинговым сервисам, а свои cookies для закрытых страниц передаются файлом.
  • Скрапинг и обход сайтов нагружают чужие ресурсы и подчиняются их правилам.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

ketch — безсерверный CLI на Go: вызов, результат, выход, без демона и API-сервера. Он объединяет три поверхности исследования. Команда `ketch search` ищет в вебе без ключа через Brave, DuckDuckGo, SearXNG и еще ряд бэкендов. Команда `ketch code` ищет реальный код в публичных репозиториях через Grep, Sourcegraph или поиск по коду GitHub. Команда `ketch docs` берет версионную документацию библиотек из Context7. Команды `ketch scrape` и `ketch crawl` превращают HTML и текстовые PDF в чистый markdown. Все команды понимают `--json`, а коды возврата описаны для управления ходом работы агента. Один раз оператор выбирает бэкенд, и агенту не нужно знать, какой провайдер за ним стоит. Для агентов есть три способа подключения: готовый скилл из `skills/ketch/`, MCP-сервер `ketch mcp serve` по stdio и плагин Claude Code, который ставит скилл и сервер сразу.

Для кого. Разработчикам, которым агент нужен для живого поиска по вебу, коду и документации без отдельных SDK и ключей под каждый сервис.

Подходит, если

  • Агенту надо найти реальные примеры вызова функции в открытых репозиториях, а не придумывать их по памяти.
  • Нужна актуальная документация библиотеки определенной версии, чтобы агент не опирался на устаревшие данные.
  • Страницы сайта и текстовые PDF требуется свести в markdown для разбора или записи в базу знаний.
  • Исследование поручено агенту целиком: поиск, чтение источников и сводка со ссылками.

Не подходит, если

  • Поиск идет по локальному коду или приватным репозиториям: для этого есть другие инструменты.
  • Страницы закрыты авторизацией, и cookies из браузера давать агенту нельзя.
  • Нужен браузер с выполнением скриптов и кликами: ketch читает страницы без него.

Пример запроса к агенту

Найди через ketch, как в Go правильно использовать http.NewRequestWithContext, покажи два реальных примера из открытых репозиториев со ссылками.

Ограничения

Часть бэкендов работает только с ключом провайдера, который задает оператор командой `ketch config set`. Для `ketch docs` нужен Context7. Плагин Claude Code и пакет для pi не содержат сам бинарный файл, `ketch` версии 0.10.0 или новее должен лежать в PATH. Запущенный MCP-сервер держит блокировку кэша страниц, поэтому параллельные вызовы CLI идут без кэша. Скилл не предназначен для локального кода, приватных репозиториев и страниц за авторизацией. Свои cookies для закрытых страниц передают файлом `cookies.txt`.

Как отключить. Удалите плагин командой `claude plugin uninstall ketch@ketch`, MCP-запись командой `claude mcp remove ketch` и бинарный файл через `brew uninstall ketch` либо вручную.

Частые вопросы

Как подключить ketch к Claude Code?

Через плагин: `claude plugin marketplace add 1broseidon/ketch` и `claude plugin install ketch@ketch`. Либо только MCP-сервер командой `claude mcp add ketch -- ketch mcp serve`.

Нужен ли ключ для веб-поиска?

Нет. Бэкенд `auto` по умолчанию перебирает провайдеры без ключа. Ключ нужен для отдельных платных бэкендов вроде Exa или Tavily.

Какие MCP-инструменты есть у сервера?

`search`, `code`, `docs`, `scrape`, `crawl` и `tag`. Они работают с той же конфигурацией и бэкендами, что и CLI.

Как ketch сообщает об ошибках агенту?

Через документированные коды возврата, а в MCP через префиксы сообщений: `[validation]`, `[not_found]`, `[upstream]`, `[precondition]`, `[cancelled]`.

Можно ли выгружать страницы в JSON?

Да, добавьте `--json` к любой команде. Для `ketch scrape` результат содержит адрес, заголовок и markdown страницы.

Обсуждение

Вопросов и отзывов пока нет.

Три скилла для поиска: четыре источника с оценкой по намерению, глубокий разбор веток обсуждений и страницы в Markdown.

СкиллРасширенный доступ438Звезды репозитория

webctl ищет в сети для агента, оценивает выдачу через Jev и возвращает только полезные фрагменты, чтобы не тратить контекст.

CLIРасширенный доступ166Звезды репозитория

Скилл веб-исследования: SearXNG ищет, Camofox читает страницы, CloakBrowser открывает сайты, которые проверяют посетителей

СкиллШирокий доступ546Звезды репозитория
Выбор редакции

Консольный клиент Firecrawl со скиллами для агентов: поиск в сети, скрапинг, обход сайтов, карта URL, взаимодействие со страницами

CLIРасширенный доступ684Звезды репозитория

MCP-сервер веб-поиска и обхода: SearXNG плюс You.com и чистый Markdown со страниц, сайтов и закрытых разделов

MCP-серверРасширенный доступ190Звезды репозитория

Два небольших скилла: веб-поиск через ваш браузер без платных API и проверка плана перед крупной правкой.

СкиллРасширенный доступ81Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
ketch (эта карточка)нет748
Context7даAPI-ключ64 735отдает только документацию библиотек как MCP; ketch сочетает ее с веб-поиском, поиском по коду и скрапингом
Crawl4AIдаAPI-ключ87 271краулер на Python с упором на обход сайтов; ketch один бинарный файл с поиском и версионной документацией

Коротко о README

В README описаны установка через скрипт, Homebrew, npm и go install, быстрый старт с примерами вывода и таблица команд с бэкендами. Отдельные разделы посвящены извлечению PDF, закладкам-тегам для агентов и подключению через MCP, плагин и пакет pi.

Бейдж для README

Исходный SKILL.md

---
name: ketch
description: "Research skill for ketch — a fast stateless CLI for web search, OSS code search, curated library docs, page scraping, and site crawling; an optional MCP server exists for operators who want it, but the CLI is the primary interface. Use when a question needs live sources: 'research X', 'what are people saying about Y', 'find docs or real-world examples for Z', 'scrape/crawl this site' — or when installing or configuring ketch backends. Routes search vs code vs docs vs scrape vs crawl, keeps every fetch inside a token budget, turns error prefixes into control flow, and produces cited syntheses. Not for local codebase search, private repos, or pages behind auth."
metadata:
  version: "0.1.0"
---

# Ketch

Route every live-source question to one of ketch's five research surfaces — search, code, docs, scrape, crawl — over the transport the operator gave you, with a token budget on every fetch and a source URL on every claim. ketch is one stateless binary — call, result, exit — with web search, OSS code grep, curated library docs, and page/site extraction together, so a complete research pipeline needs no other tool and no daemon.

## Transport: stateless CLI by default, MCP when the operator wired it

The CLI is ketch's identity: call → result → exit, `--json` on every call, exit codes as control flow, zero daemon. That is the default transport and the zero-infrastructure path. The MCP server is a supported alternative for operators who want it — never a prerequisite.

Decide once per session, before the first call:

1. `which ketch` succeeds → the CLI is your transport: `--json` on every call, exit codes as control flow.
2. Also check for ketch's tools in your tool list — the MCP tools `search`, `code`, `docs`, `scrape`, `crawl` and `tag` from a server named `ketch` (in Claude Code: `mcp__ketch__search`, …), or in pi the package's `ketch_search`, `ketch_code`, `ketch_docs`, `ketch_scrape`, `ketch_crawl` and `ketch_tag`. Present → the operator wired them up on purpose, and using them for research calls is correct and good: structured output, per-URL errors, the same options and error prefixes as MCP. Do not shell out around tools the operator set up. (pi's tools run the CLI for you, so the page-cache tradeoff in step 3 does not apply to them.)
3. Both live → either transport serves research calls, but know the tradeoff: a running MCP server holds the single-process page-cache lock, so concurrent CLI scrapes silently run cache-disabled.
4. Neither CLI nor MCP tools → ketch is not installed. Offer `brew install ketch`, `npm i -g ketch-cli` or `go install github.com/1broseidon/ketch@latest` — an operator action: propose, wait for confirmation.

The rule: **use the transport the operator gave you** — when both are live, either is fine for research calls, and operator actions are always CLI.

`tag` is the one exception to the operator-action rule below: it changes local state but the agent is both writer and reader, so it is published over MCP as well as the CLI.

Config discovery is CLI regardless of transport: `ketch config` prints effective settings and available backends as JSON; there is no config tool over MCP. Operator actions — `config set`, `cache`, `browser install`, `crawl --background`/`status`/`stop`, `doctor` — are deliberately not in MCP. They are always CLI.

## Glossary

Use only these terms in ketch output.

| Term | Meaning |
| --- | --- |
| **surface** | One of the five research operations: `search`, `code`, `docs`, `scrape`, `crawl` |
| **tag** | A label filed across surfaces: search hits, code hits, docs chunks, scraped pages, crawled pages. Not a research surface — it answers "what did I already find?", not "what is out there?" |
| **transport** | How a surface is called: the CLI binary (default), the optional MCP tools, or the pi package's `ketch_*` tools (which run the CLI) |
| **backend** | The provider behind a surface: auto (default; a fallback chain, not a provider)/brave/ddg/searxng/exa/firecrawl/keenable/tavily/tinyfish/parallel/serpbase/degoog/serply/youcom (search), grepapp/sourcegraph/github (code), context7 (docs) |
| **operator action** | A system-managing or diagnostic command — `config set`, `cache`, `browser install`, background crawls, `doctor` — CLI-only by design |
| **error prefix** | The stable class on every ketch error: CLI exit codes 2–6, mirrored as the bracketed prefix opening every MCP tool error — `[validation]`, `[not_found]`, `[upstream]`, `[precondition]`, `[cancelled]` |
| **fan-out** | How many queries are searched and URLs scraped under one plan |
| **token budget** | The per-call output bound: `max_chars`/`trim` on scrapes, `tokens` on docs, `limit`/`--minimal` on lists |
| **probe** | One cheap read-only call that tests whether a surface is configured and reachable |

## How to use this skill

Сообщить о проблеме