OnionClaw 🧅
by JacobJandon
Power your agent
การติดตั้งจากผู้เผยแพร่ ไม่ใช่เอนด์พอยต์ของ PlugMCP
URL แบบรีโมตหรือคำสั่งบนเครื่องของคุณ? การติดตั้งสองแบบต่างกันอย่างไร
รันบน PlugMCP
A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.
เปิดOpenClaw skill + standalone tool — full Tor / dark web access for AI agents
OnionClaw gives AI agents full access to the Tor network and .onion hidden services. It runs as an OpenClaw skill (drop-in, zero config beyond a .env file) and also works standalone from any terminal.
Based on the SICRY engine — 18 dark web search engines, Robin OSINT pipeline, four LLM analysis modes.
# As an OpenClaw skill:
cp -r OnionClaw ~/.openclaw/skills/onionclaw
# → agent now has 7 dark web commands available in every session
# Standalone:
python3 check_tor.py # verify Tor
python3 search.py --query "ransomware healthcare"
python3 pipeline.py --query "acme.com data leak" --mode corporate
Autonomous agents paired with the Tor network will be one of the most dangerous automation stacks on the internet within the next five years. OnionClaw is living proof that the rabbit hole goes deeper than most people think.
This tool is built for legitimate OSINT, threat intelligence, and security research. But the same primitives — anonymous routing, bulk scraping, AI-driven synthesis, zero-attribution browsing, automated identity rotation — are precisely what make this combination genuinely dangerous in the wrong hands.
This is not a warning tucked in fine print. It is the whole point of writing it down openly.
The 2026 internet is already at the edge of this. Within five years, AI agents that can:
…represent a qualitative shift from human criminals using tools to autonomous criminal infrastructure operating at machine speed with no human in the loop. The bottleneck has always been human attention. Remove it and the scaling properties of dark web operations change completely.
OnionClaw demonstrates all four of those primitives working together today. The full pipeline.py step — query refinement → multi-engine search → result filtering → batch scrape → LLM synthesis → identity rotation — is a complete autonomous dark web intelligence loop. Remove the OSINT framing and it is equally a complete autonomous dark web operation loop. The code is the same either way.
Security tools that pretend the dual-use problem does not exist are more dangerous than ones that name it directly. If you are building on top of OnionClaw:
"acme.com credential leak" for a pentest or "rival vendor SSH keys" for espionage..onion services may be illegal in your country regardless of intent or findings.OnionClaw is published for defensive research, red-team engagements, and threat intelligence work. The code does not know the difference between those uses and their inverse. You do. Build accordingly.
Seven commands expose the complete Tor OSINT toolkit:
127.0.0.1:9050)requests[socks] beautifulsoup4 python-dotenv stemask.py and pipeline.py analysis step)Linux (Debian/Ubuntu):
apt install tor && tor &
macOS:
brew install tor && tor &
With control port (needed for renew.py):
cat > /tmp/onionclaw_tor.conf << 'EOF'
SocksPort 9050
ControlPort 9051
CookieAuthentication 1
DataDirectory /tmp/tor_data
EOF
tor -f /tmp/onionclaw_tor.conf &
Then set TOR_DATA_DIR=/tmp/tor_data in .env.
pip install requests[socks] beautifulsoup4 python-dotenv stem
# Option A — clone directly
git clone https://github.com/JacobJandon/OnionClaw ~/.openclaw/skills/onionclaw
# Option B — copy local folder
cp -r OnionClaw ~/.openclaw/skills/onionclaw
.env in the skill folder:cp ~/.openclaw/skills/onionclaw/.env.example ~/.openclaw/skills/onionclaw/.env
nano ~/.openclaw/skills/onionclaw/.env # add LLM key if desired
onionclaw in the agent context whenever the user asks about dark web topics.Verify OpenClaw can see the skill:
openclaw skills list
# → onionclaw 🧅 Search the Tor dark web...
OpenClaw trigger phrases:
After install, start a new session — existing sessions will not pick up the new skill.
No OpenClaw required. Every script runs directly from a terminal:
git clone https://github.com/JacobJandon/OnionClaw
cd OnionClaw
pip install requests[socks] beautifulsoup4 python-dotenv stem
cp .env.example .env
# Edit .env — add LLM key if desired (optional for most commands)
Copy .env.example to .env and fill in what you need:
# ── Tor ────────────────────────────────────────────────────────────────
TOR_SOCKS_HOST=127.0.0.1
TOR_SOCKS_PORT=9050
TOR_CONTROL_HOST=127.0.0.1
TOR_CONTROL_PORT=9051
# TOR_CONTROL_PASSWORD=your_password # only if HashedControlPassword in torrc
# TOR_DATA_DIR=/tmp/tor_data # DataDirectory path for cookie auth
# ── LLM (needed only for ask.py and pipeline.py analysis step) ──────────
LLM_PROVIDER=openai # openai | anthropic | gemini | ollama | llamacpp
OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=sk-ant-...
# GEMINI_API_KEY=AIza...
# OLLAMA_MODEL=llama3.2 # local model — no API key needed
No LLM key? Set
LLM_PROVIDER=ollamawith a running Ollama instance for fully local inference.search.py,fetch.py,check_tor.py,renew.py, andcheck_engines.pywork with no LLM key at all.
check_tor.py — verify Torpython3 check_tor.py
✓ Tor active
Exit IP : 185.220.101.20
Error : None
{"tor_active": true, "exit_ip": "185.220.101.20", "error": null}
Run this before anything else. Exits with code 1 if Tor is not running or not accessible on port 9050.
renew.py — rotate identitypython3 renew.py
Rotating Tor circuit...
✓ Identity renewed — new Tor circuit established
{"success": true, "error": null}
Auth order: password env var → cookie from TOR_DATA_DIR → common system paths → null auth. Works out of the box with the recommended torrc above or with a standard system Tor install.
check_engines.py — engine health check# Live ping (15–30 s)
python3 check_engines.py
# --cached N: reuse last result if less than N minutes old (skips the slow ping)
python3 check_engines.py --cached 10
# JSON output only
python3 check_engines.py --json
# Show version
python3 check_engines.py --version
ALIVE 9/12
──────────────────────────────────────────
✓ Ahmia-clearnet 670ms ███
✓ Tor66 749ms ███
✓ Ahmia 1139ms █████
✓ OSS 1203ms ██████
...
DOWN 3/12
✗ Kaizer timeout
✗ Anima timeout
✗ FindTor timeout
Run before a large search session. Use the alive engine names as arguments to --engines in search.py.
search.py — search dark web# All 18 engines (default)
python3 search.py --query "ransomware healthcare leak"
# Specific engines (faster — use alive engines from check_engines output)
python3 search.py \
--query "credential dump" \
--engines Ahmia Tor66 Ahmia-clearnet OSS
# Limit result count
python3 search.py --query "bitcoin mixer" --max 30
Returns a deduplicated {title, url, engine} list across all engines.
Tip: Use short keyword queries (3–5 words). Dark web search indexes respond much better to keywords than natural-language sentences.
fetch.py — fetch any .onion page# Hidden service
python3 fetch.py \
--url "http://juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd.onion"
# With links extracted
python3 fetch.py --url "http://example.onion/page" --links
# JSON output only
python3 fetch.py --url "http://example.onion" --json
Returns: title, text content (up to 8000 chars), extracted links, HTTP status code. A status of 0 means the hidden service is unreachable or offline.
ask.py — LLM OSINT analysis# Inline content
python3 ask.py \
--query "LockBit ransomware" \
--mode ransomware \
--content "page text from scraped pages"
# From file
python3 ask.py \
--query "acme.com" \
--mode corporate \
--file /tmp/scraped_pages.txt
# Pipe from fetch.py
python3 fetch.py --url "http://some.onion" --json | \
python3 -c "import sys,json; print(json.load(sys.stdin)['text'])" | \
python3 ask.py --query "investigate" --mode threat_intel
# Custom analysis focus
python3 ask.py \
--query "mixer services" \
--mode threat_intel \
--content "..." \
--custom "Focus on cryptocurrency wallet addresses only"
Modes: threat_intel · ransomware · personal_identity · corporate — see Analysis modes.
pipeline.py — full investigation (one command)Runs the complete Robin OSINT pipeline automatically:
# Basic
python3 pipeline.py --query "hospital ransomware 2026"
# With analysis mode and output file
python3 pipeline.py \
--query "acme.com credentials leak" \
--mode corporate \
--out report.md
# Full options
python3 pipeline.py \
--query "QUERY" \
--mode ransomware \
--max 50 \
--scrape 12 \
--custom "Focus on ransom amounts and victim industries" \
--out report.md
Steps 1–6 work fully without an LLM key. Only steps 3, 5, and 7 use the LLM — they fall back gracefully when no key is set, printing what was collected so far.
# --clear-cache: discard cached fetch results before this run
python3 pipeline.py --query "fresh data" --clear-cache
# --version: print OnionClaw version
python3 pipeline.py --version
sync_sicry.py — update bundled SICRY engineOnionClaw bundles a copy of sicry.py from the upstream SICRY™ repo.
sync_sicry.py lets you pull the latest version (or a specific release tag) without a full git pull.
# Fetch latest from main branch
python3 sync_sicry.py
# Fetch a specific release tag
python3 sync_sicry.py --tag v1.2.0
# Preview what would happen without writing
python3 sync_sicry.py --dry-run
# Show version
python3 sync_sicry.py --version
After syncing, commit the updated file:
git add sicry.py && git commit -m "chore: sync sicry.py to SICRY v1.2.0"
Update notices —
pipeline.py(andsicry.check_update()) checks the GitHub Releases API (/releases/latest). Only published formal releases trigger a notice — plain git tags and pre-releases are silently ignored.
python3 check_tor.py
python3 pipeline.py \
--query "acme.com email passwords" \
--mode corporate \
--scrape 10 \
--out acme_leak_report.md
python3 check_tor.py
python3 search.py \
--query "LockBit healthcare 2026" \
--engines Ahmia Tor66 Ahmia-clearnet \
--max 40
# Fetch the most relevant URL
python3 fetch.py --url "http://..." > /tmp/page.json
# Analyse
python3 ask.py \
--query "LockBit healthcare 2026" \
--mode ransomware \
--file /tmp/page.json
python3 pipeline.py \
--query "[email protected] personal data" \
--mode personal_identity \
--scrape 8
# 1. Verify Tor
python3 check_tor.py
# 2. Find alive engines
python3 check_engines.py
# 3. Search with alive engines
python3 search.py \
--query "ransomware hospital 2026" \
--engines Ahmia Tor66 OSS \
--max 40
# 4. Fetch top pages
python3 fetch.py --url "http://..." --links
python3 fetch.py --url "http://..."
# 5. Analyse
python3 ask.py \
--query "hospital ransomware" \
--mode ransomware \
--content "combined text from pages"
# 6. Rotate identity when done
python3 renew.py
threat_intel (default)General dark web OSINT. Extracts: IoCs, infrastructure details, actor mentions, next investigation steps.
Output sections: Input Query · Source Links · Investigation Artifacts · Key Insights · Recommended Next Steps
ransomwareMalware/RaaS intelligence. Extracts C2 domains, file hashes, MITRE ATT&CK TTPs, victim sectors, ransom amounts.
Output sections: Input Query · Source Links · Malware/Ransomware Indicators · Threat Actor Profile · Key Insights · Recommended Next Steps
personal_identityPII and breach exposure. Surfaces SSNs, emails, passwords, passport data, breach sources, risk severity ratings.
Output sections: Input Query · Source Links · Exposed PII Artifacts · Breach/Marketplace Sources · Exposure Risk Assessment · Key Insights · Recommended Next Steps
corporateCorporate threat intelligence. Detects leaked credentials, source code, internal documents, initial access broker activity.
Output sections: Input Query · Source Links · Leaked Corporate Artifacts · Threat Actor/Broker Activity · Business Impact Assessment · Key Insights · Recommended Next Steps
✗ Tor NOT active
# Is Tor running?
pgrep tor || tor &
# Is port 9050 listening?
ss -tlnp | grep 9050
renew.py → success: false
# Is control port open?
ss -tlnp | grep 9051
# Enable it in torrc:
echo "ControlPort 9051" >> /etc/tor/torrc
echo "CookieAuthentication 1" >> /etc/tor/torrc
systemctl restart tor
# Set correct DataDirectory in .env:
TOR_DATA_DIR=/var/lib/tor # system Tor (Debian/Ubuntu)
TOR_DATA_DIR=/tmp/tor_data # custom torrc DataDirectory
fetch.py → status: 0
The hidden service is offline. .onion sites go down frequently — try a different URL from search.py results. Confirm Tor is healthy with check_tor.py.
search.py returns 0 results
Dark web indexes fluctuate. Run check_engines.py to find alive engines, then use --engines Ahmia Ahmia-clearnet as reliable fallbacks.
ask.py / pipeline.py LLM error
Set LLM_PROVIDER and an API key in .env. For no-key local operation: LLM_PROVIDER=ollama with a running Ollama instance. All five non-LLM scripts (check_tor, renew, check_engines, search, fetch) work without any key.
ERROR: sicry.py not found
sicry.py must be in the OnionClaw root (same folder as SKILL.md). It is included in this repo — do not delete or move it. If you cloned and it is missing, re-clone fresh.
How OnionClaw’s pieces fit together — from a command-line invocation all the way to a .onion response.
┌──────────────────────────────────────────────────────────────┐
│ User / OpenClaw Agent / CI script │
│ python3 pipeline.py --query … | pipeline.py --daemon-poll │
└───────────────────────────┬───────────────────────────────┘
│
Python wrappers ▼
┌──────────────────────────────────────────────────────────────┐
│ OnionClaw command layer │
│ │
│ check_tor.py renew.py fetch.py search.py ask.py │
│ check_engines.py pipeline.py sync_sicry.py │
│ │
│ All call into ↓ one file │
└────────────────────────────┬──────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ SICRY™ (sicry.py — bundled) │
│ │
│ check_tor() search(query, engines, …) │
│ renew_identity() scrape_all(urls) │
│ fetch(url) ask(content, mode, …) │
│ check_search_engines() refine_query() filter_results() │
│ │
│ State: SQLite DB (watch jobs · engine stats · result cache) │
└─────┬──────────────────────────┬──────────────────────────────┘
│ SOCKS5 │ stem control
│ 127.0.0.1:9050 │ 127.0.0.1:9051
▼ ▼
┌───────────────────┐ ┌───────────────────┐
│ Tor (tor / TorPool) │ │ Tor Control Port │
│ SOCKS5 proxy │◄─│ renew_identity() │
└─────┬─────────────┘ └───────────────────┘
│ onion routing (3 hops)
▼
┌──────────────────────────────────────────────────────────────┐
│ Dark Web / Tor Network │
│ │
│ 18 search engines (.onion) Clearnet via Tor exit nodes │
│ Ahmia · DuckDuckGo-Tor Any HTTPS/HTTP URL │
│ Tor66 · + 15 more… │
└──────────────────────────────────────────────────────────────┘
--query / watch job
│
▼
[1] check_tor() → abort if not active
[2] check_search_engines() → collect live engine list
[3] refine_query() → LLM: natural language → ≤5 keywords
[4] search(engines=live) → parallel queries over Tor
[5] filter_results() → LLM: keep top 20 relevant
[6] scrape_all(best[:N]) → concurrent batch-fetch over Tor
[7] ask(content, mode=…) → LLM OSINT report
│
▼
report [→ --out file.md] [→ --watch-check --output-dir]
Set SICRY_POOL_SIZE=N (recommended 2–4) to run N independent Tor processes
for higher search throughput:
pipeline.py ─→ TorPool
├── tor[0] :9050
├── tor[1] :9052
└── tor[N-1]:...
pipeline.py --check-update calls sicry.check_update(), which queries the
GitHub Releases API (/releases/latest). Only published formal releases
trigger a notice — plain git tags and pre-releases are silently ignored.
OnionClaw/
├── SKILL.md ← OpenClaw skill descriptor (YAML frontmatter)
├── sicry.py ← SICRY engine (bundled — no separate install needed)
├── .env.example ← Copy to .env and configure
├── README.md ← This file
├── check_tor.py ← Verify Tor / show exit IP
├── renew.py ← Rotate Tor circuit
├── check_engines.py ← Ping all 18 engines
├── search.py ← Search dark web
├── fetch.py ← Fetch .onion pages
├── ask.py ← OSINT analysis via LLM
├── pipeline.py ← Full Robin investigation pipeline
└── sync_sicry.py ← Sync SICRY engine from upstream
Apache License 2.0 — Copyright (c) 2026 JacobJandon
"OnionClaw" and the OnionClaw logo are owned by JacobJandon.
See LICENSE for full text.
⚠️ Use responsibly and lawfully. Built for OSINT, security research, and threat intelligence. Read The Rabbit Hole section before deploying autonomously.
OnionClaw™ — OpenClaw skill for full Tor dark web access: search .onion sites, fetch hidden services, rotate identity, run OSINT pipeline, craw.
เครื่องมือ
ยังไม่มีรายการเครื่องมือ เซิร์ฟเวอร์แบบรีโมตจะได้รายการหลังการตรวจสอบสถานะครั้งแรก
FAQ
คัดลอกคอนฟิก stdio สำหรับ Cursor, Claude Desktop, Claude Code หรือ VS Code ได้ในหน้านี้ คอนฟิกนี้ใช้การติดตั้งของผู้เผยแพร่ ไม่ใช่พร็อกซีของ PlugMCP
ระเบียนนี้ไม่ได้ระบุตัวแปรสภาพแวดล้อมที่จำเป็น
OnionClaw ทำงานแบบโลคัลผ่าน stdio
ตรวจสอบล่าสุดเมื่อ 2026-11-05 OnionClaw™ — OpenClaw skill for full Tor dark web access: search .onion sites, fetch hidden services, rotate identity, run OSINT pipeline, craw.