Skip to main content

Cyber-testbed Reconstruction and Automation Description Language

Define reproducible
cyber-range environments.

CRADLE is a declarative and debuggable domain-specific language for describing cyber-testbed environments as code. It provides a high-level, static representation of computing infrastructure that can be reviewed, transformed and deployed on supported platforms.

scenario.cradle
metadata() >
    name("HelloWorld-Win"),
    eventType("sequence"),
    object("HelloWorld").

instances() >
    instance("win7"),
    instance("router").

network("lan_0") >
    subnet("192.168.56.0/24"),
    endpoint("win7", "192.168.56.121"),
    endpoint("router", "192.168.56.122").

Bring your cyber-range environment into one structured description.

CRADLE brings systems, networks, artifacts and event sequences into one structured scenario definition. Instead of spreading environment intent across configuration files, scripts, infrastructure settings and individual knowledge, teams can describe what a cyber environment should contain and how its events should progress in one place. The resulting static description can be reviewed, maintained and transformed for supported deployment environments.

CRADLE follows a Cyber Experimentation As Code (CEaC) approach, representing computing components and scenario intent as code rather than as disconnected setup instructions.

01

Declarative

Describe the intended systems, networks, artifacts and event timeline without tying the scenario to the implementation details of one deployment platform.

02

Reproducible

Keep the environment and event sequence in a structured source description that can be transformed again for supported deployment targets.

03

Debuggable

Make environment intent inspectable so teams can review changes, understand scenario structure and diagnose issues more easily.

From scenario definition to environment.

Define the environment once, generate the required deployment material and move through a consistent workflow.

scenario.cradle
metadata() >
    name("HelloWorld-Win"),
    eventType("sequence"),
    object("HelloWorld").

instances() >
    instance("win7"),
    instance("router").

network("lan_0") >
    subnet("192.168.56.0/24"),
    endpoint("win7", "192.168.56.121"),
    endpoint("router", "192.168.56.122").
Define
Generate
Deploy
Generated Environment
win7192.168.56.121
router192.168.56.122
192.168.56.0/24
Learn how scenarios are written →

Generate for documented deployment targets.

CRADLE currently documents generation for libvirt, VirtualBox and SPHERE, with complete local workflow coverage for libvirt and VirtualBox.

libvirtVirtualBoxSPHERE

Built through collaboration.

CRADLE is developed with contributions from project leads, collaborators and supporting organisations.

Project Leads

Associate Professor Liang Zhenkai

A/P Liang Zhenkai

National University of Singapore
Lecturer Anis Bin Yusof

Dr Anis Bin Yusof

National University of Singapore

Collaborators

ncl

National Cybersecruity R&D Laboratories

USC Information Sciences Institute

University of Southern California Information Sciences Institute

Special Thanks

We also acknowledge the contributors and organisations that supported the development and evaluation of CRADLE.