Darwin RAG
A local-first RAG engine that ingests documents, indexes them with BM25 + dense embeddings, and exposes search via an MCP server for AI agent integration.
- Ingestion โ PDF, Markdown, HTML, images (OCR), CSV, Excel, ODS, URLs
- Indexing โ BM25 keyword + dense embedding hybrid index with configurable chunking strategies
- Search โ Hybrid, semantic, or keyword retrieval with reranking, diversity rerank, and structural penalties
- Generation โ LLM-backed answer synthesis via LiteLLM (OpenAI, Anthropic, Gemini, etc.)
- Observability โ Structured logging with per-session history, queryable via MCP
- Isolation โ Multiple independent stores for tenant/project separation
- Deployment โ stdio (AI agent subprocess), SSE, or Streamable HTTP; Docker-ready
- Local-first โ Everything runs locally, fully offline-capable after setup
Built by BrightDotDev.

Quick Start
1. Install
2. Set up models
darwin-admin setup interactive
darwin-admin setup --preset required
3. Start the MCP server & connect
darwin mcp
darwin mcp --http --port 8765
Configure your MCP client:
{
"mcpServers": {
"darwin": {
"command": "darwin",
"args": ["mcp"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
Or generate config automatically:
darwin config claude
darwin config cursor
darwin config all --copy
| Tool | Description |
|---|
search_darwin | Query the knowledge base with hybrid/semantic/keyword search |
get_search_results | List saved search results |
get_search_result_by_id | Load a saved search result by filename |
run_pipeline | Ingest + index documents from a path or URL |
purge_artifacts | Delete pipeline artifacts for specific files |
create_store | Create a new isolated data store |
list_files | List all tracked files with pipeline status |
file_status | Detailed status for a single file across all stages |
get_logs | Query session logs (oldest first, INFO excluded) |
Full documentation: docs/mcp.md
Remote / HTTP Mode
Start the server on a network-accessible endpoint:
darwin mcp --sse --host 0.0.0.0 --port 8765
darwin mcp --http --host 0.0.0.0 --port 8765
Configure your MCP client with the URL:
{
"mcpServers": {
"darwin": {
"url": "http://your-host:8765/mcp"
}
}
}
Environment Variables
| Variable | Required | Description |
|---|
OPENAI_API_KEY | No* | OpenAI provider key |
ANTHROPIC_API_KEY | No* | Anthropic provider key |
GEMINI_API_KEY | No* | Google Gemini provider key |
MISTRAL_API_KEY | No* | Mistral AI provider key |
GROQ_API_KEY | No* | Groq provider key |
COHERE_API_KEY | No* | Cohere provider key |
TOGETHER_API_KEY | No* | Together AI provider key |
OPENROUTER_API_KEY | No* | OpenRouter provider key |
DEEPSEEK_API_KEY | No* | DeepSeek provider key |
DARWIN_BASE_DIR | No | Override the base data directory |
NO_COLOR | No | Set to any value to disable ANSI color output |
* At least one LLM provider key is required for answer generation. Search/indexing works without any.
Setup Details
| Command | What it does |
|---|
darwin-admin setup interactive | Guided setup โ detect hardware, choose models |
darwin-admin setup --preset required | Download embedding model only (fastest) |
darwin-admin setup --preset recommended | Embedding + reranker + OCR models |
darwin-admin setup logging | Reconfigure logging only |
darwin-admin setup validate | Validate current setup |
See docs/setup.md for the full walkthrough including Docker, from-source install, and API key configuration.
CLI Reference
darwin โ User CLI
| Command | Description |
|---|
darwin mcp | Start MCP server (stdio, --sse or --http for network) |
darwin config [client] | Generate MCP client config |
darwin-admin โ Power-user CLI
| Command | Description |
|---|
darwin-admin setup | Setup models, logging, and configuration |
darwin-admin status | System status overview |
darwin-admin models | Model registry: list, install, switch, keys |
darwin-admin store | Data store: status, files, audit, health, repair |
darwin-admin pipeline | Ingestion pipeline: run, ingest, index, purge |
darwin-admin search | Interactive search |
darwin-admin logs | Structured log viewer and management |
darwin-admin system | System information |
darwin-admin uninstall | Remove Darwin data and configuration |
See docs/admin.md for the full command reference.
Documentation
Contributing
Found a bug? Want to add something? You're welcome here.
- Issues โ open one at github.com/BrightDotDev/DARWIN/issues
- Code โ fork, branch, PR. Keep it minimal.
- AI-generated code is fine โ but you own what you ship. Test it before submitting.
Read CONTRIBUTING.md for the full guidelines.
License
MIT with Attribution โ see LICENSE.
Core architecture and implementation by BrightDotDev.