mrkeyoor.com_
Tue 01 Sept 17:05 UTC
AI Toolsevaluationupdated 01 Sept 2026

robin review

Robin is a Streamlit tool for lawful dark-web research. It sends a short query through several Tor search engines, asks an LLM to rank the results, scrapes selected pages, and produces a saved investigation summary with follow-up questions.

trackingstars / 7d
Verdict

Our Robin run installed 127 packages in 42 seconds and built in 4 seconds, but the repository offered no test target. It is useful as a private analyst workbench for finding leads across several onion indexes, especially with a local model. Do not treat its summary as evidence, and do not expose the default Streamlit service until you add authentication, retention rules, and a process for preserving the original pages.

We ran it

Lab card: what happened when we ran robinScreenshot of robin (github.com/apurvsinghgautam/robin)
Install✓ · 42s127 packages · 542 MB
Build✓ · 4s
Testsn/ano test script
Known vulns0(pip-audit)
Repo24 files~2,076 lines of source · 17.5 MB · 2 CI workflows · Dockerfile

Answers from our run

Does robin build from source?

Dependencies installed in 42 seconds (127 packages), and the build succeeded in 4 seconds. We cloned commit 575d105 into a clean Debian container with 3 CPUs and no project-specific setup.

Does robin have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does robin have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use robin?

Analysts who need court-ready collection or a defensible chain of custody: Robin keeps short scraped excerpts and an LLM-written summary, not a forensic capture of each page.

What are the alternatives to robin?

SpiderFoot, theHarvester, Ahmia. Our Robin run installed 127 packages in 42 seconds and built in 4 seconds, but the repository offered no test target.

Setup3/5Docker is direct, but Tor, an LLM, storage, and access policy remain
Docs3/5Core install and providers are clear; security operations are thin
Community4/56,900 stars with August 2026 push and issue activity
Maturity2/5v2.8 is active, but no test target and volatile search dependencies

Who it’s for

Threat-intelligence analysts who want one interface for initial onion-site discovery and will verify every finding.
Security researchers with legal approval to use Tor and inspect potentially harmful material.
Teams that want to compare hosted LLMs with local Ollama or llama.cpp models.
Solo investigators who can keep the Streamlit service private and preserve source evidence separately.

Who it’s NOT for

Analysts who need court-ready collection or a defensible chain of custody: Robin keeps short scraped excerpts and an LLM-written summary, not a forensic capture of each page.
Organizations that cannot send investigative terms or source text to a third-party model: the README warns about sensitive queries, though Ollama and llama.cpp provide local options.
Users expecting stable dark-web coverage: the code hardcodes 16 onion search endpoints, and open issue 134 reports that some links have become invalid.
Teams planning to expose the default UI to multiple users: the container binds Streamlit to 0.0.0.0, while the README documents no authentication or access-control layer.
Buyers who require an upstream regression suite: the repository has no tests directory and exposes no test target.

Setup reality

Our sandbox installed 127 packages in 42 seconds and used 542 MB. The build succeeded in 4 seconds. The repository had no test script or target, so tests were skipped. Pip-audit found 0 known vulnerabilities in the installed environment.

The recommended Docker image bundles Tor and starts Streamlit on port 8501. A source install needs Python 3.10 or newer plus a Tor service on 127.0.0.1:9050. Investigations also need one configured hosted LLM key or a reachable local Ollama, llama.cpp, or OpenAI-compatible endpoint.

Saved investigations disappear with a disposable container unless /app/investigations is mounted. Onion-engine availability changes independently of Robin, and the default web server has no documented login layer, so network exposure and access policy remain operator work.

Sixteen onion search engines feed one investigation

Robin's source defines 16 onion search endpoints, including Ahmia, OnionLand, and Torgle. A query is rewritten to 5 words or fewer, sent to those engines through a Tor SOCKS proxy, and deduplicated by link. The Streamlit interface then presents selected findings, generates a report, saves an investigation, and supports follow-up questions grounded in that saved data. This is useful consolidation for an analyst who would otherwise repeat the same search across several unreliable sites.

The project is small enough to read before trusting it. Our commit 575d105 checkout had 24 files, roughly 2,076 source lines, and 17.5 MB. Search, scraping, model configuration, health checks, and UI code are split into plain Python modules. Two GitHub workflow files and a Dockerfile cover releases and packaging. The small codebase makes local changes realistic, although it also means important policy choices sit directly in application code instead of a larger investigation platform.

The LLM selects at most 20 result titles

Robin asks the chosen model to pick up to 20 indices from a list of titles and links. If the response cannot be parsed into valid indices, the code falls back to the first 20 results. That behavior keeps an investigation moving, but it can quietly replace relevance ranking with search-engine order. Analysts should review the unfiltered link set and record the model used, since a different provider can refine the original query or rank the same titles differently.

Scraping has deliberate size limits. Robin reads at most 1,000,000 bytes from a page, extracts up to 50,000 text characters, and returns no more than 2,000 characters per URL to the next stage. Our installed environment added 127 packages and occupied 542 MB, yet the evidence supplied to the summary is still a short excerpt. A page can place the decisive context after that cutoff, and non-text content types are ignored. Open the source page before accepting a claim.

What happened when we ran it

Our sandbox installed 127 Python packages in 42 seconds and used 542 MB on disk. The build succeeded in 4 seconds. Pip-audit found 0 known vulnerabilities in the installed dependency set for commit 575d105. The checkout included a Dockerfile and 2 CI workflow files, so packaging is more explicit than the repository's 24-file size might suggest. The lab run did not include Tor access, an LLM credential, or a live onion investigation.

Tests were skipped because the repository had no test script or target. There was also no tests directory. The passing 4-second build proves that the package step completed in our Python 3.12 Debian container; it does not verify search parsing, Tor routing, LLM selection, report grounding, saved-investigation recovery, or the Streamlit UI. Those are the behaviors that determine whether Robin helps an analyst, so a known-query acceptance check should accompany every image or model update.

Docker starts Tor and exposes port 8501

The recommended image installs Tor, waits up to 60 seconds for 127.0.0.1:9050, and then starts Streamlit on 0.0.0.0:8501. The README maps that port to the host and tells users to open localhost. It does not describe login, TLS, role separation, or a reverse-proxy policy. Keep the binding private, or place Robin behind an authenticated service before more than one trusted analyst can reach it. Search terms and stored reports can themselves be sensitive.

A disposable container also needs a volume if investigations must survive. The README mounts a host directory at /app/investigations for that purpose, while API secrets come from a mounted .env file. The 542 MB Python environment does not include an external hosted-model bill or a local Ollama model. Operators should set file permissions on both mounts, rotate provider keys, and decide when saved investigations expire. A report archive without ownership and deletion rules becomes a second intelligence leak.

Empty results can mean a dead engine

Search requests use retries and a 40-second timeout, but the fetch function returns an empty list after an exception or a non-200 response. Scraping failures can fall back to the page title. That makes an empty or thin investigation ambiguous: the topic may have no indexed results, several onion engines may be offline, or pages may have rejected the request. Robin includes health checks, yet analysts still need to record which engines answered during each collection.

Open issue 134 says some listed links have become invalid, and issue 138 documents difficulty getting search engines through a bridged Tor setup. Those reports fit the operating environment more than they indict one release. Onion services move and Tor policy differs by network. The 16 configured engines increase discovery breadth, but they do not provide a stable corpus. Re-run important searches, preserve original URLs and timestamps, and capture pages through an approved evidence process.

Local models keep the investigation text nearby

Robin supports OpenAI, Anthropic, Gemini, OpenRouter, Ollama, llama.cpp, and other OpenAI-compatible endpoints. Hosted providers need their respective keys. Local providers reduce external disclosure of the rewritten query and scraped excerpts, provided the model server and Robin remain on controlled hosts. The README specifically warns users to review third-party terms before sending sensitive investigative material. That warning should be part of onboarding, since a harmless company name can reveal an active case when paired with a breach term.

Version 2.8 was published on July 15, 2026 with session-scoped follow-up chat, one-click pivots, stricter grounding instructions, and a fix for blank findings from reasoning models. GitHub recorded the last push on August 25, while open issue activity continued on August 18. The repository showed 6,900 stars and 15 combined issues and pull requests when fetched. Robin is maintained and easy to try. Its output remains an analyst lead that needs source verification and lawful handling.

Alternatives

ProjectWhat it isPick it when
SpiderFoot gh↗An automated OSINT platform for threat intelligence and attack-surface mapping.pick this instead when broad, module-based OSINT across many public data sources matters more than an LLM-guided onion search.
theHarvesterA command-line collector for emails, names, hosts, and subdomains from public sources.pick this instead when the job is organization reconnaissance on the public internet and you want structured collection without LLM summaries.
AhmiaThe open-source site behind a searchable index of onion services.pick this instead when you need a direct hidden-service search engine or want to operate an index without Robin's reporting workflow.

What people are saying

  1. [github-trending] apurvsinghgautam/robin
  2. [theverge] Robin Williams’ Instagram account brought back to fight ‘AI abuse’

Sources

  1. Robin repository and README
  2. Robin v2.8 release
  3. Robin search implementation
  4. Robin scraping implementation
  5. Invalid onion links report
  6. Tor bridge setup report

More ai tools reviews

claudian · SkillSpector · mjlab · MoGe · awesome-design-md · Code-as-World · the whole board →