
superagents-lab/jev-search on GitHub
- Stars
- 446
- Forks
- 53
- Language
- TypeScript
- License
- MIT
- Last push
- 20 Sep 2026
Read from GitHub on . Counts change daily.
Jev Search is a web search tool that takes a plain-language request, such as “new papers on speculative decoding,” and picks the sources, time range and search terms itself, so the user does not have to set filters by hand. It is built by Search1API, which also handles retrieval, and it is an independent project, not an official TypeSafe product.
Jev’s role has two parts. First it answers typed questions about the request, and the app uses those answers to choose a query, sources and a time range. The user can override the source and time choices afterward. Retrieval then runs across Google, DuckDuckGo and Yandex for the open web, plus vertical engines for sources such as Hacker News, Reddit, GitHub, X, arXiv, YouTube, Wikipedia, IMDb and WeChat. The calls run concurrently, so one failing engine does not discard another’s results. Once results come back, Jev scores each one for relevance. The app merges them by URL, orders them by relevance, agreement across engines and original rank, and streams them as each source finishes.
The output is links and snippets with visible relevance scores, not a generated answer. The README notes that the relevance percentages are model judgments, not verified accuracy. It can be installed from the browser as an app on iOS, Chrome or Edge, and the project says it does not store queries or result clicks.
How it uses Jev
/** Asks the provider chain; each fallback is tried once, in order, for outages only. */
export async function systemOne(
config: JudgeConfig,
state: unknown,
questions: Record<string, Question>,
signal?: AbortSignal
): Promise<SystemOneResponse> {
if (config.providers.length === 0) throw new Error('No Jev provider is configured');
for (let index = 0; ; index++) {
const provider = config.providers[index]!;
try {
return await callProvider(provider, state, questions, signal);
} catch (error) {
const next = config.providers[index + 1];
if (!next || !isProviderOutage(error) || signal?.aborted) throw error;

