
AI 기반 다크 웹 OSINT 도구로, LLM을 사용해 검색어를 정제하고 검색 결과를 필터링하며 조사 요약을 생성합니다. 웹 UI와 Docker를 지원합니다.
Robin은 다크웹 OSINT 조사를 수행하기 위한 AI 기반 도구입니다. LLM을 활용하여 쿼리를 정제하고, 다크웹 검색 엔진의 검색 결과를 필터링하며, 조사 요약을 제공합니다.
설치 • MCP로서의 Robin • 문제 해결 • 기여 • 감사의 글

이 도구는 교육 및 합법적인 조사 목적으로만 사용하도록 의도되었습니다. 특정 다크웹 콘텐츠에 접근하거나 상호작용하는 행위는 귀하의 관할권에 따라 불법일 수 있습니다. 저자는 이 도구의 오용이나 이를 사용하여 수집된 데이터에 대해 책임지지 않습니다.
책임감 있게 사용하고 본인의 책임 하에 사용하세요. OSINT 조사를 수행하기 전에 관련 법률 및 기관 정책을 모두 준수했는지 확인하세요.
또한 Robin은 (LLM을 포함한) 타사 API를 활용합니다. 잠재적으로 민감한 쿼리를 전송할 때 주의하고, 사용하는 모든 API 또는 모델 제공자의 서비스 약관을 검토하세요.
[!NOTE] 이 도구는 검색을 수행하기 위해 Tor가 필요합니다. Linux/Windows(WSL)에서는
apt install tor로, Mac에서는brew install tor로 Tor를 설치할 수 있습니다. 설치 후 Tor가 백그라운드에서 실행 중인지 확인하세요.
[!TIP] API 키를
.env파일(.env.example복사)에 제공하거나 환경 변수로 제공하세요. 키 하나면 충분합니다. 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 설치에 필요한 값입니다. 다만 두 가지는 직접 해야 합니다:
--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은 경고를 한 번 출력하고 저장은 실패하지만 조사는 계속 실행됩니다. 이 문제가 발생하거나 자신의 UID가 1000이 아니라면 위의 명명된 볼륨을 사용하거나 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).