Sign inSign up

apurvsg/robin

By apurvsg

Updated 12 days ago

Robin is an AI-powered tool for conducting dark web OSINT investigations

Image
Security
1

50K+

apurvsg/robin repository overview

Star History Rank GitHub Trending Repository of the Day

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.

InstallationTroubleshootingContributingAcknowledgements


Features

  • ⚙️ Modular Architecture – Clean separation between search, scrape, and LLM workflows.
  • 🤖 Multi-Model Support – OpenAI, Claude, Gemini, Mistral, OpenRouter, Ollama, or any OpenAI-compatible API (LM Studio, llama.cpp, Groq, etc.).
  • 🔄 Live Model List – Models are discovered from each provider at startup, so new releases appear on their own and retired ones disappear. No hardcoded list to go stale.
  • 🎚️ Tunable Depth – Sidebar controls for how many results to filter, how many pages to scrape, and how much of each page the model reads, with the token cost shown before you run.
  • 🌐 Web UI – Streamlit-based interface for interactive investigations.
  • 💬 Conversational Follow-ups – Ask grounded follow-up questions about an investigation without re-running the search — answered from that investigation's own data.
  • 🔀 One-Click Pivots – Suggested follow-up queries surfaced from the findings; click one to launch a fresh investigation.
  • 🐳 Docker-Ready – Recommended Docker deployment for clean, isolated usage.
  • 🔍 Honest Results – When nothing relevant is found, Robin says so instead of summarizing whatever it happened to scrape.
  • 📝 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

Provide your API key either in a `.env` file (copy [`.env.example`](.env.example)) or as environment variables. One key is enough: Robin lists models for whichever providers it finds. Supported keys are `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY`, `MISTRAL_API_KEY` and `OPENROUTER_API_KEY`.

For Ollama, nothing goes in your .env. Robin defaults to http://host.docker.internal:11434, which is what the recommended Docker install needs. Two things are still on you:

  1. Run the container with --add-host=host.docker.internal:host-gateway (the README command already does).
  2. Make Ollama listen on all interfaces, since it binds to 127.0.0.1 by default and a container cannot reach that. If you start it yourself, OLLAMA_HOST=0.0.0.0 ollama serve &. If it runs under systemd, sudo systemctl edit ollama.service, add [Service] and Environment="OLLAMA_HOST=0.0.0.0", then sudo systemctl daemon-reload && sudo systemctl restart ollama.

Running Robin directly with Python instead of Docker? Add OLLAMA_BASE_URL=http://127.0.0.1:11434 to override the default. See TROUBLESHOOTING.md if it still doesn't appear.

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.

  • 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

Troubleshooting

Empty model dropdown, Ollama not showing up, Tor resolve failed errors, 401s, or "no results found"? See TROUBLESHOOTING.md before opening an issue.


Contributing

Bugs go in Issues. Questions and feature ideas go in Discussions. See CONTRIBUTING.md before opening a pull request.


Acknowledgements

Tag summary

Content type

Image

Digest

sha256:850c70edd

Size

524.3 MB

Last updated

12 days ago

docker pull apurvsg/robin