Skip to main content

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.
License: MIT with Attribution


Quick Start

1. Install

pip install darwin-rag

2. Set up models

# Interactive — detects hardware, pick your models
darwin-admin setup interactive

# Or one-shot (embedding-only, no prompts)
darwin-admin setup --preset required

3. Start the MCP server & connect

# stdio mode — for AI agent subprocess (Claude Desktop, Cursor, etc.)
darwin mcp

# Or HTTP mode — for remote clients
darwin mcp --http --port 8765

Configure your MCP client:

{
  "mcpServers": {
    "darwin": {
      "command": "darwin",
      "args": ["mcp"],
      "env": {
        "OPENAI_API_KEY": "sk-..."  // At least one LLM provider key
      }
    }
  }
}

Or generate config automatically:

darwin config claude          # Claude Desktop config
darwin config cursor          # Cursor config
darwin config all --copy      # All clients + copy to clipboard

MCP Tools

Tool Description
search_darwin Query the knowledge base with hybrid/semantic/keyword search
search_lists Search structured data (CSVs, JSON arrays) by field values
get_search_results List saved search results
get_search_result_by_id Load a saved search result by filename
get_schema Inspect schemas for structured files (keys, types, record counts)
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:

# SSE transport (legacy)
darwin mcp --sse --host 0.0.0.0 --port 8765

# Streamable HTTP transport (recommended for production)
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"  // or /sse for SSE mode
    }
  }
}

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.


Python API

For embedding darwin-rag as a library in your own app:

from core import Darwin

d = Darwin()
d.ingest("./papers", recursive=True)
results = d.search("what is this paper about")
records = d.search_records(filters={"status": "active"})

Full reference: docs/api.md


Documentation

Doc What
setup.md Full setup walkthrough
mcp.md MCP server, tools, resources, transports
admin.md Admin CLI reference
architecture.md For developers and contributors
pipeline.md Ingestion & indexing
retrieval.md Search engine
storage.md DarwinStore
models.md Model registry & inference
logger.md Structured logging
orchestrators.md High-level business logic
api.md Python API (Darwin class)

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.

Metadata

Release files for darwin-rag 0.2.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for darwin-rag 0.2.18
File Size Uploaded Provenance
darwin_rag-0.2.18.tar.gz 342.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for darwin-rag 0.2.18
File Interpreter ABI Platform
darwin_rag-0.2.18-py3-none-any.whl Python 3 none any Details

Total release size: 734.4 kB

Release files / darwin_rag-0.2.18.tar.gz

Download URL darwin_rag-0.2.18.tar.gz
Size 342.1 kB
Tags Source
SHA-256 checksum
How to use checksums
01ca3237654baf6eea841392848835b1ff59df552d7f84f1561a526980339a7b
BLAKE2b-256 checksum
How to use checksums
c44e46717ccbdc0b2c2ba190483ffdac4a5a62fed974b617cb78b25527a358a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.8

Release files / darwin_rag-0.2.18-py3-none-any.whl

Download URL darwin_rag-0.2.18-py3-none-any.whl
Size 392.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d045a6f7e700df9ae69093a7e147e244add90715a2d23d2b1a0c967efc31f5d9
BLAKE2b-256 checksum
How to use checksums
733ded552ec9ecea512e8abed6f364a1e954923a72303cccb1e221c2d9e14427
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.8

Security for darwin-rag 0.2.18

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page