WraithWall
Production deception-and-threat-intelligence platform and companion packages.
Ecosystem
| Package | Install | Purpose | Status |
|---|---|---|---|
| wraithwall | pip install wraithwall |
Flask platform — gateway, link intel, cowrie, BGP, canaries | PyPI 0.2.0 |
| ravenscan | pip install ravenscan |
Engineering intelligence CLI (raven) and library |
PyPI 0.1.0 |
| canary-kit | pip install canary-kit |
Supply-chain canary token minting and detection | PyPI 0.1.0 |
| honeypot-mitre | pip install honeypot-mitre |
Cowrie logs → MITRE ATT&CK scoring | PyPI 0.1.0 |
| dml-spec | pip install dml-spec |
Signed deception markup language validator | PyPI 1.0.0 |
| wraithmesh | pip install packages/wraithmesh (local) |
Distributed sensor mesh / signed observations | v2 ready 0.2.0 (not on PyPI yet) |
| wraithwall-sdk | source only | Official HTTP API client | Not published yet |
Packages are independent — none imports another.
Quick start
git clone https://github.com/niffyhunt/wraithwall.git
cd wraithwall
./install.sh
cp .env.example .env
docker compose up -d
wraithwall check
wraithwall serve
Run the local secure sandbox
The sandbox ships in this package: sandbox_kit/ (launcher), compose.sandbox.yml,
digest-pinned Dockerfiles, and a deterministic synthetic-telemetry seed. No
cloud account, no API keys, no internet exposure.
./sandbox.sh up --profile app-only # T0: gates + state only, no containers
./sandbox.sh up --profile local-sandbox # T1: build, boot, self-check (one-time ack)
./sandbox.sh verify # fail-closed self-check of the running sandbox
./sandbox.sh destroy --yes # stop services and delete all sandbox state
Every command is fail-closed: a missing prerequisite, a digest mismatch or an ambiguous confirmation stops the launcher instead of starting something inert. Telemetry it produces is synthetic and marked LOCAL on every record, so it can never be mistaken for attacker data.
This is not a guaranteed malware-containment environment unless separately isolated by a VM or dedicated host. Read docs/sandbox/quickstart.md and docs/sandbox/security-model.md before pointing it at anything you did not write yourself.
Python API
from wraithwall import create_app, Client
from wraithwall.link_checker import analyze
from wraithwall.gateway import Gateway
app = create_app()
client = Client("http://localhost:8000", api_key="...")
print(client.health())
result = analyze("https://example.com")
blocked = Gateway.is_ip_blocked("203.0.113.1")
from ravenscan import scan
from canary_kit import create_canary
profile = scan(".")
token = create_canary("my-sdk", "1.0.0")
CLI
wraithwall check
wraithwall serve --port 8000
wraithwall routes
raven scan .
canary-kit mint my-pkg 1.0.0 --type runtime
honeypot-mitre sample.json
dml validate traps.yaml
Configuration
All secrets and infrastructure endpoints come from environment variables (see .env.example). Nothing is hardcoded to a specific deployment.
Documentation
- docs/sandbox/quickstart.md — Local sandbox in five minutes
- docs/sandbox/security-model.md — What is isolated, what is not (read this first)
- docs/sandbox/profiles.md — Profiles T0–T3 and confirmation gates
- docs/sandbox/lifecycle.md — up / status / verify / replay / reset / destroy
- docs/sandbox/troubleshooting.md — E-code catalog → cause → fix
- docs/sandbox/network.md — Zones, default-deny, how to verify nothing leaves
- docs/sandbox/data-policy.md — What may enter or leave, synthetic marking
- docs/sandbox/vs-production.md — How the sandbox differs from the production deployment
- docs/sandbox/platforms.md — Platform support matrix
- CHANGELOG.md — Version history
- DEVELOPER_DOCUMENTATION_PLAN.md — Documentation contracts and freshness rules
Contributing
Install the full stack with ./install.sh, run pytest, then open a PR. Each package under packages/ has its own README and examples. See CONTRIBUTING.md for details.
Working on the local sandbox? Read CONTRIBUTING.md § local sandbox first — it states which profile to test hostile content against.
Metadata
Release files for wraithwall 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wraithwall-0.2.0.tar.gz | 388.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wraithwall-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 774.2 kB
Release files / wraithwall-0.2.0.tar.gz
| Download URL | wraithwall-0.2.0.tar.gz |
|---|---|
| Size | 388.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
89e528dab549993751f22a72df63f1565ae2043f75b1f77818d86e27479830bc
|
|
BLAKE2b-256 checksum How to use checksums |
b842f6fc594c486566cc37914a3bfc4e78fad42859ceaec5239161de2de33e0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / wraithwall-0.2.0-py3-none-any.whl
| Download URL | wraithwall-0.2.0-py3-none-any.whl |
|---|---|
| Size | 385.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dccefeaf6f402da16d2c7a15a4e6736227586ae85209902162544c0bcbf8ac66
|
|
BLAKE2b-256 checksum How to use checksums |
085cb076c403564b0aa007a9d317eb851173a5a86521aa9878ba069ddc333e82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|