OpenHat is a workstation catalog and playbook builder for authorized security testing.
ohqs helps you find security tools, guides, extensions, and bounty platforms, then turns a situation + written scope into a step-by-step testing playbook.
It is not an exploit generator. Playbooks focus on detection, triage, validation, and reporting.
Only use ohqs against systems you are explicitly authorized to test.
Live app: https://web-ukryty-6366.vercel.app
- Enter what you're testing
- Enter your written scope
- Confirm that you have authorization
- Click Build playbook
The app will suggest relevant tools and steps for the engagement.
git clone <this-repo>
cd quick-start
makeThen open http://127.0.0.1:8787.
That's it. make builds ohqs, installs it on your PATH, builds the local search index, and starts the UI.
Prefer the terminal?
./bin/ohqs search nuclei
./bin/ohqs recommend \
--authorized \
--scope "authorized client scope" \
--situation "vibe-coded Next.js SaaS with authentication"
./bin/ohqs show gitleaksThe catalog is stored as YAML in catalog/.
ohqs indexes that catalog locally and uses it to match a situation to relevant tools and playbooks.
catalog YAML
↓
local search index
↓
playbook matching
↓
reviewed plan
↓
commands / findings / tools
Semantic search can also be enabled with vector embeddings.
If you provide an OpenAI-compatible model, ohqs can use it to draft the plan. The authorization and scope gates still apply.
- Search the security catalog
- Build playbooks for authorized engagements
- Export a reviewed
commands.sh - Install tools required by a playbook
- Run reviewed commands locally
- Open an isolated test browser
- Use local or hosted OpenAI-compatible models
- Browse the catalog through the web UI
- Browse bounty marketplaces and programs (Bounties tab)
The Bounties tab splits bounty/VDP listings into marketplaces (HackerOne, Bugcrowd, Immunefi, …), programs (single-org: MSRC, Apple, CERTs, …), and contracts (the individual programs inside marketplaces — live, ~930+ on the Bounties tab now).
Contracts come from free sources (bounty-targets-data, bbscope) refreshed on a schedule; the LLM scope-cleaning pass runs on a contributor's GPU.
- Cadence: daily, or at least weekly.
- Powered by
runhug— deploy a good HF model on RunPod in minutes, run it for pennies, or run it locally. - Pipeline:
scripts/bounty-ingest/(scrape-all → ingest → seed-contracts → embed-edge). - Calling @chaseleto and any GPU contributor to keep the refresh going.
- Need proxies or dummy credentials per platform? Reach out to @adamsiwiec1.
Build first with make:
./bin/ohqs serveUseful commands:
# Search the catalog
./bin/ohqs search nuclei
# Inspect a catalog entry
./bin/ohqs show gitleaks
# Build an authorized playbook
./bin/ohqs recommend \
--authorized \
--scope "HackerOne program example.com, in-scope www and api" \
--situation "Next.js SaaS with auth and a chat feature" \
--target https://app.example.com
# Draft with your configured model
./bin/ohqs recommend --authorized --scope "..." --situation "..." --llm
# Check dependencies
./bin/ohqs deps --authorized --scope "..." --situation "..."
# Install tools needed by a playbook
./bin/ohqs install --authorized --scope "..." --situation "..."
# Open the isolated browser
./bin/ohqs browser| Command | Purpose |
|---|---|
serve |
Start the local UI and API |
search <query> |
Search the catalog |
show <id> |
Show a catalog record |
recommend |
Build an authorized playbook |
recommend --llm |
Draft a playbook with your model |
index |
Build the local search index |
index --semantic |
Build the index with embeddings |
index download |
Download the prebuilt vectorized index |
ingest |
Import entries from a curated source |
ingest github |
Import GitHub projects for catalog review |
models list |
Show models that fit your hardware |
models install <id> |
Install a supported local model |
models serve <id> |
Serve a local model |
deps |
Check installed dependencies |
install |
Install missing playbook tools |
browser |
Open the isolated test browser |
run |
Run a reviewed commands.sh |
setup |
Show Kali / Exegol / BlackArch setup notes |
configure |
Show local configuration |
submodules |
Opt-in fetch of upstream resources |
The local UI runs at http://127.0.0.1:8787.
From the UI you can:
- Build an authorized playbook
- Search the catalog
- Draft a plan with your own model
- Download
commands.sh - Install missing tools
- Run reviewed commands
- Open the isolated test browser
The JSON API is available from the same process:
GET /healthz
GET /v1/search?q=
GET /v1/index
GET /v1/tools/{id}
GET /v1/models
POST /v1/recommend
POST /v1/deps
GET /v1/history
ohqs can use any OpenAI-compatible endpoint.
Your model is responsible for drafting the plan; ohqs provides the catalog, authorization gate, scope, and execution workflow.
For a local server:
./bin/ohqs configure --save \
--openai-base-url http://127.0.0.1:8000/v1 \
--openai-api-key sk-localThen:
./bin/ohqs recommend --authorized --scope "..." --situation "..." --llmEnvironment variables work too:
export OHQS_OPENAI_BASE_URL=http://127.0.0.1:8000/v1
export OHQS_OPENAI_API_KEY=sk-local
export OHQS_OPENAI_MODEL=your-modelConfiguration is stored locally in data/config.json, which is gitignored.
The model is prompted for an authorized security-testing plan, not exploit payloads. If the model response cannot be parsed, ohqs falls back to its deterministic template playbook.
The catalog contains:
- Security tools
- Browser extensions
- Guides and cheat sheets
- Reference documentation
- Operating systems
- Bug bounty platforms
- Scan indexes and other security resources
The YAML records in catalog/ are the source of truth.
The catalog inventory is documented in REFERENCES.md.
Search it with:
./bin/ohqs search <query>or use the search box in the web UI.
The repository can optionally include upstream security-tool repositories under third-party-resources/.
They are not cloned by default.
A normal clone is enough to use the catalog and ohqs:
git clone <this-repo>To fetch upstream resources later:
make submodulesOr fetch a specific catalog entry:
./bin/ohqs submodules gitleaksDo not use --recurse-submodules unless you intentionally want to download the upstream trees.
See third-party-resources/README.md for details.
You can import additional resources into a review file before adding them to the index.
Curated sources:
./bin/ohqs ingest --from awesome-web-securityGitHub:
./bin/ohqs ingest github --topics c2,reconnaissanceImported records are written to catalog/ingested.yaml.
They are de-duplicated and tagged for review before indexing.
Run ./bin/ohqs ingest --help for all available options.
EXAMPLES.md— worked examplesCONTRIBUTING.md— adding catalog recordsREFERENCES.md— catalog inventorythird-party-resources/README.md— upstream resources
ohqs/ Go application
catalog/ YAML catalog
third-party-resources/ Optional upstream repositories
REFERENCES.md Catalog inventory
docs/ Additional documentation
First-party ohqs code, catalog data, scripts, documentation, and the frontend are GPLv3.
Upstream projects under third-party-resources/ retain their own licenses. This repository does not relicense projects such as Metasploit, Wireshark, or SecLists.
See LICENSE and NOTICE.