
Generates reproducible CORE network topologies from XML scenario files for cybersecurity training and experimentation. Provides Web GUI and CLI for deterministic topology previews, vulnerability assignment, and traffic generation.
Generate reproducible CORE network topologies from scenario XML files using a rich Web GUI or a command-line interface.
View the WebUI images gallery docs/screenshots.md.
core-daemon runningpython -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py
http://127.0.0.1:9090 by default (reverse proxy nginx compose targets https://localhost).coreadmin / coreadmin account; change it immediately under Profile → Change Password.make host-web, make host-web-nginx, or make host-web PROXY=envoy. The helper script scripts/dev_gen_certs.sh issues self-signed certificates with SAN support.Existing Router, Existing Switch, or New Router. The legacy New Switch choice was removed to prevent hidden switch fan-out; saved scenarios using it are normalized to Existing Router during load.python -m core_topo_gen.cli --xml path/to/scenario.xml --seed 42 --verbose
Popular options:
--scenario NAME pick a specific scenario entry--host / --port override the CORE gRPC endpoint (defaults 127.0.0.1:50051)--layout-density {compact|normal|spacious} adjust map spacing--seg-include-hosts, --seg-allow-docker-ports, --nat-mode, --dnat-prob fine-tune segmentation--traffic-pattern, --traffic-rate, --traffic-content override traffic defaults./reports/.base_nodes, additive_nodes, combined_nodes, etc.) for round-trip fidelity.explicit_count, derived_count, and total_planned.scenario_total_nodes summarises planned hosts, routers, and vulnerability targets.core_topo_gen.parsers.planning_metadata.parse_planning_metadata().existing_router, existing_switch, or new_router; legacy new_switch values are coerced to so previews remain deterministic and switch overlays aren’t synthesized implicitly.r2r_mode supports Exact, Uniform, NonUniform, Min, Max, and legacy meshes tied to --router-mesh-style.r2s_mode, r2s_edges, optional r2s_hosts_min/max) regroup hosts behind dedicated switches, with “Exact=1” aggregating all hosts per router into a single switch./tmp/traffic (with companion services) and respect overrides for pattern, rate, jitter, and content hints./tmp/segmentation alongside a segmentation_summary.json; NAT mode, DNAT probability, host inclusion, and docker port allowances are configurable./tmp/vulns, with metadata embedded into CORE nodes.core_topo_gen.plugins.traffic.register() for bespoke sender/receiver code../reports/scenario_report_<timestamp>.md) enumerate topology stats, planning metadata, segmentation results, and runtime artefacts. Each run also emits a JSON summary alongside the Markdown file (scenario_report_<timestamp>.json) plus per-run connectivity CSVs when router degree data is available.outputs/run_history.json for the Reports page.outputs/ when scenarios are removed via the GUI.core-python not found** – set WEBUI_PYbeforemake host-webor rely onpython3; the backend falls back to sys.executable` if needed.nginx/certs) – run scripts/dev_gen_certs.sh or make dev-certs before composing nginx.core-daemon unreachable` – verify daemon status and host/port; GUI run modal will surface connection issues immediately.Pull requests and issue reports are welcome! Please run the relevant pytest targets (pytest -q) before submitting changes and keep documentation up to date when behaviour changes.
@article{rodriguez2025agentcyte,
title={AgentCyTE: Leveraging Agentic AI to Generate Cybersecurity Training & Experimentation Scenarios},
author={Rodriguez, Ana M and Acosta, Jaime and Kotal, Anantaa and Piplai, Aritran},
journal={Annual Computer Security Applications Conference Workshop (ACSACW)},
year={2025}
}
existing_router| Folder | Purpose |
|---|
core_topo_gen/cli.py | CLI entry point; orchestrates parsing, planning, building, and report generation |
core_topo_gen/parsers/ | Modular XML parsers per scenario section (node info, routing, traffic, services, vulnerabilities, segmentation) |
core_topo_gen/builders/topology.py | Builds star, multi-switch, and segmented topologies using CORE gRPC APIs |
core_topo_gen/utils/ | Supporting allocators, report writers, traffic/segmentation/service helpers |
webapp/ | Flask Web UI, templates, SSE log streaming, history persistence |
webapp/templates/partials/dock.html | Persistent logs/XML dock with follow toggle and filters |
tests/ | Pytest suite covering planning semantics, policy enforcement, preview parity, and CLI behaviours |
docs/ | Additional documentation assets (screenshots, notes) |