Skip to main content

WordForge

WordForge

Wordlists forged for your target, not for everyone's.

CI License: AGPL-3.0 Python 3.12+ Coverage Type-checked Stars


Why WordForge?

Generic wordlists like rockyou, SecLists/discovery, or common.txt are noisy against specific targets. Throwing 200,000 generic passwords at an enterprise login is inefficient and loud.

WordForge generates hyper-contextual wordlists from passive OSINT of your target: their website, GitHub orgs, public docs, employee profiles, and historical content. The result is wordlists that are an order of magnitude more relevant than generic ones — usernames realistic to the company, directory paths matching the actual stack, parameters matching internal naming, and subdomains rooted in real codenames.

Designed as a companion to SubSift: same stack, same philosophy, pipe-friendly.

Features

  • Passive OSINT collection — website crawler, GitHub org metadata, Wayback Machine, DNS, response headers — all async, rate-limited, polite.
  • NER + pattern extraction — spaCy identifies people, organizations, products, locations; heuristics surface internal jargon and codenames.
  • Multi-provider LLM — Ollama (local, free), Anthropic (premium), or OpenAI. Switch at runtime from the UI or CLI.
  • HashCat-style mutations — capitalization, leet, year suffixes, role combinations, configurable rules.
  • Categorized output — usernames, passwords, paths, subdomains, parameters, emails, company name variants.
  • Pipe-friendly — wordforge generate ... | subsift scan.
  • Live dashboard — the web UI streams per-stage progress over SSE (collect → extract → generate → mutate), then renders a tabbed result card with copy / download / pipe-to-SubSift actions.
  • Operator seeds — --seed employees.txt folds LinkedIn-derived names straight into the LLM context and the offline fallback.
  • Personal OPSEC awareness — wordforge person --username … --github … gathers an employee's public footprint (handle enumeration across ~25 platforms, GitHub, supplied URLs, pasted --text), derives the passwords an attacker would guess, and checks them against HaveIBeenPwned — so awareness training can say "295 of these are already in breaches." For authorized engagements.
  • Self-diagnostic — wordforge doctor reports DNS, HTTPS, LLM provider, spaCy model, cache, and DB readiness in one shot.
  • One-command Docker — docker compose up and you're scanning.

LLM providers

WordForge supports three LLM providers. Choose the trade-off that fits.

Provider Privacy Cost Quality Setup
Ollama (default) 🟢 Local-only 🟢 Free 🟡 Good Run ollama serve; default model llama3.1:8b
Anthropic Claude 🔴 API call 🟡 Pay-per-token 🟢 Excellent Set ANTHROPIC_API_KEY; default model claude-sonnet-4-5
OpenAI 🔴 API call 🟡 Pay-per-token 🟢 Excellent Set OPENAI_API_KEY; default model gpt-4o-mini

Set WORDFORGE_LLM_PROVIDER=ollama|anthropic|openai in .env, or switch on the fly with --provider on the CLI, or click the provider icon in the web UI.

Quickstart

Install as a tool from PyPI (easiest — nothing to clone):

uv tool install wordforge      # or: pipx install wordforge
wordforge models download      # one-time: fetch the spaCy NER model
wordforge doctor
wordforge generate example.com

Or run the whole stack with Docker:

git clone https://github.com/Ataraxia-ia-labs/WordForge.git
cd WordForge
cp .env.example .env       # edit if you want non-default provider
docker compose up --build  # web UI on http://localhost:8001

Or from source with uv (the spaCy NER model installs automatically via uv sync):

uv sync --extra dev
uv run wordforge doctor
uv run wordforge generate example.com --provider ollama

New here? The full Usage Guide walks through install, provider setup, your first wordlist, and feeding the output into ffuf / hydra / hashcat / SubSift.

Usage

CLI

# First time? Check your setup is healthy.
wordforge doctor

# Generate all categories for a target
wordforge generate example.com

# Pipe subdomains directly to SubSift
wordforge generate example.com --format subdomains | \
  subsift scan --wordlist - example.com

# Seed with employees you've already collected (LinkedIn export, etc.)
wordforge generate example.com --seed employees.txt

# Choose provider per run
wordforge generate example.com --provider anthropic

# Export to a ZIP bundle
wordforge generate example.com --format zip --output bundle.zip

# Apply a hashcat rule file to the password candidates
wordforge generate example.com --rules best64.rule

# Run a whole list of targets (one per line); failures don't abort the batch
wordforge generate-batch targets.txt

# Compare two runs (or two snapshots of the same target over time)
wordforge diff out/example.com.old out/example.com --show

# Personal OPSEC awareness (authorized): gather a footprint, show the risk
wordforge person --name "Jane Doe" --username jdoe --github jdoe --company acme.com

# ...with a handout HTML report, or a whole roster at once
wordforge person --username jdoe --report jdoe.html
wordforge person-batch employees.csv      # per-employee reports + index.html

# Browse past generations
wordforge list

Web UI

Open http://localhost:8001, enter a target, pick a provider from the selector, click Forge. Stream results in real time, download per category, or grab the ZIP bundle.

Integration with SubSift

wordforge generate target.com --format subdomains | \
  subsift scan --wordlist - target.com

WordForge detects pipes automatically: when stdout is not a TTY, the banner and logs are suppressed, only data goes to stdout.

Configuration

See .env.example for the complete list. Key variables:

Variable Default Description
WORDFORGE_PORT 8001 Web UI / API port
WORDFORGE_LLM_PROVIDER ollama ollama, anthropic, openai
OLLAMA_HOST http://localhost:11434 Ollama endpoint
OLLAMA_MODEL llama3.1:8b Ollama model
ANTHROPIC_MODEL claude-sonnet-4-5 Anthropic model
OPENAI_MODEL gpt-4o-mini OpenAI model
WORDFORGE_RATE_LIMIT_PER_HOST 1.0 Requests/sec per hostname
WORDFORGE_CRAWL_MAX_DEPTH 2 Crawler depth

Architecture

flowchart LR
    A[Target] --> B[Collectors]
    B -->|Website| C[Extractors]
    B -->|GitHub| C
    B -->|Wayback| C
    B -->|DNS| C
    C -->|NER + Patterns| D[LLM Provider]
    D -->|Ollama / Claude / OpenAI| E[Generators]
    E --> F[Mutators]
    F --> G[Exporters]
    G -->|txt / json / zip| H[Wordlists]

Roadmap

Shipped in v0.1.0

  • Async pipeline with 4 collectors (Website BFS+robots, DNS, Wayback CDX, GitHub REST)
  • LLM-driven generators with cached prompts (Ollama / Anthropic / OpenAI)
  • HashCat-style rule engine + case/leet/year/suffix mutators
  • HTMX dashboard with provider selector + recent-runs panel
  • Runtime provider switching from the dashboard
  • Pipe-friendly integration with SubSift
  • wordforge doctor self-diagnostic
  • --seed flag for operator-supplied seed lists (e.g. LinkedIn names)
  • SQLite-backed history (wordforge list)

Shipped in v0.2.0

  • SSE-streamed live progress in the dashboard (per-stage updates)

Shipped (unreleased)

  • PyPI distribution (uv tool install wordforge / pipx) + automated tag releases
  • Multi-target batch mode (wordforge generate-batch targets.txt)
  • Run-diff: compare two run outputs (wordforge diff a/ b/)
  • Hashcat ruleset import (generate --rules best64.rule)

Planned for v0.3

  • Optional API auth (HMAC-signed bearer for /api/generate)
  • Prometheus /metrics endpoint
  • Burp Suite extension (separate repo)
  • Plugin API for custom collectors

Contributing

See CONTRIBUTING.md. Issues and PRs welcome.

Disclaimer

WordForge is for authorized security testing only. Read DISCLAIMER.md before use. Unauthorized scanning may violate computer fraud laws.

License

AGPL-3.0-or-later. If you run a modified version as a network service, you must release your modifications under the same license.

Acknowledgements

Built on the shoulders of: FastAPI, Typer, httpx, trafilatura, spaCy, Ollama, and the broader ProjectDiscovery ecosystem that inspires the pipe-friendly philosophy.

Metadata

Release files for wordforge 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wordforge 0.4.0
File Size Uploaded
wordforge-0.4.0.tar.gz 522.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wordforge 0.4.0
File Interpreter ABI Platform
wordforge-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 692.6 kB

Release files / wordforge-0.4.0.tar.gz

Download URL wordforge-0.4.0.tar.gz
Size 522.0 kB
Tags Source
SHA-256 checksum
How to use checksums
21be7f426cc88a0512e560b227a984e93181243f261cb58c3ed19dc5b3b38eba
BLAKE2b-256 checksum
How to use checksums
cd39ca74a6507c9ea3aa99483a9b7c7515789812f92f188908ffccb5df01cba4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 26, 2026.

Transparency log

Release files / wordforge-0.4.0-py3-none-any.whl

Download URL wordforge-0.4.0-py3-none-any.whl
Size 170.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a35de483f27e31a39189122ec8ec3aded709f1897c9e269ed9059682ceca4a68
BLAKE2b-256 checksum
How to use checksums
0b85688ef470229c72e403076408966349488e79540e70379624909636626258
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page