Skunkworkz
A flying-wing stealth aircraft seen from above, over cloud

Portfolio · tier one · top secret

Low observable.
High output.

Skunkworkz is where our tier-one projects get built: a threat graph, the tools on top of it, and now our own cyber LLM. Everything here is top secret, which is why each one has a public status page, a number and a date. Two people. Evenings. No adjectives without receipts.

See the projectsLive build log
8projects, one graph underneath
173 / 200best score by our own 3B model, 26 Oct 2026
24threat feeds correlated in Signal
05:05UK time, the Daily lands, every day
01

The projects

Live means you can open it today. Building means the status page tells you what happened last night.

A human profile drawn in scattered white dots on blackTier one
01 · LLMBuilding

Ninja Cortex

Our own cyber LLM. A 3-billion-parameter model reads a dossier from the threat graph and answers, or says the dossier does not hold it. 173 of 200 hand-written analyst questions this week; the live reader is at 170. Trained in rented three-hour bursts, measured every night.

LoRARAGQwen2.5-3Bbuilt in public
Build log →
Long-exposure light trails on a forest road at nightTier one
02 · GraphLive

Ninja Signal

The threat graph everything else stands on. 24 feeds, CISA KEV, ATT&CK, abuse.ch and open-web scanning, correlated into one Neo4j graph with a live globe and a defence-condition readout.

Neo4jATT&CKKEVransomware
ninjasignal.ninja →
A glowing orange doorway standing in a dark field of blue dataTier one
03 · IntelLive · gated

Ninja Labz

Dark-web and threat-intel platform: leak-site watchlists, botnet command estates, an actor explorer that cross-references the graph, and the console where the Cortex model answers with citations.

dark webbotnetsexplorerconsole
ninjalabz.io →
An explosion of soil and binary digits against a white skyTier one
04 · PublishingLive

Probably Fine

The Daily at 05:05 UK and the Weekly on Mondays. The threat picture in plain English, generated from the graph, with the numbers that back each line. Also in French, where it outsells the English edition.

dailyweeklyFR / EN
ninjalabz.io/daily →
A glowing purple and gold ribbon tied in a knotTier one
05 · Early warningLive

Ninja Fusion

Early chatter. CVEs heard on social and RSS before NVD publishes them, with the claim worded exactly as strongly as the evidence allows. One PHP pair was on the board 16 hours before the record existed.

early chattercanvascorrelation
ninjafusion.ninja →
A figure in an orange hazmat suit sitting among ruined grey buildingsTier one
06 · ExposureLive

Sabaki

Attack-surface scanning that scans our own estate first, every day. Findings go into a casebook with a mean time to repair that we publish rather than estimate.

scanningcasebookMTTR
ninja.ing/ninjasabaki →
A humanoid robot with a briefcase waiting beside a man in a suitTier one
07 · AssistantLive

NIKO

Natural language to graph queries, in the Labz console and on Telegram. Switch it to the Cortex model and the answers come from our own weights, reading our own graph.

NL → CypherTelegramown model
in the console →
Scratched dark film grain with light leaksTier one
08 · EngineLive

PRISM

The correlation engine behind raz0r.io, and the gate called VERDICT that every published rule has to pass. A rule that cannot show its track record does not ship.

correlationVERDICT
raz0r.io →
02

How we work

Three rules, applied to the model and to us.

RULE 01

Cast-iron or don't publish

A number goes public with its set size, its chance rate and its held-out method, or it does not go public. Three adapters sat on disk this week because 149 is not 171.

RULE 02

Facts stay in the graph

The model knows nothing. The graph knows everything. The model reads and answers, and refuses when the answer is not in front of it. No invented CVEs, no invented victims.

RULE 03

Change one thing

When four ideas go in at once and the score drops, nobody knows why. We learned this at full price on the 26th of October and wrote it down.

Open source, where it makes sense

The Signal client is on PyPI under Apache-2.0 as ninjasignal, and the CLI ships as NinjaClaw. The graph, the models and the evaluation set are ours; the measurements are public.

Read the 200 questions
$ pip install ninjasignal
Apache-2.0 · talks to the Signal API

skunkworkz.io/status.json
what the build is doing right now
skunkworkz.io/log.json
every result, in order, with its date