Skip to content

Integration: youcom search backend for 1broseidon/ketch #222

Description

@mouse-value-add

Source repo

https://github.com/1broseidon/ketch

Why selected

  • 531 stars (mid-popular band), MIT licensed, Go, pushed within hours (very active: recent commits same day).
  • ketch is a stateless CLI for agent web search — its entire purpose is federating web-search providers behind one Searcher interface. It has an explicit, documented provider abstraction with 9 existing backends (brave, ddg, searxng, exa, firecrawl, keenable, tavily, parallel, serpbase); the last two releases each added a keyed backend through the identical pattern (see CHANGELOG 0.14.0).
  • Ships its own agent skill (skills/ketch/SKILL.md, skills.sh-compatible) and an MCP server (ketch mcp serve) — landing a youcom backend in the provider registry gives You.com visibility to the maintainer and every ketch user/agent.
  • Clean implementation path: mirror the Tavily backend (keyed, Bearer/X-API-Key header auth, keyPool rotation, doctor probe, config set/discovery, multi/random federation). Tests use httptest servers — fully runnable offline.
  • Not previously touched by this workflow (checked against all tracking issues + authored PRs).

Candidate evaluation summary

Candidate Stars Distribution surface Activity Verdict
1broseidon/ketch 531 Provider registry (Searcher iface) + agent skill + MCP server same-day pushes selected
ggozad/haiku.rag 586 MCP client config, agentic RAG same-day good, but search is a smaller part of its surface; ketch is search-native
szczyglis-dev/py-gpt 1898 plugin system 12 days license NOASSERTION + large desktop app, higher risk

Proposed integration type

Provider adapter — new youcom web-search backend in ketch's existing provider registry (repo-native equivalent of a plugin listing).

Distribution surface leveraged

ketch's search.Searcher provider abstraction (search.NewFromConfig owns the backend switch; every backend is wired through config set/discovery, --multi/--random federation, the MCP search tool, and ketch doctor).

Planned setup / env vars

  • ketch config set youcom_api_key <key> (get a key at https://you.com/platform/api-keys)
  • Multi-key rotation: youcom_api_keys JSON array / KETCH_YOUCOM_API_KEY comma-separated env override
  • Select: ketch search "q" -b youcom or ketch config set backend youcom; joins --multi=all federation automatically when a key is set
  • API: POST https://ydc-index.io/v1/search with X-API-Key header auth (verified against You.com docs via the Docs MCP searchDocs tool)

Expected usage example

ketch config set youcom_api_key <key>
ketch search "golang generics" -b youcom
ketch search "golang generics" --multi=brave,youcom

Validation plan

  • go test ./... (new search/youcom_test.go + updated config/cmd tests, httptest-based)
  • golangci-lint run (repo standard, gocyclo max 15)
  • Live check documented: ketch config set youcom_api_key <key> && ketch search "test" -b youcom
  • Default behavior unchanged: brave stays default; youcom is inert unless explicitly selected or keyed

Branch / PR

  • Branch: (pending)
  • PR: (pending)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions