Work/§01 / 02 Simulation · 2026

HADES

A digital twin of a network, the drones it flies, and the satellites it talks to—with trained adversaries already inside it.

A 103-device network in HADES, with modeled traffic running.

Attackers Don’t Read Org Charts

Most organizations learn how an attacker moves through their network after the attacker has already done it. The network, the drone fleet, and the satellite ground segment are usually assessed by different tools and different teams, and their reports never meet. An adversary does not respect those boundaries. A stolen credential on a laptop can be the first step toward a ground control station—and from there, an aircraft.

Players never play the game as designed. Neither does the adversary.

Where It Came From

HADES grew out of World of Haiku, the game I led at Haiku. In that game, a network is a place: devices and file systems persist, scenarios are authored like content, and scripted characters have motives of their own. The JSON networks we added to Forge in 2024 are the direct ancestor of the HADES network schema.

In January 2026, I wrote a first prototype in Python that turned the game inside out. Instead of placing a student inside a simulated network, it placed threat-actor agents—each with its own motivations and playbook—against a digital twin of a real one. The adversary became the player. The platform today still starts from the network and the people in it, then stretches the same model out to drones and satellites.

Domain 1NetworkDevices, people, credentials, services
Domain 2DronesFleets, ground stations, control links
Domain 3SpaceSatellites, ground stations, RF links
Digital twinOne scenarioEvery domain can pull on the others
OutputAttack pathsBy probability and impact
DecisionWhat to fix firstTested before production is touched
HADES: three domains, one scenario

Cyber First: The Network and the People in It

Everything in HADES starts from the network; the other domains plug into it.

  • Network Builder. Every device, link, service, person, and credential in one digital twin. It imports Nessus and ACAS scans, BloodHound Active Directory data, firewall rules, AWS and Kubernetes authorization data, infrastructure-as-code, and Cursor on Target tracks, then merges them all into one topology.
  • Threat actors. A catalog of more than 30 MITRE ATT&CK-aligned profiles. Each is a JSON file that combines goal-oriented action planning with a path ranking learned from the evidence of each run. One profile, APEX, has no preset objectives at all; it derives them from whatever network it is given.
  • Attack paths. A graph neural network ranks every viable route by probability and impact, through Active Directory paths and CVE exposure. Attack replay shows how a run unfolded, and lateral movement is tracked host by host.
  • People. Users have schedules and multi-factor authentication, and optional social-engineering attacks test how they respond—so a phished account sits on the same path as an unpatched server.
  • What-if hardening. Change a control, run it against the trained adversarial agents, and measure the projected risk reduction before anything in production is touched.
HADES attack-path view, with ranked routes drawn across a network graph
Attack paths, ranked by probability and impact, with the systems, actions and CVEs on each route.

Traffic is modeled, too. HADES samples each flow between two devices and says whether it was blocked or resolved, and what evidence that verdict rests on. A connection that exists in the topology is not treated as allowed until routing and firewall evidence back it up.

HADES traffic view with counts of IP flows, sampled requests, blocked samples and preview arrivals, and flow checks marked topology preview only
Traffic: every flow sampled, and labeled preview-only until routing and firewall evidence confirm it.

The output is the part people actually act on: kill-chain coverage against ATT&CK, side-by-side scenario comparison, and a one-click remediation list in priority order. Reports export as JSON or PowerPoint.

Then Drones: From the Network to the Aircraft

Drone networks deploy from a catalog into the same scenario: the vehicle type; its speed, altitude, and battery profile; its ground control station; and its radio links. So the question HADES asks is not only whether a drone can be jammed, but how far an adversary already inside the network can get. It tests signal jamming, GPS spoofing, and control takeover, and tracks how a threat escalates from one compromised ground link toward the whole fleet.

HADES board view of a drone operations network, with radio and network links fanning out from a ground control station and an inspector showing an unencrypted, unauthenticated FPV video link
A drone operations network on the board. The inspector flags an FPV video link that is unencrypted and unauthenticated.
A drone route's flight physics: jam-to-signal margin over time, the altitude profile against terrain, and the battery state along the route
Route physics for one drone: link margin, altitude against terrain, and battery.
A wind field overlaid on terrain along a drone route
The wind field the route has to fly through.

And when the picture needs to be somewhere else, HADES can publish its current operating picture to Anduril’s Lattice, through Anduril’s own Lattice SDK.

Onboard Autonomy

Since August 2026, I have also been taking HADES onto the aircraft itself. It plans a mission; checks it against energy, terrain, airspace, and recovery; executes it under single-use signed authority; watches it in flight with an independent monitor; and keeps signed evidence of what actually happened. The same software runs on the operator’s desktop and, headless, on an NXP NavQPlus companion computer beside the autopilot.

Four capability panels for HADES on uncrewed missions: plan and check, execute under authority, assure in flight, prove it, each with two measured numbers
What HADES adds to an uncrewed mission, with the measured result behind each part.

The rule is simple: the clever parts can propose, and only the execution path can act. Planners, analytics, Orca, and the interface cannot transmit to a vehicle. Every command passes seven independent checks, and every attempt ends one of two ways—in an effect verified by reading the mission back from the vehicle, or in a refusal that keeps its evidence.

Seven numbered checks from identity and source through runtime assurance, dependency capture, external signing, reservation and seal, transmission and a qualified effect
Seven checks between a request and the aircraft.
Six rungs of the command path with the count of frames reaching the vehicle at each: zero until authorization completes, then exactly one
About 217,000 signed messages, and nothing reached the vehicle until authorization was complete. Then exactly one frame did.

An independent runtime-assurance monitor watches every vehicle. In software-in-the-loop fault injection, it commanded a return to launch 115 milliseconds after the GNSS fix dropped—32 times sooner than the autopilot’s own failsafe. Nine fault and attack classes each have a fail-closed response that is tested continuously.

Log-scale timeline showing the HADES return-to-launch command 115 ms after GNSS loss against the autopilot's own failsafe at about 3.8 s
Recovery 32 times faster than the autopilot alone, in SITL.
Table of nine fault and attack classes, what is injected, the fail-closed response, and which were reproduced live in simulation
Nine fault classes, nine fail-closed responses.

The flight models are held to the same standard: predictions are frozen before the vehicle arms, then compared with what it actually flew.

Bar chart of predicted against flown leg times for a 320 m square route, with the jerk-aware model within 1.7 percent overall
The flight, predicted within 1.7% before it flew.
Bar charts of position, velocity and arrival-time error for five braking models on unseen PX4 aircraft
Learned braking: 93% lower arrival error on unseen aircraft. Held back until it clears every pre-registered gate.
Dot plot of maximum tracking error per route for three controller versions against frozen per-route limits
Every route inside its limit after two refinement rounds, held-out routes included.
Health latency and board temperature on the NavQPlus through a minute of CPU saturation
The onboard service stays healthy under CPU saturation and is back 3 seconds after a forced kill.

Everything in this section is software-in-the-loop with the real ArduCopter autopilot, public PX4 flight logs, or a bench test on the companion computer. HADES has not yet flown a physical aircraft, and none of this is a certification.

The same scenario reaches orbit. Satellites, ground stations, and relay nodes sit on a live globe, with link budgets, pass windows, and the handover gaps an attacker could use. HADES models the CCSDS protocol stacks, including AOS, TC, TM, Space Packet, and Proximity-1, and runs named threat actors against the space network to show which ATT&CK phases they reach and which controls stop them. GNSS degradation is modeled alongside, because the drones depend on it, too.

Orbits are propagated with the U.S. Space Force’s Astrodynamics Standards implementation of SGP4, and CCSDS transfer frames are encoded byte for byte, with a CRC-16 frame check.

HADES globe view with satellite orbits traced around the Earth
Orbital tracking on a live globe.
HADES satellites panel listing spacecraft, links, and pass windows
Satellites, links, and pass windows.
Ground-station elevation across a satellite pass.
A launch-geometry study drawn on the HADES globe
Launch-geometry study.
A spacecraft maneuver plotted on the HADES globe
Maneuver rehearsal.
One command, three futures: how a missed or delayed burn changes the orbit and the next station pass.
Relative trajectory between two spacecraft.
A spacecraft command-incident rehearsal in HADES
Rehearsing a spacecraft command incident.

Runs Where the Network Is

Everything runs on the user’s own machine. The machine learning runs locally on a custom tensor engine, and networks and results are stored locally, never uploaded. The Windows desktop application works without a network connection, so HADES can run inside a closed network. AI assistance uses local models that the user supplies. A limited web build covers the analysis.

Tested Against the Reference

Where HADES models physics, it answers to published reference software. Three models are conformance-tested against it: ITU-R P.2108 clutter loss, ITU-R P.528 air-ground propagation, and curvature-constrained flight geometry. The rest of the physics and effectiveness models draw on open literature.

Where It Stands

HADES has been in beta since October 2026. It is listed as a software product on the U.S. Army Air Marketplace, which launched in March 2026. Nine patent applications naming me as sole inventor are pending; none has been granted yet.

patent applications pending
9
inventor
1
threat-actor profiles
30+
runs in closed networks
Offline
Next project → World of Haiku A cyberpunk game that teaches real hacking skills inside a simulated Linux desktop.