MCPcopy Index your code
hub / github.com/apurvsinghgautam/robin

github.com/apurvsinghgautam/robin @v2.7 sqlite

repository ↗ · DeepWiki ↗ · release v2.7 ↗
41 symbols 212 edges 7 files 17 documented · 41% 1 cross-repo links
README

Logo

Release GitHub Release Docker Pulls

Robin: AI-Powered Dark Web OSINT Tool

Robin is an AI-powered tool for conducting dark web OSINT investigations. It leverages LLMs to refine queries, filter search results from dark web search engines, and provide an investigation summary.

InstallationUsageContributingAcknowledgements

Demo

Architecture

Workflow


Features

  • ⚙️ Modular Architecture – Clean separation between search, scrape, and LLM workflows.
  • 🤖 Multi-Model Support – Easily switch between OpenAI, Claude, Gemini, Ollama, or any OpenAI-compatible API (LM Studio, llama.cpp, Groq, etc.).
  • 🌐 Web UI – Streamlit-based interface for interactive investigations.
  • 🐳 Docker-Ready – Recommended Docker deployment for clean, isolated usage.
  • 📝 Custom Reporting – Save investigation output to file for reporting or further analysis.
  • 🧩 Extensible – Easy to plug in new search engines, models, or output formats.

⚠️ Disclaimer

This tool is intended for educational and lawful investigative purposes only. Accessing or interacting with certain dark web content may be illegal depending on your jurisdiction. The author is not responsible for any misuse of this tool or the data gathered using it.

Use responsibly and at your own risk. Ensure you comply with all relevant laws and institutional policies before conducting OSINT investigations.

Additionally, Robin leverages third-party APIs (including LLMs). Be cautious when sending potentially sensitive queries, and review the terms of service for any API or model provider you use.

Installation

[!NOTE] The tool needs Tor to do the searches. You can install Tor using apt install tor on Linux/Windows(WSL) or brew install tor on Mac. Once installed, confirm if Tor is running in the background.

[!TIP] You can provide your LLM of choice API key by either creating .env file (refer to sample env file in the repo) or by setting env variables in PATH.

For Ollama, provide http://host.docker.internal:11434 as OLLAMA_BASE_URL in your env if running using docker method or http://127.0.0.1:11434 for other methods. You might need to serve Ollama on 0.0.0.0 depending on your OS. You can do by running OLLAMA_HOST=0.0.0.0 ollama serve & in your terminal.

For any other OpenAI-compatible provider (LM Studio, llama.cpp, Groq, etc.), use the 🔌 Custom API Provider expander in the sidebar — no .env changes required. Enter the base URL, an optional API key, and optionally a model name if the provider doesn't expose /v1/models for auto-discovery.

Docker [Recommended]

  • Pull the latest Robin docker image
docker pull apurvsg/robin:latest
  • Run the docker image as:
docker run --rm \
   -v "$(pwd)/.env:/app/.env" \
   --add-host=host.docker.internal:host-gateway \
   -p 8501:8501 \
   apurvsg/robin:latest

[!TIP] To persist saved investigations across Docker restarts, mount a local directory: bash docker run --rm \ -v "$(pwd)/.env:/app/.env" \ -v "$(pwd)/investigations:/app/investigations" \ --add-host=host.docker.internal:host-gateway \ -p 8501:8501 \ apurvsg/robin:latest Investigations are saved to the investigations/ folder in your working directory and can be loaded from the Past Investigations panel in the sidebar.

  • Open your browser and navigate to http://localhost:8501

Using Python (Development Version)

  • With Python 3.10+ and Tor installed, run the following:
pip install -r requirements.txt
streamlit run ui.py
  • Open your browser and navigate to http://localhost:8501

Contributing

Contributions are welcome! Please feel free to submit a Pull Request if you have major feature updates.

  • Fork the repository
  • Create your feature branch (git checkout -b feature/amazing-feature)
  • Commit your changes (git commit -m 'Add some amazing feature')
  • Push to the branch (git push origin feature/amazing-feature)
  • Open a Pull Request

Open an Issue for any of these situations: - If you spot a bug or bad code - If you have a feature request idea - If you have questions or doubts about usage - If you have minor code changes


Acknowledgements

Core symbols most depended-on inside this repo

_normalize_model_name
called by 11
llm_utils.py
_clean_env
called by 10
config.py
_is_set
called by 5
llm_utils.py
_require
called by 4
llm.py
fetch_ollama_models
called by 3
llm_utils.py
fetch_llama_cpp_models
called by 3
llm_utils.py
fetch_custom_api_models
called by 3
llm_utils.py
get_llm
called by 2
llm.py

Shape

Function 37
Method 3
Class 1

Languages

Python100%

Modules by API surface

llm_utils.py13 symbols
ui.py7 symbols
llm.py7 symbols
scrape.py6 symbols
health.py4 symbols
search.py3 symbols
config.py1 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add robin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact