Back to Templates

Deep research web ui

AI research assistant (DeepSeek R1 supported) combining search engines, web scraping, and LLMs for iterative deep research.

View Demo
FrameworkNuxt.js
Use CaseAI
AI research assistant (DeepSeek R1 supported) combining search engines, web scraping, and LLMs for iterative deep research.

Deep Research Web UI

[English | ไธญๆ–‡]

This is a web UI for https://github.com/dzhng/deep-research, with several improvements and fixes.

Features:

  • ๐Ÿš€ Safe & Secure: In Client Mode, config and API requests stay in your browser locally
  • ๐Ÿ•™ Realtime feedback: Stream AI responses and reflect on the UI in real-time
  • ๐ŸŒณ Search visualization: Shows the research process using a tree structure. Supports searching in different languages
  • ๐Ÿ“„ Export as PDF: Export the final research report as Markdown / PDF
  • ๐Ÿค– Supports more models: Uses plain prompts instead of newer, less widely supported features like Structured Outputs. This ensures to work with more providers that haven't caught up with the latest OpenAI capabilities.
  • ๐Ÿณ Docker support: Deploy in your environment in one-line command
  • ๐Ÿ”ง Server Mode: Deploy with environment variables, no need for users to configure API keys

Currently available providers:

  • AI: OpenAI compatible, SiliconFlow, InfiniAI, DeepSeek, OpenRouter, Ollama and more
  • Web Search: Tavily (1000 free credits / month), Firecrawl (cloud / self-hosted), Google PSE

Please give a ๐ŸŒŸ Star if you like this project!


Power your online operations with RapidProxy โ€” real residential and static IPs. RapidProxy offers fast, anonymous connections with low block rates, automatic IP rotation, and stable performance โ€” perfect for web scraping, social media automation, and global business. Free trial included, traffic never expires. Use RPD10 for 10% off!

RapidProxy


Recent updates

25/07/24

  • Added: Research history management - Export/import individual history records, delete all records

25/07/23

  • Added: Server Mode - Deploy with environment variables, users don't need to configure API keys

25/06/26

  • Added: Provider 302.AI support

25/04/06

  • Added: Use Google PSE for web search

25/03/09

  • Added: InfiniAI support
  • Improved LLM prompts
  • Improved error handling
  • Improved: Try to fetch model list even when no API key is provided

25/02/27

  • Added: Citations in research report
  • Improved: Chinese output layout
  • Improved: Increased max width and breadth in the form
  • Fixed: Text overflow issues for web search node details
  • Fixed: general UI style issues

25/02/24

  • Added: Fullscreen mode for the search flow. This helps you to focus on the search process better.
  • Changed: "Export PDF" now uses the browser's native print ability. This fixes layout issues and eliminates font problems.
  • Fixed: "Context Size" setting are not correctly applied

25/02/22

  • Added: NL/Dutch translation
  • Added: Retry failed nodes in web search
  • Fixed: Web search node sometimes shows empty label and duplicated learnings
  • Fixed: Firecrawl now limits scrape content format to Markdown

25/02/18 - 25/02/20

  • Added: "advanced search" and "search topic" support for Tavily
  • Added: custom endpoint support for Firecrawl
  • Fixed: overall bug fixes, less "invalid JSON structure" errors

25/02/17

  • Added: set rate limits for web search
  • Added: set context length for AI model

25/02/16

  • Refactored the search visualization using VueFlow
  • Style & bug fixes
Older updates

25/02/15

  • Added AI providers DeepSeek, OpenRouter and Ollama; Added web search provider Firecrawl
  • Supported checking project updates
  • Supported regenerating reports
  • General fixes

25/02/14

  • Supported reasoning models like DeepSeek R1
  • Improved compatibility with more models & error handling

25/02/13

  • Significantly reduced bundle size
  • Supported searching in different languages
  • Added Docker support
  • Fixed "export as PDF" issues

How to use

Live demo: https://deep-research.ataw.top

Self hosted

Server Mode (Recommended)

Deploy with environment variables - users don't need to configure API keys. Use this mode when you can run the Nuxt server:

Using Docker with environment variables:

docker run -p 3000:3000 \
  -e NUXT_PUBLIC_SERVER_MODE=true \
  -e NUXT_AI_API_KEY=your-ai-api-key \
  -e NUXT_WEB_SEARCH_API_KEY=your-search-api-key \
  -e NUXT_PUBLIC_AI_PROVIDER=openai-compatible \
  -e NUXT_PUBLIC_AI_MODEL=gpt-4o-mini \
  -e NUXT_PUBLIC_WEB_SEARCH_PROVIDER=tavily \
  anotia/deep-research-web:latest

Using Docker with .env file:

# Copy .env.example and update it with your configuration
cp .env.example .env
docker run -p 3000:3000 --env-file .env anotia/deep-research-web:latest

Client Mode (Traditional)

Users configure their own API keys in the browser. Use this mode for static deployments:

One-click deploy with EdgeOne Pages:

Deploy with EdgeOne Pages

Use pre-built Docker image:

docker run -p 3000:3000 --name deep-research-web -d anotia/deep-research-web:latest

Use self-built Docker image:

git clone https://github.com/AnotiaWang/deep-research-web-ui
cd deep-research-web-ui
docker build -t deep-research-web .
docker run -p 3000:3000 --name deep-research-web -d deep-research-web

Environment Variables

Server Mode Configuration

VariableDescriptionDefault
NUXT_PUBLIC_SERVER_MODEEnable server modefalse
NUXT_AI_API_KEYAI provider API key-
NUXT_AI_API_BASEAI provider base URL-
NUXT_WEB_SEARCH_API_KEYWeb search API key-
NUXT_WEB_SEARCH_API_BASEWeb search base URL-

Public Configuration (Server Mode)

VariableDescriptionDefault
NUXT_PUBLIC_AI_PROVIDERAI provider typeopenai-compatible
NUXT_PUBLIC_AI_MODELAI model namegpt-4o-mini
NUXT_PUBLIC_AI_CONTEXT_SIZEContext size128000
NUXT_PUBLIC_WEB_SEARCH_PROVIDERSearch providertavily
NUXT_PUBLIC_WEB_SEARCH_CONCURRENCY_LIMITMax concurrency2
NUXT_PUBLIC_WEB_SEARCH_SEARCH_LANGUAGESearch languageen
NUXT_PUBLIC_TAVILY_ADVANCED_SEARCHUse Tavily advanced searchfalse
NUXT_PUBLIC_TAVILY_SEARCH_TOPICTavily search topicgeneral
NUXT_PUBLIC_GOOGLE_PSE_IDGoogle PSE ID-

Provider values

TypeSupported values
AI provideropenai-compatible, siliconflow, 302-ai, infiniai, openrouter, deepseek, ollama
Web search providertavily, firecrawl, google-pse

Notes:

  • NUXT_WEB_SEARCH_API_KEY supports comma-separated keys for Tavily and Google PSE, for example key1,key2,key3.
  • Google PSE requires both NUXT_WEB_SEARCH_API_KEY and NUXT_PUBLIC_GOOGLE_PSE_ID.
  • Firecrawl self-hosted deployments can set NUXT_WEB_SEARCH_API_BASE.
  • Ollama uses http://localhost:11434/v1 as the default API base. When running the app inside Docker, localhost refers to the container itself, so set NUXT_AI_API_BASE to a reachable host or Docker network address if Ollama runs outside the container.

Developing

Setup

Make sure to install dependencies:

pnpm install

Development Server

Start the development server on http://localhost:3000:

pnpm dev

Production

Build the application for production:

If you want to deploy a SSR application:

pnpm build

If you want to deploy a static, SSG application:

pnpm generate

Locally preview production build:

pnpm preview

Check out the deployment documentation for more information.

License

MIT

Star History

Star History Chart