A real open AI agent + jev web interface that searches the web and creates research reports
Ask a question in the chat. Each research layer and each Jev decision appears there live, with its option probabilities, score and latency. Meanwhile the markdown report streams into the side panel.
view detailed info about Recursearch here
RecurSearch went layer by layer, using LLM "picker" and "validator" agents to make choices. Those choices are decisions, so this app hands them to Jev, a System One model that returns typed choices instead of generated text. The LLMs only generate.
flowchart TD
Q([Question]) --> S[Search]
S --> JS{{"Jev: source"}}
JS --> A["Agents: 2 follow-ups"]
A --> JD{{"Jev: duplicate?"}}
JD --> JP{{"Jev: pick"}}
JP --> ST[Stats]
ST --> JC{"Jev: coverage sufficient?"}
JC -- no --> NQ[Next question]
NQ --> S
JC -- "yes / max depth" --> R[["Report agent<br/>(streams markdown)"]]
classDef jev fill:#ede9fe,stroke:#7c3aed,color:#3b0764;
classDef agent fill:#e0f2fe,stroke:#0284c7,color:#0c4a6e;
class JS,JD,JP,JC jev;
class A,R agent;
All run state lives inside a single run, so concurrent users never share findings. The original kept findings in module-level globals, which runs shared.
Requires Node.js 20.9+.
npm install
cp .env.example .env.local # then fill in the keys
npm run dev # http://localhost:3000Minimum .env.local:
OPENROUTER_API_KEY=sk-or-...
OPENROUTER_MODEL=openai/gpt-5-mini # any OpenRouter model id
TAVILY_API_KEY=tvly-...
EXA_API_KEY= # optional, for statisticsWith only an OpenRouter key, both the agents and Jev work. See .env.example for every option: Jev provider and model, early-stop and duplicate thresholds, depth limits, and whether the UI may override the model.
see ./generatedReports for real reports generated by OpenRecursearch at level 3, using gpt-5-mini + jev
Based on recursearch project RecurSearch
