RustXNG
RustXNG is a self-hosted metasearch engine written in Rust and based on SearXNG. It combines results from external search providers and can fetch page text for AI agents through a JSON API or MCP.
Visit sahenjp/RustXNGOverview
RustXNG is a self-hosted metasearch engine written in Rust and based on SearXNG. It combines results from external search providers and can fetch page text for AI agents through a JSON API or MCP. It does not maintain a web-scale search index; selected-site local indexes and Wikipedia dumps can be added separately.
Key Features
- Self-hosted metasearch engine written in Rust and based on SearXNG.
- JSON API search endpoint with optional page text and parameters such as language, engines, domain include/exclude, time range, and raw content.
- Built-in MCP server exposes search and read_page tools for AI agents.
- Provider profiles include standard, clean for local indexes only, and full for additional HTML providers plus billed Exa Search when configured.
- Optional local index via rustxng-index and separate Wikipedia dump import.
- Supports a web interface plus CSV, RSS, and HTML output.
Use Cases
- AI agents needing search and page-text grounding through MCP or a JSON API.
- Self-hosted search over selected websites using a local index.
- Deployments that need a clean profile searching only prebuilt local crawl and Wikipedia-dump indexes.
- Automated clients that need structured search results with titles, URLs, snippets, and source metadata.
Getting Started
- Install from release binaries or with Cargo using the documented locked command for v0.30.0.
- Start a local server with rustxng --bind 127.0.0.1 --port 29483.
- Query the JSON API at /search with q, format=json, and max_results parameters.
- Start the built-in MCP server with rustxng mcp.
Deployment & Requirements
- Rust 1.88 or newer and a C build toolchain are required for source installation.
- A Docker image is available; by default the service binds to loopback, and exposing it to another network requires appropriate access controls.
- PDF text extraction requires Poppler (pdftotext); scanned PDFs require a separate OCR tool.
- JavaScript-rendered pages need the optional Firefox renderer, and neither PDF support nor the Firefox renderer is enabled automatically by a standalone release binary.
Before You Adopt
- License: AGPL-3.0. Review its terms before using, modifying, or distributing the project.
- Standard and Full profiles send queries to enabled external search providers even when RustXNG runs locally; Clean searches local indexes only, though explicit raw page fetching or other network-backed features can still make outbound requests.
- Provider permissions are still required, and a private instance does not override provider terms.
- Returned web text should be treated as untrusted content.
- Dated experiments are not guaranteed to reflect v0.30.0 performance, and general superiority over Exa or Tavily should not be inferred.
- The code license does not grant permission to collect or redistribute data from external search providers.