
Gary Todd · Wikimedia CommonsCC0
We map the public surface first.
Domains, services, versions, ways in. No guesses, no noise.
We find what an attacker would see first — with written permission, evidence for every finding and a plan that can close the gaps.
No obligation · we only start after a written mandate
Surface and depth.Public services and internal systems. Ranked by risk.
Evidence, not noise.Every finding has a path that can be repeated.
Safe harbour.Written permission, clear scope, stop conditions.
Report and free re-test.You get the fix verified.
“Know the enemy and know yourself; in a hundred battles you will never be in peril.”Sun Tzu · The Art of War · trans. Lionel Giles, 1910
The Art of War is not a slogan. It is the order: understand the ground, send the right messenger, see everything — and only let go when the evidence is there. We do it with permission.

Domains, services, versions, ways in. No guesses, no noise.

The agents run in parallel, but each has a narrow scope and an audit trail.

Surface and depth. Findings ranked by risk, not by noise.
An illustrative domain. Start the swarm and watch findings arrive — surface to depth. Nothing here leaves the page.
> Waiting to start. Scope read. 4 agent roles ready.
> Illustrative view · all findings and evidence shown.
Press start. Findings appear here as they are validated.
A public admin login accepts passwords without a second factor and with no lockout.
GET /admin HTTP/1.1
Host: beta.nordhavn.dk
→ 200 · login · no MFA
→ 5 attempts/sec · no lockout
FixEnable MFA and rate-limit the login.
Ready for re-testAn object lookup does not check tenant. Customer A can fetch customer B’s invoice by changing the id.
GET /v1/invoices/1042
Authorization: Bearer <customer-A>
→ 200 application/pdf
→ customer-B’s invoice
FixCheck tenant id on every object lookup.
Re-test scheduledThe certificate expires soon and there is no automatic renewal.
notAfter=2026-11-04T09:14Z
issuer=Let’s Encrypt
auto-renew=none
FixRenew the certificate and monitor expiry.
Ready for re-testThe production source map is public and exposes source code and internal paths.
GET /assets/app.js.map
→ 200 application/json
→ 1,842 source lines
FixRemove .map from production or put it behind auth.
Not scheduledReport ready · 4 findings
See report excerptIllustrative run · findings, services and numbers are examples, not a customer run.
This is how we deliver. An excerpt of the illustrative report — every finding with affected service, evidence, fix and re-test.
GET /admin → 200 · login
no MFA · no lockout
5 attempts/secA public admin login accepts passwords without a second factor and with no lockout.
Enable MFA and rate-limit the login.
Ready for re-testGET /v1/invoices/1042
Bearer <customer-A> → 200
customer-B’s PDFAn object lookup does not check tenant. Customer A can fetch customer B’s invoice by changing the id.
Check tenant id on every object lookup.
Re-test schedulednotAfter=2026-11-04T09:14Z
auto-renew=noneThe certificate expires soon and there is no automatic renewal.
Renew the certificate and monitor expiry.
Ready for re-testGET /assets/app.js.map → 200
application/json · 1,842 linesThe production source map is public and exposes source code and internal paths.
Remove .map from production or put it behind auth.
Not scheduledThe MainAI Cyber model is open and cyber-trained. It orchestrates hundreds of agents on the box — each with a role, a scope and a trace. No data leaves the house to think.

Our own state-of-the-art model, open source and trained to see like an attacker. Inference runs privately.
no third party
100–1000s agents in parallel: discovery, validation, evidence and ranking. Every agent has a narrow scope.
scope per agent
A repeatable path, affected service, low-risk fix and one free re-test. No loose claims.
delivery
For SMEs and enterprises. Fixed price after agreed scope. Everything runs on the box.
Discuss a runSame engine. Different terrain. Every run is a fixed price after scope — and every run ends with report, evidence and one free re-test.
One public domain. Surface and depth. You get a clear picture before anyone else does.
Your public face: domains, apps and services. The swarm ranks by risk, not by sequence.
What cannot be seen from outside. Via on-prem agent or VPN — same model, same evidence.
No amounts on this page: scope and fixed price are agreed before the swarm is released.
We move from agreement to evidence in an order that can be checked. Every step has an output, and no step is skipped.
Domains, services, window and stop conditions.
scope.md · auth.pdfDNS, TLS, headers, services, versions and ways in.
dns · tls · pathsAuth, IDOR, injection, SSRF, business logic and secrets.
auth · idor · logicEvidence, severity, affected service, fix and raw logs.
evidence · severityWe verify the fix and close or reopen. One re-test is free.
retest · closedWeb. API. Mobile backend. Internal services. Cloud. Legacy. And whatever you most want proven.
DNS · TLS · headers · services · versions · paths
auth · sessions · IDOR · injection · SSRF · logic
request/response · logs · screenshots · hash · timestamp
prioritised report · fix · re-test · raw logs
The swarm is large, but the boundaries are small. We read first, write only by agreement, and stop if anything moves.
We do not write to production unless you ask. Read-only is the default.
Each agent is allowed only its own small area. No free hand.
Critical findings, outages or doubt: we stop and ask before moving on.
We only go where you have given us the key. Everything else is out of scope. That is how we keep the test calm, even when it is sharp.
A signed scope before the first request. No verbal grey zones.
Dates and times agreed in advance. No surprises in operating hours.
Critical findings, outages or doubt: the swarm stops and you hear from us.
Models, logs and findings stay in the house. No third party, no cloud.
No CDNs, analytics or external APIs in the run.
Auditors. Lawyers. Security firms.
They can deliver our run under their own name. We deliver the model, the swarm and the evidence.
Tell us briefly what you want clarity on. We come back with the next step — not an invoice. A chat does not start a run.