Skip to content

Brad-Edwards/aces

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

140 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Agentic Cyber Environment System

Agentic Cyber Environment System (ACES) is a backend-agnostic scenario description language and reference runtime for cyber range scenarios and experiments.

The repository separates authored scenario meaning from processors, backends, participant implementations, runtime state, and archived evidence. That lets the same scenario be validated and compiled without binding it to one cloud, range implementation, or execution harness.

This is an academic and engineering project. The repository is intended to be read, tested, and used as a working reference implementation, not treated as a product surface.

Contents

What ACES SDL Describes

An SDL file is a declarative scenario document. It can describe topology, hosts, services, identities, content, relationships, agents, objectives, workflows, variables, and evaluation material without directly describing a specific backend's infrastructure primitives.

name: hospital-ransomware-surgery-day
description: Surgery-day ransomware exercise for a regional hospital.

variables:
  surgery_day_speed:
    type: number
    default: 1.0

nodes:
  internet-edge:
    type: Switch
    description: Public ingress for email, VPN, and external access

  mail-gateway:
    type: VM
    os: linux
    source: secure-mail-gateway
    resources: {ram: 2 gib, cpu: 1}
    services:
      - {port: 25, name: smtp-inbound}
    roles: {mail-admin: postfix}

Complete examples live in examples/scenarios/.

Getting Started

Prerequisites:

  • Python 3.11 or newer
  • uv
  • nox for the repository verification graph, or uvx nox without a separate install

Set up the Python reference implementation:

git clone https://github.com/autarchy-ai/aces.git
cd aces/implementations/python
uv sync --all-extras
uv run aces --help

Using the Python Reference Implementation

Parse and validate a scenario from Python:

from pathlib import Path

from aces_sdl import parse_sdl_file

scenario = parse_sdl_file(
    Path("../../examples/scenarios/hospital-ransomware-surgery-day.sdl.yaml")
)

for advisory in scenario.advisories:
    print(advisory)

Run the CLI from implementations/python:

uv run aces sdl resolve ../../examples/scenarios/hospital-ransomware-surgery-day.sdl.yaml
uv run aces sdl verify-imports ../../examples/scenarios/hospital-ransomware-surgery-day.sdl.yaml
uv run aces sdl publish ../../examples/scenarios/hospital-ransomware-surgery-day.sdl.yaml
uv run aces processor --help
uv run aces conformance --help
uv run aces-mcp

Repository Layout

  • specs/ - normative prose and formal specification material
  • contracts/ - published schemas, fixtures, manifests, and profiles
  • implementations/ - reference implementations and their local tooling
  • examples/ - worked SDL scenario examples
  • docs/ - explanatory documentation, API docs, and architecture decisions
  • research/ - supporting literature and reference ecosystem material
  • tools/ - repository maintenance, policy, and publication tooling
  • changelog.d/ - towncrier release note fragments

Lineage

Documentation

The documentation source is under docs/. Important entry points:

Verification

nox is the canonical verification graph. From the repository root:

uvx nox -s verify
uvx nox -s tests
uvx nox -l

The full verify session runs the project checks expected for pull requests, including repository policy, generated artifact checks, tests, and docs.

Contributing

Contributions are welcome where they improve the language, reference implementation, contracts, tests, examples, or documentation. Start with CONTRIBUTING.md.

Language and contract changes should be discussed before implementation because small SDL changes can affect validation, generated schemas, backend conformance, and existing scenario examples.

Versioning

The Python package currently declares its version in implementations/python/pyproject.toml. Release notes are collated from towncrier fragments in changelog.d/. Do not hand-edit CHANGELOG.md.

Maintainers

Citation

If you use ACES SDL in academic work, cite the repository:

@software{aces_sdl,
  author       = {Edwards, Brad},
  title        = {ACES SDL: Backend-Agnostic Scenario Description Language for Cyber Range Experiments},
  year         = {2026},
  organization = {Autarchy},
  license      = {MIT},
  url          = {https://github.com/autarchy-ai/aces}
}

License

Released under the MIT License. See LICENSE.

Releases

No releases published

Packages

 
 
 

Contributors

Languages