
AIを活用したダークウェブOSINTツール。LLMを使用してクエリを精緻化し、検索結果をフィルタリングし、調査サマリーを生成します。Web UIとDockerサポートを備えています。
Robinは、ダークウェブOSINT調査を行うためのAI搭載ツールです。LLMを活用してクエリを洗練させ、ダークウェブ検索エンジンからの検索結果をフィルタリングし、調査サマリーを提供します。
インストール • MCPとしてのRobin • トラブルシューティング • コントリビューション • 謝辞

このツールは、教育および合法的な調査目的のみを意図しています。特定のダークウェブコンテンツへのアクセスや操作は、あなたの管轄区域によっては違法となる場合があります。作者は、このツールまたはそれを使用して収集されたデータのいかなる誤用についても責任を負いません。
責任を持って、自己の責任において使用してください。OSINT調査を実施する前に、関連するすべての法律および機関のポリシーを遵守していることを確認してください。
さらに、RobinはサードパーティのAPI(LLMを含む)を活用しています。潜在的に機密性の高いクエリを送信する際は注意し、使用するAPIまたはモデルプロバイダーの利用規約を確認してください。
[!NOTE] このツールは検索を行うためにTorを必要とします。TorはLinux/Windows(WSL)では
apt install tor、Macではbrew install torでインストールできます。インストール後、Torがバックグラウンドで実行されていることを確認してください。
[!TIP] APIキーは
.envファイル(.env.exampleをコピー)または環境変数として指定してください。キーは1つで十分です。Robinは見つかったプロバイダーのモデルを一覧表示します。サポートされるキーはOPENAI_API_KEY、ANTHROPIC_API_KEY、GOOGLE_API_KEY、MISTRAL_API_KEY、OPENROUTER_API_KEYです。Ollamaの場合、
.envには何も記述しません。Robinはデフォルトでhttp://host.docker.internal:11434を使用し、これは推奨されるDockerインストールに必要な設定です。ただし、次の2点はご自身で対応する必要があります。
- コンテナを
--add-host=host.docker.internal:host-gateway付きで実行する(READMEのコマンドではすでに指定されています)。- Ollamaをすべてのインターフェースでリッスンさせる。デフォルトでは
127.0.0.1にバインドされ、コンテナからはそこに到達できないためです。自分で起動する場合はOLLAMA_HOST=0.0.0.0 ollama serve &とします。systemdで実行している場合は、sudo systemctl edit ollama.serviceを実行し、[Service]とEnvironment="OLLAMA_HOST=0.0.0.0"を追加してから、sudo systemctl daemon-reload && sudo systemctl restart ollamaを実行します。それでも表示されない場合はTROUBLESHOOTING.mdを参照してください。
その他のOpenAI互換プロバイダー(LM Studio、llama.cpp、Groqなど)については、サイドバーの🔌 Custom API Providerエキスパンダーを使用してください。
.envの変更は不要です。ベースURL、任意のAPIキー、そしてプロバイダーが自動検出用の/v1/modelsを公開していない場合は任意でモデル名を入力します。
docker pull apurvsg/robin:latest
.envファイルを作成する(.env.exampleを参照)。初回実行前に作成してください。存在しない場合、Dockerはその場所に空のフォルダをマウントし、Robinはキーなしで起動します。touch .env # then add your API key to it
docker run --rm \
-v "$(pwd)/.env:/app/.env" \
--add-host=host.docker.internal:host-gateway \
-p 8501:8501 \
apurvsg/robin:latest
[!TIP] Dockerの再起動をまたいで保存済みの調査を永続化するには、名前付きボリュームまたはローカルディレクトリを
/app/investigationsにマウントします。名前付きボリュームはどのOSでも同じように動作し、ホストパスを必要としません。また、MCPとしてのRobinのエージェントコマンドがマウントするボリュームでもあるため、UIにはエージェントが保存したのと同じレポートが表示されます:
docker run --rm \ -v "$(pwd)/.env:/app/.env" \ -v robin-investigations:/app/investigations \ --add-host=host.docker.internal:host-gateway \ -p 8501:8501 \ apurvsg/robin:latestまたは、JSONファイルを自分のディスクに置きたい場合は、ローカルディレクトリをマウントします:
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/フォルダに保存され、サイドバーのPast Investigationsパネルから読み込むことができます。Dockerがrootとしてフォルダを作成しないよう、まず自分でフォルダを作成してください(
mkdir -p investigations)。コンテナはUID 1000で実行され、Linuxでは他のユーザーが所有するフォルダは読み取り専用となります。Robinは警告を1つ出力して保存に失敗しますが、調査自体は実行されます。これに該当する場合、またはあなた自身のUIDが1000でない場合は、上記の名前付きボリュームを使用するか、Saved investigations fail with permission denied on Linuxを参照してください。
http://localhost:8501にアクセスします公開イメージの代わりに自分のビルドを実行するには、リポジトリをクローンしてビルドします:
docker build -t robin .
その後、apurvsg/robin:latestの代わりにrobinを使って同じ実行コマンドを使用します:
docker run --rm \
-v "$(pwd)/.env:/app/.env" \
--add-host=host.docker.internal:host-gateway \
-p 8501:8501 \
robin
docker run --rm \
-v "$(pwd)/.env:/app/.env" \
-v "$(pwd)/investigations:/app/investigations" \
--add-host=host.docker.internal:host-gateway \
-p 8501:8501 \
robin
http://localhost:8501にアクセスしますMCPを話す任意のLLMサービスが、自身のモデルを使ってこれを実行できます。以下のセクションは一般的なホスト向けの実例です。記載されていないホストも、「MCPサーバーを追加する」に相当する独自の表現を使って同じように動作します。
claude mcp add robin -- docker run -i --rm -v robin-investigations:/app/investigations apurvsg/robin mcp
または、プロジェクトの.mcp.jsonにチェックインします。Tor調査には数分かかるため、サーバーごとのタイムアウトを引き上げます:
{
"mcpServers": {
"robin": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", "robin-investigations:/app/investigations", "apurvsg/robin", "mcp"],
"timeout": 600000
}
}
}
codex mcp add robin -- docker run -i --rm -v robin-investigations:/app/investigations apurvsg/robin mcp
ChatGPTデスクトップアプリはこのホストを共有しています。そこのSettings → MCP serversでRobinを追加すると同じ設定が書き込まれ、そのツールは通常のChatGPTチャットではなくCodexセッションに表示されます。
Tor検索は通常数分かかり、CodexのデフォルトのMCPツールタイムアウトを超えることがあるため、~/.codex/config.tomlで制限を引き上げます:
[mcp_servers.robin]
command = "docker"
args = ["run", "-i", "--rm", "-v", "robin-investigations:/app/investigations", "apurvsg/robin", "mcp"]
tool_timeout_sec = 600
startup_timeout_sec = 60
# Only for non-interactive runs (`codex exec`): Codex declines MCP tool calls
# that would need approval, so pre-approve Robin's read-only tools.
default_tools_approval_mode = "approve"
最初の起動がダウンロードを兼ねないよう、先にイメージをプルしてください(docker pull apurvsg/robin:latest)。
これをclaude_desktop_config.jsonに追加し、アプリを再起動します: