Jev.aitools.fyi

Command Palette

Search for a command to run...

Product profile
Go158 starsUpdated 2026-10-12

webctl

Go CLI: multi-provider web search for coding agents, Jev scores and dedupes hits, optional scrape chunk filter; skimmer splits the same filter for any file or URL.

Overview

webctl (github.com/dorkitude/webctl, Go) from Kyle (@dorkitude on X) is a smart web search CLI for agents. It queries up to three providers per run (Brave first when keyed; keyless Exa, Parallel, Keenable, You.com, Firecrawl, then DuckDuckGo when no search key exists), fuses lists by reciprocal rank, scores each result with Jev against the query and an explicit --goal, applies a default score cutoff, dedupes in two passes (normalized URL or title, then MinHash LSH candidate pairs Jev judges as same or different), and can optionally scrape top hits and filter ~2000 character chunks with overlap. Install via Homebrew, apt, npm, or go install. The separate skimmer repo (github.com/dorkitude/skimmer, created 2026-10-10) is the same chunk filter for URLs, files, directories, rg pipes, and JSON or line lists; this page covers both tools.

Problem: Coding agents without built-in web search burn context on noisy SERP snippets, duplicate URLs, and full pages when only a few paragraphs matter.

Built for: Claude Code, Codex, pi, or custom harness authors who want a shell-first search tool that ranks and dedupes hits with TypeSafe Jev before the model reads them.

First indexed on Jev Directory: 2026-09-20

Creator and team

Name
Kyle
Handle
@dorkitude

How Jev is used

Role in the product flow
Per-result relevance Score (0 to 10), optional Noul for custom gates, near-duplicate Noul pairs, and per-chunk relevance when scraping or via skimmer
Primitives
ScoreNoul
State in
Search title, URL, and snippet up to 600 characters per hit; optional full excerpt as content; scrape chunks with query and goal; skimmer passes chunk text or list fields with a required goal.
Decision out
Numeric relevance scores with default cut at 6; optional yes or no via --noul; duplicate pairs collapsed to the best-scored copy; scrape and skimmer keep only chunks above threshold while skimmer retains chunks Jev cannot judge.
  1. Query configured search providers with cooldown-aware fallback (~/webctl/cooldown.json on 429 or 402)
  2. Pass each result batch to Jev with query and --goal for scoring
  3. Dedupe pass one on normalized URL or title; pass two on MinHash LSH pairs sent to Jev in one batch
  4. Optional --scrape --filter-chunks on top results; or run skimmer skim or filter on local material
  5. Print ranked snippets for the agent harness

webctl is agent-facing web retrieval with Jev as the noise gate, not a chat answer layer. superagents-lab-jev-search plans Search1API queries inside a Cloudflare Worker and never ships as a Bash-only CLI. aurorainfra-grev filters lines you already have on stdin with sixteen Unix tools, not live SERP fusion. tamaratran-jev-pruner and tamaratran-fast-jev-compaction trim shell stdout or transcript tool rows with Noul keep or drop, not search ranking. dzhng-jevgrep walks a git tree for coding-agent excerpts. webctl plus skimmer cover search plus long-page and repo skim paths with the same Jev scoring philosophy. Jev calls bill to your TypeSafe key; benchmarks/README.md notes they are outside agent token counts. Cite github.com/dorkitude/webctl README, docs/providers.md, docs/filtering.md, benchmarks/README.md, and github.com/dorkitude/skimmer README only.

Sourced performance claims

  • README schematics: about 25 raw results per provider scored down to about 10 to 15 relevant hits; scrape mode shows about 25 chunks filtered to about 3 to 6 relevant chunks per page.Source: github.com/dorkitude/webctl README schematics
  • benchmarks/README.md (2026-09-20/21, experiments 01 to 04, 30 cases): Claude webctl without scrape averaged 1.5k payload tokens and quality 9.40 versus Claude native 1.0k tokens and 8.53; webctl with --scrape --filter-chunks top 3 averaged 4.6k payload and 9.47 quality.Source: github.com/dorkitude/webctl benchmarks/README.md
  • skimmer README example: kept 4 of 40 chunks, 71k to 7.6k chars (89% saved) on a Bloom filter Wikipedia skim.Source: github.com/dorkitude/skimmer README
  • Public GitHub repo dorkitude/webctl had 158 stars, created 2026-09-20; dorkitude/skimmer had 28 stars, created 2026-10-10.Source: GitHub API, 2026-10-12

Features and stack

Features

  • Up to three providers per search with reciprocal rank fusion and shared cooldown ladder (15m to 72h strikes)
  • Jev scores each hit 0 to 10 with default min 6; --noul and --rubric overrides
  • Two-pass dedupe: URL or title collapse, then MinHash LSH plus Jev same-content judgment
  • --scrape --filter-chunks for long pages (~2000 char chunks, overlap configurable in skimmer)
  • skimmer skim for URLs, files, dirs, and rg -n pipes with path:start-end citations
  • skimmer filter for JSON, JSONL, or line lists; keeps items Jev cannot judge
  • Homebrew, apt, npm, go install for webctl; Homebrew, apt, Scoop, go install for skimmer

Stack

  • Go
  • TypeSafe Jev
  • Brave, Exa, Parallel, and other providers per docs/providers.md
  • skimmer (sibling repo) for non-search skim and filter

Pricing: Open source CLI; TypeSafe Jev usage bills to your key. Search backends may be free tier, keyed, or IP throttled per docs/providers.md.

FAQ

What is skimmer and how does it relate to webctl?
skimmer (github.com/dorkitude/skimmer) is webctl's chunk filter extracted as its own CLI. Use skimmer skim on URLs, files, or rg output and skimmer filter on JSON or line lists. webctl --scrape --filter-chunks uses the same idea on search results.
Does webctl need a Jev key?
README says searching can run without a Jev key using keyless search endpoints, but Jev scoring and filtering need a TypeSafe key from webctl setup. Without a key you get thinner results and no relevance filter.
How is webctl different from jev-search?
jev-search is a TypeScript Cloudflare Worker that plans Search1API queries. webctl is a Go agent CLI that fuses live SERP providers, scores with Jev, dedupes, and optionally scrapes chunks.
What does skimmer do when Jev cannot judge a chunk?
skimmer README states that when Jev cannot judge a chunk (for example a failed batch), skimmer keeps it rather than silently dropping it.
When should I use --scrape --filter-chunks?
webctl README and benchmarks/README.md: snippets are usually enough; scrape pays on long PDFs, threads, and transcripts, not on short dev-doc facts. Summarize mode can shrink scrape payload further when configured.

Related learn guides

Original Jev guidance that pairs with this product pattern.

  • System One model

    The model family behind Jev: parallel typed questions, one forward pass, probabilities you can threshold.

  • Jev use cases

    The patterns builders actually search for: moderation, routing, triage, RAG verify, and agent gates.

  • Jev vs LLM classification

    When to gate with System One probabilities instead of asking a chat model to label things.

Related products

Hand-picked neighbors with rich profiles or overlapping tags.

Agent toolingTypeScript427
Demo
Search the web with TypeSafe's Jev: source selection, query understanding and relevance ranking.
agent-toolingragsearch
Agent toolingGo55
Unix-style thinking coreutils in Go: filter, label, sort, and cut by meaning with TypeSafe Jev, and print the user's own lines back.
agent-toolingcliunix
Agent toolingTypeScript139
jev-pruner (github.
agent-toolingcompactionclaude-code
Agent toolingTypeScript2,735
Featured
Claude Code plugin that replaces the compaction summary with Jev decisions: every tool call and result is scored in one fast request, stale ones are dro
agent toolingcompactionagents
By Rishit