Caldera

MITRE Caldera adversary emulation platform. Architecture overview, Docker and source installation, plugin system, agent deployment, and REST API quick start.

#Overview

#What is Caldera

MITRE Caldera is an open-source adversary emulation platform used for automated red team operations, blue team defense testing, and purple team exercises. It maps every action to MITRE ATT&CK techniques, making it ideal for structured security assessments.

  • Runs autonomous adversary operations end-to-end
  • Plugin-based architecture - extend with custom abilities, agents, and planners
  • Provides a REST API for full programmatic control
  • Supports Windows, Linux, and macOS targets
  • Built-in reporting tied to ATT&CK navigator layers

#Architecture

Component Description
Server Central C2 server (Python/aiohttp), hosts the REST API and web UI on port 8888
Agents Implants deployed on targets that beacon back to the server (Sandcat, Manx, Ragdoll)
Abilities Individual ATT&CK technique implementations - the atomic unit of execution
Adversaries Ordered collections of abilities that form an attack profile
Operations A running instance of an adversary profile against a target group
Planners Decision engines that determine ability execution order (atomic, batch, buckets)
Sources Fact stores that feed dynamic variables into abilities at runtime
Plugins Modular extensions (Stockpile, Compass, Response, Human, etc.)
# Clone and run with Docker
git clone https://github.com/mitre/caldera.git --recursive
cd caldera

# Build and start (includes all default plugins)
docker build -t caldera .
docker run -d -p 8888:8888 -p 7010:7010 -p 7012:7012 \
  --name caldera caldera

# Default credentials
# UI: http://localhost:8888
# Red:  admin / admin
# Blue: blue  / admin

# Verify server is running
curl -s http://localhost:8888/api/v2/health \
  -H "KEY:ADMIN123"

#Installation - pip / Source

# Clone with all submodules (plugins)
git clone https://github.com/mitre/caldera.git --recursive
cd caldera

# Python 3.8+ required
pip install -r requirements.txt

# Start the server
python server.py --insecure --build

# Custom config: edit conf/local.yml
# Change default API keys, port, users
# conf/local.yml - key settings
port: 8888
api_key_red: ADMIN123
api_key_blue: BLUE123
users:
  admin:
    password: admin
  blue:
    password: admin
plugins:
  - stockpile
  - compass
  - sandcat
  - manx
  - response

#Also See

#Cyber Aurelien Guidi