Skip to content

GHOSTS ANIMATOR Overview

GHOSTS ANIMATOR Source Code

The GHOSTS ANIMATOR Source Code Repository is hosted on GitHub, but has been archived.

Animator has been baked into the main GHOSTS API. Any development on features listed here will be done in the main GHOSTS repository.

Animator brings NPCs to life in two ways:

  1. Initial Creation

    Animator creates the initial NPC profile, including details such as name, address, career, finances, and family members. Based on configuration, it can place users in a multi-level organizational structure, and establish relationships between users.

  2. Animation Jobs

    Via jobs that can be run during training and exercise events, Animator can update the NPC's preferences, beliefs, and relationships. This enables dynamic NPCs that change over time.

At its core, Animator is a realistic user detail generator. Its primary function is to create sufficiently realistic identities and accompanying verbose portfolios of personal information. Each generated user, or NPC (Non-Player Character) as we call them, has numerous categories of details associated with them, and a great deal of metadata that define who they are. Each piece of information is generated using sourced datasets in an attempt to distribute characteristics realistically. We like to say it creates, "NPCs so real, they sell for a premium on the dark web."1

Quick Start

git clone <https://github.com/cmu-sei/GHOSTS-ANIMATOR>
cd ghosts-animator/src
docker build . -t ghosts/animator
docker compose up -d

or if you don't want to build and just run the latest docker-compose file:

mkdir ghosts-animator
cd ghosts-animator
curl https://github.com/cmu-sei/GHOSTS-ANIMATOR/blob/master/src/docker-compose.yml -o docker-compose.yml
docker compose up -d

Note, most configuration that you may want to change is located in ./config, and so you can mount that directory to your local machine and make changes there.

Now browse to http://localhost:5000/

Using Animator to Create NPCs

The data generated by Animator can be leveraged in multiple areas, but is particularly applicable in four key areas:

  1. Training Machine Learning Algorithms - Animator creates larges sets of hyper-realistic user data. It can be leveraged to generate data sets that can be used for training machine learning algorithms. This enables the rapid training of anthropology-related ML algorithms that can leverage one or more of the hundred-plus data points generated by Animator.2

  2. Honeypot Payloads - NPC details generated by Animator are designed to be as realistic as possible given the available relevant open source information. This makes the user data convincingly real while still being completely fabricated. Therefore, the data is ideal for use in applications like honeypots, where the goal is to trick an attacker into thinking they are compromising an asset with real user data. This data is also perfect for any other application that would benefit from extremely realistic user information.

  3. Insider Threat Modeling - Each Animator NPC is given an Insider Threat Profile. This profile determines how likely it is that the NPC is an insider threat by incorporating the CDSE's Insider Threat Potential Indicators. As we continue developing Animator, it will be possible to configure NPCs to be more or less likely to be insider threats based on factors like their finances, criminal history, foreign contacts, and mental health.

  4. Social Network and Relationship Modeling - Animator can establish relationships between the NPCs it generates. As we increase the fidelity of inter-NPC relationships, Animator NPCs create larger and more realistic social networks. By leveraging Animator's ability to quickly generate thousands of inter-related NPCs, Animator can easily be used to perform social networking modeling and research.

How Creating NPCs Works

  • Once Animator receives a request to create NPCs, it starts by creating an empty NPC Profile.
  • Animator then iterates through all 100+ data points for the NPC and generates synthetic data to be associated with that NPC.
  • Example data points are name, address, mental health, career, finances, and family members.
  • Data points are either generated at random or are generated using weighted randomization. Weighted randomization involves leveraging verified datasets to influence the distribution of randomly generated data points to match much more closely to reality.
  • Animator will complete this process for as many users as were selected by the request. This information can be exported through the API, or stored in a local database

Animator currently supports storing NPC data in a local Mongo Database. This feature is still being actively improved.


  1. The GHOSTS development team highly recommends Nick Bilton's book American Kingpin for insight into the early days of the dark web. 

  2. A key developer from the Animator team went on to a position in the SEI's AI division. AI models need data. You connect the dots.