Rehearse it dry
Lay out the adversary, the scenarios and the story, and the tool walks the design looking for what does not hold: a technique nothing covers, a lure that leads nowhere. Before you deploy anything.
Decoys, fake identities and honeytokens are the easy part. This is what turns them into one operation you can design, run and prove — driven by rules you wrote, not by a model's guess.
A honeypot tells you someone touched it.
An operation tells you what they believed, what they did next,
and whether your controls held.
One operation object, from the hypothesis about the adversary to the closing report.
Lay out the adversary, the scenarios and the story, and the tool walks the design looking for what does not hold: a technique nothing covers, a lure that leads nowhere. Before you deploy anything.
Network decoys, simulated employees, honeytokens, Canarytokens, OpenCanary. Same three verbs for all of them — deploy, rotate, retire — so the operation is one thing, not five consoles.
What you expected against what actually happened, on an ATT&CK heatmap. Then export it as STIX 2.1 and your SIEM ingests it. The operation ends in a document, not in an anecdote.
Auditable by reading it. That is the whole point.
Every automatic decision comes from a rule you wrote, in YAML you can read, version and put through review. Before acting, the engine checks it against your rules of engagement — and when it refuses, the refusal is on the record instead of vanishing.
# when the adversary touches this decoy... when: event_type: interaction plugin_id: honeytoken-finance payload: kind: access # ...deploy the next one and mark the operation then: - action: deploy plugin_id: decoy-backups - action: transition to: compromised
The same rule that fires on its own is the one you can explain to an auditor afterwards.
No sibling checkouts, no separate services, no orchestration for the tool itself.
pip install -e ".[dev]" python examples/seed_demo.py # three complete example operations python -m apate.web # http://127.0.0.1:5000
The examples arrive with telemetry, incidents and one already-closed operation, so the report and the heatmap have real data from the first minute. Everything runs in a single Flask process; Docker is only for container decoys and the lab, not for the application.
Free under AGPLv3, with three complete example operations so the first thing you see has real data in it.
Running it in an organisation that cannot take on the AGPLv3 terms, or want a walkthrough of the demo? Write and we will answer.