A modern, AI-powered research assistant that helps you search, read, and connect information from across the web.
DeeepStar Search is a beautiful, minimal web application that leverages the Tavily API to perform deep web searches with AI-powered context understanding. It goes beyond surface answers to deliver comprehensive research results with citations, images, and intelligent filtering.
- Clean, brutalist design with smooth animations
- Responsive layout that works on all devices
- Dark mode optimized color scheme
- Elegant loading states with shimmer animations
- Deep Search: Advanced web crawling with content extraction
- AI-Powered Answers: Get concise summaries powered by AI
- Image Search: Find and display relevant images from search results
- Domain Filtering: Include or exclude specific domains
- Time Range Filtering: Filter results by recency (day, week, month, year)
- Customizable Results: Adjust the number of results (1-20)
- Interactive chat-style interface for queries
- Real-time search with typing indicators
- Suggestion chips for quick searches
- Reset functionality to start fresh
- URL query parameters for shareable searches
- Advanced options hidden by default
- Clean, focused search experience
- Easy access to powerful features when needed
- Clear source citations for every result
- Domain chips with visual hierarchy
- Clickable links to original sources
- Content previews for context
- Node.js (v16 or higher)
- npm (v7 or higher)
- A Tavily API Key (get one at tavily.com)
-
Clone the repository
git clone https://github.com/Vrun-design/agent-search.git cd agent-search -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Edit
.envand add your Tavily API key:TAVILY_API_KEY=tvly-your-api-key-here PORT=3000
-
Start the development server
npm run dev
-
Open your browser
http://localhost:3000
- Navigate to the homepage
- Enter your search query in the input field
- Press Enter or click the send button
- View comprehensive results with AI-generated answers, sources, and images
Click "Advanced Options" to access:
- Max Results: Number of search results (1-20, default: 4)
- Time Range: Filter by recency (Any, Day, Week, Month, Year)
- Include Domains: Whitelist specific domains (e.g.,
github.com) - Exclude Domains: Blacklist specific domains
Note: Search depth, content per result, and image/answer inclusion are enabled by default for optimal results.
Navigate to /chat.html or click suggestions to enter chat mode:
- Ask follow-up questions
- Use suggestion chips for quick searches
- Click "Reset" to clear conversation history
- Use emoji buttons to add sources (π) or adjust settings (βοΈ)
Share searches with URL parameters:
/chat.html?q=AI%20agents&max_results=10&time_range=week&include_domains=github.com
Supported parameters:
q- Search querydepth- Search depth (basicoradvanced)max_results- Number of results (1-20)max_content_per_result- Content snippets per result (1-3)time_range- Filter by time (day,week,month,year)include_images- Include images (true/false)include_answer- Include AI answer (true/false)include_domains- Comma-separated domains to includeexclude_domains- Comma-separated domains to exclude
agent-search/
βββ index.html # Homepage with search form
βββ chat.html # Chat interface for interactive queries
βββ styles.css # All styling (brutalist design system)
βββ server.js # Express server with API proxy
βββ package.json # Dependencies and scripts
βββ .env.example # Environment variables template
βββ .env # Your environment variables (not tracked)
βββ assets/
βββ logo.svg # Application logo
βββ github-logo.svg # GitHub icon
βββ placeholder.svg # Image fallback
index.html
- Homepage with hero section
- Search form with progressive disclosure
- Advanced options panel
- Suggestion chips
- "How it works" section
chat.html
- Chat-style interface
- Floating composer with actions
- Suggestion chips
- Sources and advanced panels
- Real-time search results
styles.css
- Complete design system
- CSS variables for theming
- Responsive layouts
- Animation keyframes
- Component styling
server.js
- Express server setup
- API proxy to Tavily
- Static file serving
- CORS configuration
- Health check endpoint
- Environment variable validation
Perform a web search with Tavily API.
Request Body:
{
"query": "AI agents research",
"topic": "general",
"search_depth": "advanced",
"max_results": 4,
"include_answer": true,
"include_images": true,
"max_content_per_result": 2,
"published_after": "week",
"include_domains": ["github.com"],
"exclude_domains": ["example.com"]
}Response:
{
"answer": "AI agents are...",
"query": "AI agents research",
"results": [
{
"title": "Result title",
"url": "https://example.com",
"content": "Result content...",
"score": 0.95
}
],
"images": [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg"
]
}Health check endpoint.
Response:
{
"ok": true,
"hasKey": true
}- Primary Font: Figtree (sans-serif) - Body text
- Display Font: Instrument Serif - Headings
- UI Font: Archivo - Buttons and labels
--blue: #306bff /* Primary accent */
--blue-hover: #2757e6 /* Hover state */
--ink: #1c2024 /* Text/borders */
--paper: #fcfcfd /* Light backgrounds */
--dot-bg: #f9f9fb /* Page background */
--dot: #DEDEDE /* Grid dots */--shadow-press: 0px 2px 0px 0px /* Default button */
--shadow-lift: 0px 6px 0px 0px /* Hover state */- Buttons: Pill-shaped with hard shadows (brutalist style)
- Cards: Bordered with shadow, hover lift effect
- Bubbles: Chat message containers with animations
- Chips: Small pill buttons for suggestions/tags
- Panels: Floating panels with backdrop blur
- Tavily API key stored in
.env(not tracked by git) - Server-side API calls only
- No client-side key exposure
- CORS configuration for production
- Environment variables for sensitive data
.gitignoreincludes.env- No hardcoded secrets
- Secure headers recommended for production
For production deployment:
-
Set environment variables:
TAVILY_API_KEY=your-api-key PORT=3000 NODE_ENV=production
-
Start production server:
npm start
Vercel / Netlify
- Add environment variables in dashboard
- Deploy from GitHub repository
- Set build command:
npm install - Set start command:
npm start
Heroku
heroku create agent-search-app
heroku config:set TAVILY_API_KEY=your-api-key
git push heroku mainRailway / Render
- Connect GitHub repository
- Add environment variables
- Auto-deploy on push
Docker
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]Contributions are welcome! Here's how you can help:
Open an issue with:
- Description of the bug
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Browser/OS information
Open an issue with:
- Clear description of the feature
- Use case and benefits
- Proposed implementation (optional)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use semantic HTML
- Follow existing CSS patterns
- Comment complex logic
- Keep functions small and focused
- Use meaningful variable names
This project is open source and available under the MIT License.
- Tavily - Powerful search API
- Google Fonts - Typography
- Design Inspiration - Brutalist web design movement
Project Link: https://github.com/Vrun-design/agent-search
- Basic web search
- Advanced search options
- Chat interface
- Image results
- AI-powered answers
- Domain filtering
- Time range filtering
- Responsive design
- Visual knowledge map of concepts
- Search history
- Bookmark results
- Export to PDF/Markdown
- Multi-language support
- Dark mode toggle
- Keyboard shortcuts
- Voice search
- Result caching
- Analytics dashboard
Q: Do I need to pay for Tavily API?
A: Tavily offers a free tier with limited requests. Check their pricing page for details.
Q: Can I use this without a Tavily API key?
A: No, the Tavily API key is required for search functionality.
Q: Is my search data stored?
A: No, searches are not stored. All data flows through the Tavily API.
Q: Can I customize the design?
A: Yes! Edit styles.css and modify the CSS variables to match your brand.
Q: Does this work offline?
A: No, an internet connection is required for search functionality.
Q: What browsers are supported?
A: All modern browsers (Chrome, Firefox, Safari, Edge). IE11 is not supported.
Made with β€οΈ by the Vee
β Star this repo if you find it useful!
