{"id":48807640,"url":"https://github.com/dstl/YAWNING-TITAN","last_synced_at":"2026-04-30T05:01:09.933Z","repository":{"id":47373501,"uuid":"414194272","full_name":"dstl/YAWNING-TITAN","owner":"dstl","description":"YAWNING TITAN is an abstract, graph based cyber-security simulation environment that supports the training of intelligent agents for autonomous cyber operations.","archived":true,"fork":false,"pushed_at":"2024-05-21T17:37:16.000Z","size":22660,"stargazers_count":66,"open_issues_count":4,"forks_count":21,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-02-07T15:12:28.878Z","etag":null,"topics":["autonomous-agents","cybersecurity","openai-gym","openai-gym-environment","reinforcement-learning","rl-environment"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dstl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-10-06T12:01:58.000Z","updated_at":"2026-01-08T12:51:11.000Z","dependencies_parsed_at":"2023-11-16T18:45:12.442Z","dependency_job_id":null,"html_url":"https://github.com/dstl/YAWNING-TITAN","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/dstl/YAWNING-TITAN","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dstl%2FYAWNING-TITAN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dstl%2FYAWNING-TITAN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dstl%2FYAWNING-TITAN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dstl%2FYAWNING-TITAN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dstl","download_url":"https://codeload.github.com/dstl/YAWNING-TITAN/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dstl%2FYAWNING-TITAN/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32455234,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autonomous-agents","cybersecurity","openai-gym","openai-gym-environment","reinforcement-learning","rl-environment"],"created_at":"2026-04-14T06:01:04.432Z","updated_at":"2026-04-30T05:01:09.920Z","avatar_url":"https://github.com/dstl.png","language":"Python","funding_links":[],"categories":["🔐 Cybersecurity Agents"],"sub_categories":["Benchmarks"],"readme":"![Python](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10-blue)\n![GitHub](https://img.shields.io/github/license/dstl/YAWNING-TITAN)\n![GitHub Workflow Status](https://img.shields.io/github/workflow/status/dstl/YAWNING-TITAN/Python%20package)\n![GitHub Workflow Status](https://img.shields.io/github/workflow/status/dstl/YAWNING-TITAN/build-sphinx-to-github-pages?label=docs)\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/dstl/YAWNING-TITAN)\n![GitHub commits since latest release (by SemVer)](https://img.shields.io/github/commits-since/dstl/YAWNING-TITAN/latest)\n![GitHub issue custom search](https://img.shields.io/github/issues-search?label=active%20bug%20issues\u0026\n![GitHub issue custom search](https://img.shields.io/github/issues-search?label=active%20feature%20requests\u0026\n![GitHub Discussions](https://img.shields.io/github/discussions/dstl/YAWNING-TITAN)\n\n# YAWNING-TITAN\n\n## About The Project\nYAWNING-TITAN (**YT**) is an abstract, graph based cyber-security simulation environment that supports the training of\nintelligent agents for autonomous cyber operations. YAWNING-TITAN currently only supports defensive autonomous agents\nwho face off against probabilistic red agents.\n\n**YT** has been designed with the following things in mind:\n- Simplicity over complexity\n- Minimal Hardware Requirements\n- Operating System agnostic\n- Support for a wide range of algorithms\n- Enhanced agent/policy evaluation support\n- Flexible environment and game rule configuration\n- Generation of evaluation episode visualisations (gifs)\n\n**YT** was publicly released on 20th July 2022 under MIT licence. It will continue to be developed through the Autonomous\nResilient Cyber Defence (ARCD) project, overseen by Dstl.\n\n## Contributing to YAWNING-TITAN\nFound a bug, have an idea/feature you'd like to suggest, or just want to get involved with the YT community, please read\nour [How to contribute to YAWNING-TITAN?](CONTRIBUTING.md) guidelines.\n\n\n## What's YAWNING-TITAN built with\n\n- [OpenAI's Gym](https://gym.openai.com/)\n- [Networkx](https://github.com/networkx/networkx)\n- [Stable Baselines 3](https://github.com/DLR-RM/stable-baselines3)\n- [Rllib (part of Ray)](https://github.com/ray-project/ray)\n\n\n## Getting Started with YAWNING-TITAN\n\n### Pre-Requisites\n\nIn order to get **YT** installed, you will need to have the following installed:\n\n- `python3.8+`\n- `python3-pip`\n- `virtualenv`\n\n**YT** is designed to be OS-agnostic, and thus should work on most variations/distros of Linux, Windows, and MacOS.\n\n### Installation from source\n#### 1. Navigate to the YAWNING-TITAN folder and create a new python virtual environment (venv)\n\n```unix\npython3 -m venv \u003cname_of_venv\u003e\n```\n\n#### 2. Activate the venv\n\n##### Unix\n```bash\nsource \u003cname_of_venv\u003e/bin/activate\n```\n\n##### Windows\n```powershell\n.\\\u003cname_of_venv\u003e\\Scripts\\activate\n```\n\n#### 3. Install `yawning-titan` into the venv along with all of it's dependencies\n\n```bash\npython3 -m pip install -e .\n```\n\n\nThis will install all the dependencies including algorithm libraries. These libraries\nall use `torch`. If you'd like to install `tensorflow` for use with Rllib, you can do this manually\nor install `tensorflow` as an optional dependency by postfixing the command in step 3 above with the `[tensorflow]` extra. Example:\n\n```bash\npython3 -m pip install -e .[tensorflow]\n```\n\n### Development Installation\nTo install the development dependencies, postfix the command in step 3 above with the `[dev]` extra. Example:\n\n```bash\npython3 -m pip install -e .[dev]\n```\n\n## Application Directories\n\nUpon install, **YT** creates a set of application directories, both hidden for **YT** use, and visible for user use. The\ncreated directory trees for Linux, Windows, and MacOS operating systems are detailed below:\n\n##### Linux\n```\n~/\n├─ .cache/\n│  ├─ yawning_titan/\n│  │  ├─ log/\n├─ .config/\n│  ├─ yawning_titan/\n├─ .local/\n│  ├─ share/\n│  │  ├─ yawning_titan/\n│  │  │  ├─ app_images/\n│  │  │  ├─ db/\n│  │  │  ├─ docs/\n├─ yawning_titan/\n│  ├─ agents/\n│  ├─ game_modes/\n│  ├─ images/\n│  ├─ notebooks/\n```\n\n##### Windows\n\n```\n~/\n├─ AppData/\n│  ├─ yawning_titan/\n│  │  ├─ app_images/\n│  │  ├─ config/\n│  │  ├─ db/\n│  │  ├─ docs/\n│  │  ├─ logs/\n├─ yawning_titan/\n│  ├─ agents/\n│  ├─ game_modes/\n│  ├─ images/\n│  ├─ notebooks/\n```\n\n##### MacOS\n```\n~/\n├─ Library/\n│  ├─ Application Support/\n│  │  ├─ Logs/\n│  │  │  ├─ yawning_titan/\n│  │  │  │  ├─ log/\n│  │  ├─ Preferences/\n│  │  │  ├─ yawning_titan/\n│  │  ├─ yawning_titan/\n│  │  │  ├─ app_images/\n│  │  │  ├─ db/\n│  │  │  ├─ docs/\n├─ yawning_titan/\n│  ├─ agents/\n│  ├─ game_modes/\n│  ├─ images/\n│  ├─ notebooks/\n```\n\n## Documentation\n\n**YT** comes with a full set of documentation created using the Sphinx documentation library and are hosted on GitHub\npages at [https://dstl.github.io/YAWNING-TITAN](https://dstl.github.io/YAWNING-TITAN/index.html).\n\nThese docs can also be built manually from the cloned repo by using the following commands:\n\u003e This will require the development dependencies to be installed, see [Development Installation](#development-installation)\n\n##### Unix\n```bash\ncd docs\nmake html\n```\n\n##### Windows\n```powershell\ncd docs\n.\\make.bat html\n```\n\n\nThis will build the documentation as a collection of HTML files which uses the Read The Docs sphinx theme. Other build\noptions are available but may require additional dependencies such as LaTeX and PDF. Please refer to the Sphinx documentation\nfor your specific output requirements.\n\n## Example Notebooks\n\nA collection of example notebooks have been provided. The original versions of these notebooks stored in\n[`yawning_titan/notebooks/_package_data`](yawning_titan/notebooks/_package_data) and are copied over to the newly created\nusers notebooks application directory (`~/yawning_titan/notebooks`) at install. These are the best place to start if you\nwant to get a feel for **YT** before builidng the docs and exploring further. If the notebooks become corrupted in the\nusers notebooks application directory, they can be reset running the following commands from an interactive Python\nsession on your venv:\n\n```python\nfrom yawning_titan.notebooks.jupyter import reset_default_jupyter_notebooks\nreset_default_jupyter_notebooks(overwrite_existing=True)\n```\n\n## Cite This Work\n\nIf you would like to include a citation for **YT** in your work, please cite the paper published at the ICML 2022 ML4Cyber Workshop.\n```bibtex\n@inproceedings{inproceedings,\n author = {Andrew, Alex and Spillard, Sam and Collyer, Joshua and Dhir, Neil},\n year = {2022},\n month = {07},\n title = {Developing Optimal Causal Cyber-Defence Agents via Cyber Security Simulation},\n maintitle = {International Confernece on Machine Learning (ICML)},\n booktitle = {Workshop on Machine Learning for Cybersecurity (ML4Cyber)}\n}\n```\n\n# License\n\nYAWNING-TITAN is released under MIT license. Please see [LICENSE](LICENSE) for details.\n\n# Related Environments\n\nYou may also wish to explore the PrimAITE environment, an effective simulation capability for the purposes of training and evaluating AI in a cyber-defensive role: https://github.com/Autonomous-Resilient-Cyber-Defence/PrimAITE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdstl%2FYAWNING-TITAN","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdstl%2FYAWNING-TITAN","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdstl%2FYAWNING-TITAN/lists"}