SearchMuse
Artificial intelligence-powered web research
- Status
- beta
- License
- MIT
- Category
- Research and AI Development Tools
- Updated
Description
Concise search engine understands semantic research goals and refines queries iteratively with DuckDuckGo until complete sources are found. Supports Ollama (local, default), Claude, OpenAI, and Gemini. Combines httpx (async, lightweight sites) and Playwright (JS-heavy) for scraping, with content extraction via parsing + readability-lxml. Uses hexagonal architecture (CLI → Application → Ports → Domain → Adapters), 311 tests, strict type-checking with mypy, and Ruff code style. CLI Typer + Rich output, ASCII banners with provider status. Licensed under MIT.
Key Features
Refined iterative search
The AI analyzes initial results and reformulates the query until all sources are complete.
Multi-Provider Large Language Model
Concise mode (local, privacy-first), Claude, OpenAI, Gemini - switch with flag -p
Markdown Quotes
Each finding includes URL, publication date and trackable attribution
Multi-strategy scraping
HTTPX for read requests + Playwright for heavy JavaScript sites
Content extraction
Manual article parsing with readability and BeautifulSoup for accurate results
Hexagonal Architecture
Pure Python domain, Swappable ports and adapters, 311 tests with Pytest and TDD
Text Editor with Syntax Highlighting and Code Completion
Banner with two columns of provider status, ASCII mascot, and JSON output for pipeline
Privacy-focused
DuckDuckGo + Ollama on-prem, API keys in system keyring, zero telemetry.
Angular + Spring Boot on top of a PostgreSQL database hosted in the cloud via AWS or Google Cloud Platform
- Python 3.11+
- Typer
- Rich
- httpx
- Playwright
- trafilatura
- readability-lxml
- beautifulsoup4
- DuckDuckGo Search
- Ollama
- Anthropic Claude
- OpenAI
- Google Gemini
- PyYAML
- SQLite + aiosqlite
- pytest
- ruff
- mypy
Use cases
- In-depth technical or academic research with verifiable citations and markdown export capabilities
- Asynchronous pipeline for knowledge gathering with output in consumable JSON format for downstream tools.
- Content extraction from heavily JavaScript sites using Playwright headless
- Privacy-first search (DuckDuckGo + Local Search) for analysts, journalists, researchers.
- Multi-LLM Comparison on Same Research Goal (Ollama vs Claude vs OpenAI vs Gemini)
Quick start
Start the project locally with four commands, requires Docker and GitHub Desktop is not required but a git client like SourceTree or Visual Studio Code's built-in one will do just fine though.
git clone https://github.com/fedcal/SearchMuse.git
cd SearchMuse
pip install -e ".[all-providers]"
searchmuse search "your research query"Complete Documentation
Explore the sections of documentation on GitHub Pages.
Contribute to the project
SearchMuse is open source. Open an issue, propose a pull request or leave a star on GitHub: every contribution, no matter how small, is welcome.
- ⭐ Leave a star if it's useful
- 🐛 Report bugs or suggest features via issue
- 🔧 Send a pull request with fixes or improvements
- 📣 Share the project if you find it interesting