
Robin: AI-Powered Dark Web OSINT
io.github.apurvsinghgautamPublished by GitHub account apurvsinghgautamv3.1.0Updated Oct 24, 2026
Dark web OSINT over Tor: search onion engines, scrape pages, report with your own model.
The publisher's own server: osint.foundation
Overview
Robin runs dark web OSINT investigations over Tor, letting an assistant search onion search engines, scrape pages and save reports using the agent's own model.
- What you can do
- Run dark web investigations: search onion search engines and scrape pages through Tor
- Ask grounded follow-up questions about a saved investigation without re-running the search
- Get suggested pivot queries from findings to launch new investigations
- Save investigation reports as JSON files in the investigations folder for later review
- When to use it
- For lawful OSINT research where an assistant should search and read dark web sources through Tor and summarize findings, with the agent's own model doing the reasoning. Not for ordinary web lookups or anything outside a jurisdiction where such investigation is permitted.
- Requirements
- Runs as a local Docker container (image apurvsg/robin) over stdio; Tor must be installed and running. An LLM provider API key is needed in a .env file or environment (OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, MISTRAL_API_KEY or OPENROUTER_API_KEY), or a local Ollama/OpenAI-compatible endpoint. Tor searches take minutes, so raise the host's MCP timeout.
Installation
In SourceWeft
- Open Robin: AI-Powered Dark Web OSINT in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
[Release] [GitHub Release] [Docker Pulls]
[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.
Installation • Robin as MCP • Troubleshooting • Contributing • AcknowledgementsArchitecture
Features
- 🤖 Multi-Model Support – OpenAI, Claude, Gemini, Mistral, OpenRouter, Ollama, or any OpenAI-compatible API (LM Studio, llama.cpp, Groq, etc.).
- 🌐 Web UI – Streamlit-based interface for interactive investigations.
- 🔌 MCP Support – Run Robin from any MCP-capable agent, using that agent's own model. See Robin as MCP.
- 💬 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.
⚠️ 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 toron Linux/Windows(WSL) orbrew install toron Mac. Once installed, confirm if Tor is running in the background.
[!TIP] Provide your API key either in a
.envfile (copy.env.example) or as environment variables. One key is enough: Robin lists models for whichever providers it finds. Supported keys areOPENAI_API_KEY,ANTHROPIC_API_KEY,GOOGLE_API_KEY,MISTRAL_API_KEYandOPENROUTER_API_KEY.For Ollama, nothing goes in your
.env. Robin defaults tohttp://host.docker.internal:11434, which is what the recommended Docker install needs. Two things are still on you:
- Run the container with
--add-host=host.docker.internal:host-gateway(the README command already does).- Make Ollama listen on all interfaces, since it binds to
127.0.0.1by 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]andEnvironment="OLLAMA_HOST=0.0.0.0", thensudo systemctl daemon-reload && sudo systemctl restart ollama.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
.envchanges required. Enter the base URL, an optional API key, and optionally a model name if the provider doesn't expose/v1/modelsfor auto-discovery.
Docker [Recommended]
- Pull the latest Robin docker image
- Create a
.envfile in the folder you run from, with your API key in it (see.env.example). Create it before the first run: if it does not exist, Docker mounts an empty folder in its place and Robin starts with no keys.
- Run the docker image as:
[!TIP] To persist saved investigations across Docker restarts, mount a named volume or a local directory at
/app/investigations.A named volume works the same on every OS and needs no host path. It is also the volume the agent commands in Robin as MCP mount, so the UI shows the same reports your agent saved:
Or mount a local directory, if you want the JSON files on your own disk:
Investigations are saved to the
investigations/folder in your working directory and can be loaded from the Past Investigations panel in the sidebar.Create the folder yourself first (
mkdir -p investigations) so Docker does not create it as root. The container runs as UID 1000, and on Linux a folder owned by anyone else is read-only to it — Robin prints one warning and the save fails, though the investigation still runs. If you hit that, or your own UID isn't 1000, use the named volume above, or see Saved investigations fail with permission denied on Linux.
- Open your browser and navigate to
http://localhost:8501
Build it yourself
To run your own build instead of the published image, clone the repository and build it:
Then use the same run commands with robin in place of apurvsg/robin:latest:
- Open your browser and navigate to
http://localhost:8501
Robin as MCP
Any LLM service that speaks MCP can run it, using its own model. The sections below are worked examples for the common hosts; a host that is not listed works the same way, with whatever wording it uses for "add an MCP server".
Claude Code
Or check it into the project in .mcp.json. A Tor investigation takes minutes,
so raise the per-server timeout:
Codex
The ChatGPT desktop app shares this host: adding Robin under Settings → MCP servers there writes the same configuration, and its tools appear in Codex sessions rather than in an ordinary ChatGPT chat.
A Tor search usually takes a couple of minutes, which can outlast Codex's default
MCP tool timeout, so raise the limits in ~/.codex/config.toml:
Pull the image first (docker pull apurvsg/robin:latest) so the first start is
not also a download.
Claude Desktop
Add this to claude_desktop_config.json and restart the app:
Hermes
In ~/.hermes/config.yaml:
OpenClaw
Or in the config, under mcp.servers:
ChatGPT
The desktop app's Settings → MCP servers configures the Codex host that the app, the Codex CLI and the IDE extension share, so add Robin there and it appears in Codex sessions: see Codex. An ordinary ChatGPT chat cannot run it, because chat reaches MCP servers through connectors that run in OpenAI's infrastructure rather than on your machine.
Security
- Nothing sends, executes, or runs a shell. The only writes are saved reports,
into
investigations/under a filename Robin picks; the agent never names a path. - Searches, page scrapes and search-engine health checks go through Tor, so the app you are using never fetches a dark web page itself. Model provider calls and the model list refresh go directly, not through Tor.
- Scraped text comes back inside untrusted-data delimiters, with control, zero-width and bidi characters stripped first, so your model reads it as evidence rather than as instructions.
Acknowledgements
- Idea inspiration from Thomas Roccia and his demo of Perplexity of the Dark Web.
- Tools inspiration from my OSINT Tools for the Dark Web repository.
- LLM Prompt inspiration from OSINT-Assistant repository.
- Logo Design by my friend Tanishq Rupaal
Source: README.md at commit fa0dfa8
Tools
0Version history
2- v3.1.0LatestOct 3, 2026
- v3.0.0Sep 26, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Osint integrations
osint.foundation
foundation.osintOfficial publisher
osint.foundation's hosted MCP server, published by osint.foundation; credential required; Streamable HTTP; 51 tools.

OSINT.SX
Published by GitHub account osintsx
Runs OSINT.SX people and account lookups from an assistant: one search across all sources, plus Google, Microsoft, Epic, X, Steam, Instagram and TikTok tools.

Domain Osint Mcp
Published by GitHub account robertoyanguas-ops
A remote MCP server that lets an assistant run domain OSINT checks: live DNS resolution, TLS certificate details and an HTTP security grade.

OSINT
Published by GitHub account robyroro
Local MCP server for OSINT-style domain and website investigations: recon, WHOIS/RDAP, DNS, certificates, archive and infrastructure comparison from public…

UPI ID OSINT - Phone to UPI VPAs + Bank Names (India)
Published by GitHub account AnshumanAtrey
Remote Apify-hosted MCP server that looks up Indian phone numbers or UPI VPAs and returns active UPI IDs plus NPCI bank-registered names.