Fast to start.

Proven before it ships.

Grimnir is an orchestrator for authorized penetration tests and bug bounty work. It classifies a target, scopes it, hands the work to six specialist agents, and compiles one report. No finding reaches that report until it has been reproduced.

Most of the cost of a finding is not finding it. It is proving it to someone else.

At a glance

One orchestrator. Six specialists. One gate.

You describe a target. Grimnir classifies it, scopes it, and delegates: HUGINN maps the surface, the right specialists test it, and nothing reaches the report until the evidence gate confirms it. Every step reads and writes the same engagement directory.

Grimnir at a glanceThe operator drives the GRIMNIR orchestrator, which classifies, scopes and plans, then hands off to HUGINN for recon first. HUGINN's asset map feeds the five specialist agents Specter, ARTEMIS, Hunter, Nimbus and Nomad. Their candidate findings pass an evidence gate from theoretical to confirmed, then the report compiler writes the report. A shared intel feed and the engagement directory hold state for every step.OPERATORPLANRECON FIRSTTESTPROVECOMPILEOUTPUTOperatorGRIMNIRclassify, scope,plan, delegateHUGINNPhase 0 reconSpecterAPI and webARTEMISGenAI, LLM, MCPHunternetwork and ADNimbuscloudNomadmobileEvidence gatetheoreticalto confirmedCompilermerge, dedupReportconfirmed onlyintel.jsonl: shared cross-agent feed, routing-taggedEngagement directory: $GRIMNIR_WORKSPACE/project/scope.md roe.json state.json asset-map.json intel.jsonl decisions.jsonl activity.jsonlper-agent findings/ evidence/ reports/ report.md
Grimnir at a glance, stackedOperator, GRIMNIR orchestrator, HUGINN recon, five specialist agents, evidence gate, report compiler and report, with a shared intel feed and the engagement directory as common state.OperatorGRIMNIRclassify, scope, plan, delegateHUGINNPhase 0 recon, always firstSpecterAPI and webARTEMISGenAI, LLM, MCPHunternetwork and ADNimbuscloudNomadmobileEvidence gatetheoretical to confirmedReport compilermerge, dedupReportconfirmed findings onlyshared intel feedintel.jsonl: shared feedEngagement directoryscope.md roe.json state.jsonasset-map.json decisions.jsonlfindings/ evidence/ report.md

See the full architecture →

The differentiator

Findings are born theoretical.

Grimnir makes proof a property of the data, not a habit you have to remember. Every finding carries a validation state, and a single script is allowed to promote it, from evidence a confirmation primitive produced.

theoretical (default) validated confirmed refuted
Evidence gate lifecycleA finding is born theoretical. A reproducible proof of concept plus an independent check (negative control, screenshot or out-of-band hit) promotes it to confirmed; a failed check marks it refuted. Only confirmed findings ship.Findingborn theoreticalPoC + independent checknegative controlscreenshotout-of-bandvalidate-finding.sh reads the verdictHigh and Critical need the class artifactconfirmedcan shiprefutednever shipstheoretical findings stay in an appendix
Promotion needs reproducible proof plus an independent check.
Claim-split severity floorA finding lists a base claim plus escalations. Each claim is tested independently. If an escalation is refuted, the filed severity drops to the highest claim that survived instead of the whole finding being discarded.CLAIMS, EACH TESTED ON ITS OWNBase claimunauthorized readsurvivedEscalation 1write accesssurvivedEscalation 2account takeoverrefutedFiled severity = the floorhighest severity whose claims all survivedlowered, not killed
A refuted escalation lowers the severity; it does not kill the finding.

Confirmation harness

Primitives for differential authorization, authentication, tier checks, out-of-band SSRF, SSTI, SQL injection, XSS, JWT, races and MCP each write a machine-readable verdict. Promotion cannot claim more than the verdict says. Most run on stdlib Python.

Evidence gate

A High or Critical finding without the class-appropriate artifact (a negative control, a screenshot, an out-of-band hit) is hard-blocked from promotion. Only confirmed or validated findings reach a report body; theoretical ones sit in an appendix and are never submitted.

Claim-split verification

A finding lists a base claim plus its escalations, and each is tested on its own. Refute one escalation and the filed severity drops to the highest claim that survived, instead of the whole finding being thrown out. The hygiene check warns when a draft claims more than that floor.

Fresh-eyes review

Pack a finding, its evidence and its repro script into an isolated packet for a reviewer with no engagement context, and see whether it stands on its own.

Report hygiene

A linter checks outbound reports for internal identifiers, codenames and stray punctuation before filing. Templates cover a single-finding bounty report, a rebuttal playbook and a pre-submission checklist.

Coverage with a denominator

Scope is reconciled against what was tested (tested, skipped, gated, untouched), and an engagement cannot close on the assets that happened to get attention. Coverage is reported as "22 of 811 endpoints", never "airtight".

How an engagement runs

Recon first. Then the right specialist.

Grimnir is a methodology layer, not a scanner. It decides where to spend effort, keeps testing inside scope and inside the program's rules, and turns "I think this is a bug" into something a triager can reproduce.

Engagement flowEight steps: engage, classify, scope and rules of engagement, recon, playbook match, dispatch, confirm, report.1/engageintake2Classifylead agent3Scope + RoEroe.json4ReconHUGINN5PlaybooksREACHABLE first6Dispatchspecialists7Confirmevidence gate8Reportreport.md
Engagement flow, stackedEight steps from engage to report.1/engageintake2Classifypick the lead agent3Scope + RoEscope.md, roe.json4ReconHUGINN, asset map5Playbook matchREACHABLE lanes first6Dispatchspecialists test the lanes7Confirmevidence gate8Reportreport.md

Reachability first

An intelligence layer sets a spend, skip or gated prior for each lane before expensive testing starts.

Playbooks, REACHABLE-first

Declarative attack chains are ranked against the asset map, then rendered as runnable commands ending in a confirm step.

One shared intel feed

Agents append to a cross-agent feed, so a secret found in an APK or a script reaches the specialist who can use it.

The team

Six specialists, one orchestrator.

Each agent is a full methodology definition with its own scripts. HUGINN always runs first; a report compiler merges everyone's confirmed findings, deduplicates across domains and surfaces cross-domain chains.

ALWAYS FIRST

HUGINN

Recon: subdomains, ports, tech fingerprint, crawling and JS analysis, producing the asset map and the intel feed.

API & WEB

Specter

REST, GraphQL, gRPC and traditional web apps: auth, authorization, injection, business logic, WAF bypass.

OWASP API Top 10WSTG
GENAI & MCP

ARTEMIS

Prompt injection, jailbreaks, system-prompt extraction, RAG poisoning, agentic abuse, guardrail bypass and MCP servers.

OWASP LLMAgenticMCP Top 10ATLAS
NETWORK

Hunter

Host and service enumeration, vulnerability scanning, credential attacks, exploitation, privilege escalation and lateral movement.

PTESMITRE ATT&CK
CLOUD

Nimbus

AWS, Azure and GCP IAM and privilege escalation, storage exposure, metadata and SSRF credential theft, serverless, Kubernetes and containers.

ATT&CK CloudCIS
MOBILE

Nomad

Android and iOS: static and dynamic analysis, traffic interception, Frida, deeplink and IPC abuse, insecure storage, certificate-pinning bypass.

MASVSMASTG
What it tests

Targets Grimnir knows how to classify.

Classification picks the lead agent. Mixed targets get several, and a mobile app, an MCP tool or a cloud console is usually treated as a thin layer over a backend API that Specter picks up.

Target to agent mapWeb apps and APIs go to Specter; LLM apps and MCP servers to ARTEMIS with Specter for the backend; networks and AD to Hunter; cloud to Nimbus; mobile to Nomad; Salesforce Experience Cloud to Specter.TARGETLEADSWeb apps and APIsSpecterLLM, RAG, agentsARTEMIS+ Specter for tool APIsMCP serversARTEMIS+ Specter for backendNetworks and ADHunterCloudNimbus+ Specter for hosted appsMobile appsNomad+ Specter for backend APISalesforce Exp. CloudSpecterHUGINN recon runs first for every row

APIs and web apps

REST, GraphQL and gRPC services, plus server-rendered apps with sessions and forms.

LLM, RAG and agents

Chatbots, retrieval apps, tool-using and multi-agent systems.

MCP servers

Enumeration, tool poisoning, cross-server shadowing and rug-pull diffing, with an opt-in schema-driven fuzzer.

Networks and AD

Hosts, CIDR ranges, services, and Active Directory domains.

Cloud

AWS, Azure and GCP accounts, buckets, serverless functions, Kubernetes and container registries.

Mobile

Android and iOS apps, plus the backend they talk to.

Salesforce Experience Cloud

Methodology, playbooks and a read-only guest-access mapper for Experience Cloud sites.

Full-stack products

Infrastructure, application, AI and cloud layers together, with cross-domain chains in the final report.

The toolkit

Built for the unglamorous parts.

The repo is the generic toolkit. Everything about a target lives in a per-engagement directory outside it.

Engagement directoryThe per-engagement directory: intake and rules files, shared state files, append-only decision and activity trails, and findings, evidence and reports output.$GRIMNIR_WORKSPACE/project/INTAKE AND RULESproject.mdscope.mdclassification.mdroe.jsonSHARED STATEstate.jsonasset-map.jsonintel.jsonlparams.jsonAPPEND-ONLY TRAILdecisions.jsonlactivity.jsonlOUTPUTagent/findings/evidence/reports/report.md
The per-engagement directory is the shared contract. Details

Playbook engine

Ships with cross-tenant BOLA, mass assignment, missing-auth replay, in-band SQL injection, reflected XSS and a Salesforce pack. Matching is reachability-aware and described by a JSON schema.

Rules of engagement

Per-program rate, daily budget, required headers, quiet hours, scanning and AI-tool bans, enforced by a script, with egress routed through the program's proxy.

Scope and sessions

Scope checks before active testing, and session handling that keeps you authenticated as your own test accounts.

Caido integration

Query HTTP history, replay an organic authenticated request with its auth intact, and export a PoC, all visible in Caido's UI.

SARIF export

Emit gate-passing findings as SARIF 2.1.0 or a merged JSON bundle for external vulnerability managers.

MCP testing toolkit

Enumerate, probe and call MCP tools, scan for poisoning and shadowing, diff for rug pulls, and confirm with the MCP harness primitive.

Shared hunting rules

Every agent reads the same rules at startup, and a never-submit list of findings that should not be filed, each written from a measured failure.

Intel and decision trail

An append-only intel feed, activity ledger and decision log make a run readable and reviewable after the fact.

Credential intake

Turn freeform credential notes into a structured per-engagement vault.

Frameworks covered

FrameworkAgent
PTES, MITRE ATT&CKHunter
OWASP API Top 10 (2023), WSTG v5.0Specter
OWASP LLM Top 10, Agentic Top 10, MCP Top 10, MITRE ATLASARTEMIS
MITRE ATT&CK Cloud, CIS BenchmarksNimbus
OWASP MASVS / MASTGNomad
Who it is for

One toolkit, several kinds of operator.

Bug bounty hunters

Stay inside program rules, spend effort where it is reachable, and file reports a triager can replay.

Pentest consultancies

Scope, delegate, track coverage against a denominator, and deliver one unified report with cross-domain chains.

AppSec teams

Test your own apps and APIs with the same evidence discipline, and export confirmed findings as SARIF.

AI and MCP security

Dedicated methodology for LLM apps, agents and MCP servers, from prompt injection to tool-call authorization.

Train on the labs

Four walkthroughs drive Grimnir from /engage to a confirmed finding against deliberately vulnerable apps. Run them on the same isolated host as Grimnir.

Platforms

Runs where the agents run.

Grimnir is prompt and methodology definitions plus scripts, so it follows the harness you run it in.

PRIMARY

Claude Code

Clone the repo and launch Claude Code. You get the orchestrator and all six agents immediately.

SUPPORTED

OpenCode via grimnir-oc

The grimnir-oc build targets OpenCode, which can run other model providers. View grimnir-oc

More harnesses and providers are expected over time, and Grimnir is meant to get more capable as the models underneath it improve. No specifics are promised yet.

Get started

Clone, then claude.

Run this on a machine you are willing to lose. The tracked settings grant the agent an allow-list broad enough to run code without prompting, and a pentest orchestrator ingests attacker-controlled input by design. Use a dedicated VM, container or disposable VPS. Read SECURITY.md first.
# Tier 0: zero install
git clone https://github.com/DoctorGoz/grimnir.git ~/workspace/grimnir
cd ~/workspace/grimnir && claude

# then, inside Claude Code
/engage acme-corp
/recon acme-corp

Tier 0 gives you the orchestrator, all six agents, the intel feed, structured findings, the validation gate and the stdlib confirmation primitives. When you want the external toolchains, setup/setup.sh offers lite, standard and full profiles. The README covers each tier.

Responsible use

Only test what you are authorized to test.

Grimnir is built for authorized security testing, bug bounty and research. Scope and authorization are confirmed before any active testing, and you need written authorization for every system you point it at. The labs run on your own host for exactly that reason.