___ _________ __ _________
/ __/ / ___/ _ \/ / / /_ __/
_\ \ / /__/ // / /_/ / / /
/___/ \___/\____/\____/ /_/ intelligence collector
A lightweight, containerized agentic intelligence collector. Give it a mission in plain English; Scout reasons about where the intelligence lives, sends a team of agents to collect it, maps what it finds into a graph, and hands back a sourced report.
- Run it free, or bring your own model. Scout is model-agnostic. Start on a free no-credit-card tier (Groq, Google Gemini, or NVIDIA NIM) in ~2 minutes, point it at a frontier key (Claude, GPT) for the richest results, or run it fully offline against a local model.
- 33 specialized OSINT tools, auto-detected. Beyond web search and fetch, Scout ships a pluggable library spanning accounts, email, phone, social, domain/recon, sanctions screening, crypto, news, and more. It probes your environment at startup and hands agents only the tools that are usable - and tells you which relevant ones you could enable.
- Every source is fair game. Web, APIs, your local documents, and gated or offline knowledge - when an agent needs credentials or first-hand input, it pauses and asks you in the terminal.
A working, self-hostable foundation for agentic data collection - not a managed product. Pull it, run it in Docker, point it at a goal, and watch agents plan, search, read, ask you for help when they're blocked, and assemble a sourced report. Early and single-operator by design, but real.
No paid account, no credit card. Scout runs on free model tiers. You need Docker and git.
1. Get a free API key (pick one):
- Groq (recommended - fastest): open console.groq.com/keys,
sign in with Google or email, click Create API Key, and copy the key (it
starts with
gsk_). - Google Gemini: open aistudio.google.com/apikey, sign in, click Create API key, and copy it.
- NVIDIA NIM: open build.nvidia.com, make a free
developer account (no card), and copy your
nvapi-key. Gives you DeepSeek and 80+ other models.
2. Get the code and config file:
git clone https://github.com/tllongdev/scout.git
cd scout
cp .env.example .env3. Paste your key into .env. Open .env in any editor and set the two
lines for the provider you chose:
# If you used Groq:
SCOUT_MODEL=groq/llama-3.3-70b-versatile
GROQ_API_KEY=gsk_paste_your_key_here
# Or if you used Gemini instead:
# SCOUT_MODEL=gemini/gemini-2.5-flash
# GEMINI_API_KEY=paste_your_key_here
# Or if you used NVIDIA instead (DeepSeek with tool calling):
# SCOUT_MODEL=nvidia_nim/deepseek-ai/deepseek-v3.2-exp
# NVIDIA_NIM_API_KEY=nvapi-paste_your_key_here4. Run your first mission:
./run.sh "Investigate Acme Robotics and its key partners"That's it. Results land in ./output/: a findings.md report and an
interactive graph.html you can open in your browser.
No key yet and just want to watch it run? Use
SCOUT_MODEL=mock ./run.sh "..."
- it runs the whole pipeline with scripted, illustrative output (no key, no cost).
mission brief
│
▼
┌──────────┐ decomposes the goal into focused collection tasks
│ Planner │ (reasons about web, APIs, local docs, and gated/offline sources)
└────┬─────┘
│ ┌─ auto-detects usable OSINT tools for this run, and
▼ │ flags relevant ones you haven't enabled yet
┌──────────┐ ─┘
│Collectors│ one agent per task, each with:
│ │ core tools: web_search · web_fetch · local_files · ask_human
│ │ + 33 specialized OSINT tools (accounts, email, phone, social,
│ │ recon, sanctions, crypto, news, geo...) - whichever are usable
│ │ + records entities, relationships, observations as it goes
└────┬─────┘
│
▼
┌──────────┐ draws sourced conclusions over the collected graph
│Synthesis │
└────┬─────┘
│
▼
output/ → findings.md · graph.html · graph.json · raw_documents.json
The specialized tools are pluggable and discovered at startup (see Tool library): Scout only hands an agent the tools that are actually usable given your keys, packages, and binaries, and lists the relevant ones you could turn on.
Nothing is off the table as a source - including material that isn't on the internet. When an agent needs credentials, access to a gated system, or first-hand knowledge, it pauses and asks you right in the terminal.
Beyond web search and fetch, Scout ships a pluggable library of specialized
OSINT tools. At mission start it auto-detects which tools are usable - based
on the keys, packages, and binaries you have - and hands only those to the
agents (same idea as model discovery). Run scout tools to see live status.
Keyless tools work out of the box; the rest light up when you add a key, install
an extra (pip install "scout[osint]"), or point Scout at a cloned repo.
If a mission would clearly benefit from a tool you haven't enabled, Scout tells you - at the start of the run and in the report it lists the relevant unconfigured tools and the exact step to turn each one on.
Looking for more tools to add? scout discover queries GitHub for the
top-starred OSINT repos and flags which Scout already integrates, so you can
spot strong new candidates to wrap into the registry (scout discover phone to
focus the search). The agents themselves
work the mission by every legitimate means (reasoning, web search/fetch, reading
your files, asking you), and reach for a specialized tool whenever the task is
something that tool is built for.
| Tool | Category | What it's for | Needs |
|---|---|---|---|
| airplanes.live | aviation | Live ADS-B flight tracking (incl. military) | nothing (free) |
| web-check | web recon | DNS, SSL, headers, WHOIS, ports for a domain | nothing (free) |
| Reddit (PullPush) | social | User history + search, incl. removed content | nothing (free) |
| Data-broker opt-out | data hygiene | Removal links for people-search brokers | nothing (free) |
| GDELT News | news | Near-real-time global news/event search | nothing (free) |
| Telegram OSINT | social | Read public Telegram channel posts | nothing (free) |
| Crypto Wallet Trace | crypto | BTC/ETH balance + activity via explorers | nothing (free) |
| NVD CVE Lookup | cyber | CVEs by id or product keyword (CVSS) | nothing (free) |
| Scrapling | web recon | Anti-bot / stealth scraping | pip install scrapling |
| GeoCLIP | geolocation | Open-source image → GPS, offline | pip install geoclip |
| image-matching-webui | imagery | Feature-match two images to corroborate scenes | pip install imcui |
| Presidio | data hygiene | Redact PII from collected text | pip install presidio-analyzer |
| BBOT ⚠ | recon | Recursive attack-surface / subdomain recon | pip install bbot |
| GHunt | accounts | Google account footprint from an email | pip install ghunt + login |
| maigret | accounts | Deep username dossier (3,000+ sites, profile parsing) | pip install maigret |
| Blackbird | accounts | Fast username/email search (WhatsMyName, 600+ sites) | clone repo, set SCOUT_BLACKBIRD_PATH |
| holehe | Which of 120+ sites an email is registered on | pip install holehe |
|
| theHarvester | Emails/names/subdomains for a domain | pip install theHarvester |
|
| PhoneInfoga | phone | Phone-number validation + footprint | phoneinfoga binary on PATH |
| dnstwist | web recon | Typosquat / lookalike / phishing domains | pip install dnstwist |
| Photon | web recon | Crawl a site for emails/handles/links/secrets | clone repo, set SCOUT_PHOTON_PATH |
| Instaloader | social | Public Instagram profile metadata | pip install instaloader |
| Toutatis ⚠ | social | Deep Instagram extraction (email/phone) | pip install toutatis + TOUTATIS_SESSION_ID |
| subfinder | web recon | Fast passive subdomain enumeration | subfinder binary on PATH |
| httpx | web recon | Probe hosts for liveness/title/tech | ProjectDiscovery httpx binary (set SCOUT_HTTPX_PATH if it clashes with python httpx[cli]) |
| SpiderFoot ⚠ | recon | All-in-one OSINT engine (200+ modules) | clone repo, set SCOUT_SPIDERFOOT_PATH |
| geowifi | geolocation | Geolocate a WiFi BSSID/SSID | clone repo, set SCOUT_GEOWIFI_PATH |
| Robin ⚠ | dark web | LLM-driven dark-web search (needs Tor) | robin on PATH |
| OpenSanctions | sanctions | Screen names vs OFAC SDN / PEP / watchlists | OPENSANCTIONS_API_KEY (free for journalists/NGOs) |
| Grayhat Warfare ⚠ | exposure | Search exposed S3/Azure/GCS buckets | GRAYHAT_API_KEY |
| FaceCheck.ID ⚠ | facial recognition | Reverse face search (paid) | FACECHECK_API_TOKEN |
| GeoSpy ⚠ | geolocation | AI photo geolocation (commercial) | GEOSPY_API_KEY |
| MarineTraffic / Kpler | maritime | Vessel tracking by MMSI/IMO (commercial) | MARINETRAFFIC_API_KEY |
⚠ = carries legal/ethical/reputational weight (surveillance, facial recognition,
exposed data, dark web). Use responsibly, lawfully, and within each service's
terms. Control what's active with SCOUT_TOOLS / SCOUT_DISABLE_TOOLS (see
.env.example).
Scout ships no credentials. You choose the model and supply your own key, so it
works with whatever you already pay for - or a model running on your own
hardware. Set this in .env:
For best results, use a frontier model. Scout's planning, multi-step tool use, and synthesis get sharply better with model quality. We recommend Claude Sonnet 4.6 for the best balance of depth, speed, and cost, or Claude Opus 4.8 for maximum extraction depth. The free Groq and Gemini tiers are great for trying Scout out - just expect richer graphs from a frontier model.
| You have... | SCOUT_MODEL |
Also set |
|---|---|---|
| Nothing - want a free real model | groq/llama-3.3-70b-versatile |
GROQ_API_KEY (free, no card) |
| A free Gemini key | gemini/gemini-2.5-flash |
GEMINI_API_KEY (free tier) |
| A free NVIDIA key | nvidia_nim/deepseek-ai/deepseek-v3.2-exp |
NVIDIA_NIM_API_KEY (free, no card) |
| A Claude / Anthropic key | anthropic/claude-sonnet-4-6 (or anthropic/claude-opus-4-8) |
ANTHROPIC_API_KEY |
| An OpenAI key | openai/gpt-5.5 |
OPENAI_API_KEY |
| Qwen on your home server (Ollama) | ollama/qwen2.5:14b |
SCOUT_API_BASE=http://host.docker.internal:11434 |
| Any OpenAI-compatible server (vLLM, LM Studio, TGI) | openai/<name> |
SCOUT_API_BASE=http://host.docker.internal:8000/v1 |
| Just want to see it run offline | mock |
nothing (no key, scripted output) |
Free tiers (Groq, Gemini, NVIDIA NIM) are rate-limited but plenty for a test mission - see
Get started free above for the 2-minute
setup. For heavy runs, use a paid or local model. The mock option runs the
full pipeline with scripted output and needs no key at all.
Scout can list the models your credentials can actually reach - it asks each provider's own API (and your local Ollama box), so you get real, current options rather than a guess:
docker compose run --rm scout modelsAnd if you run a mission without SCOUT_MODEL set, Scout discovers your
available models and lets you pick one interactively for that run.
Already set up (see Get started free)? A few more ways to run:
# Give agents offline/private documents to read (optional)
mkdir -p sources
cp ~/some-dossier.txt sources/
# Run a mission
./run.sh "Map the leadership and funding relationships of the top 5 AI safety nonprofits"
# Or without the helper script
docker compose run --rm scout "Your mission here"Results land in ./output/mission-<date>-<id>/:
findings.md- the report: summary, ranked findings, entities, relationshipsgraph.html- interactive intelligence graph (open in a browser)graph.json- the graph as node-link dataraw_documents.json- every source collected, verbatim, for audit
Set these in .env:
SCOUT_MAX_TASKS- how many collection tasks the planner may create (default 6)SCOUT_MAX_STEPS- max tool calls per collector agent (default 12)SCOUT_TEMPERATURE- model temperature (default 0.4)
uv venv && source .venv/bin/activate
uv pip install -e .
cp .env.example .env # add your model + key
scout "Your mission here"- This is an early, single-operator tool, not a hardened production service. Be a good citizen: respect site terms, rate limits, and the law.
- The
ask_humanflow makes Scout safe around credentials - it never invents secrets; it asks, and you can mask the input. - Graph quality scales with model quality. A frontier model produces noticeably richer entity/edge extraction than a small local one.