How To Use TTX Gym

Running a cyber security exercise is an immersive and effective way to evaluate and practise the skills and decision-making mechanisms you need to respond to cyber incidents. TTX Gym helps by providing a custom-designed tool to produce consistent, effective, and insightful exercising experiences.

Planning Your Exercise

TTX Gym is best suited for use in interactive, facilitator-led training. The tool can be used in a standalone manner, but it is designed to present a participant view to those interacting with the scenario, as well as a separate facilitator view for the organiser to control exercise progression and ensure appropriate notes and outcomes are recorded.

Ideal setup: For in-person sessions, the facilitator uses a laptop running TTX Gym with an additional monitor or TV for the participant view. For online or hybrid exercises, the participant view can be shared via screen sharing.

Exercising is one of the most cost-effective ways an organisation can test its ability to respond to cyber incidents. By running an exercise using TTX Gym, you can establish how effective your current defence and response mechanisms are, improve colleagues' internal relationships and skills, and identify areas for further improvement.

New to the tool? Open TTX Gym and choose Try a demo exercise — a short built-in scenario that takes about five minutes to click through, so you can see how everything fits together before loading a scenario of your own.

Using the Exercise Library

Choosing an existing exercise from the Exercise Library is the easiest way for beginners to get started. The Library is populated with a wide range of scenarios covering a variety of themes and situations, and can be searched and filtered using the controls in the sidebar.

To find out more about an exercise, click on the thumbnail and a description will appear.

The duration slider in the sidebar sets an upper bound rather than an exact match: drag it to 45 minutes and you see everything that would fit in 45 minutes, not only the exercises written to exactly that length. Most facilitators are working to the slot they have been given rather than to a specific number. The library is grouped into sections — the audience an exercise is written for, or the series it belongs to. The technical exercises are progressions rather than a loose pile: the Malware set works from a first suspicious file through to forensic recovery, and the Supply Chain set through compromise arriving via software, hardware, identity and service. The number on each card is its place in that order, though any of them stands on its own.

The pills across the top of the gallery are those same sections — pick one to see it on its own. Beside them, the cards or list toggle switches between browsing and comparing: cards when you are looking for something, a list when you are weighing several against each other.

From here you have three choices. Run Exercise opens TTX Gym with the scenario loaded and ready to go. Customise opens it in the Exercise Builder, so you can tailor it to your own organisation — swapping in the names of your systems, teams and suppliers — before you run it. Download saves the .ttxf file to edit or share however you like (see Creating and Modifying Scenarios below).

Using the TTX Gym Tool

TTX Gym has two views: the primary facilitator window and the participant window. The facilitator window shows the scenario laid out in stages — each stage can be expanded to see the content, facilitator prompts, and questions.

To begin the exercise, use the controls at the bottom to navigate through each stage. The active stage will be coloured blue, and once all stage questions are answered the stage will turn green to indicate completion. Stages can be freely navigated in any order; the completion of stages or the answering of questions is at the discretion of the facilitator. Note that responses and notes cannot be altered unless the stage is active.

At the completion of the exercise, or when desired by the facilitator, an output report can be generated to record progress.

The Participant Window

The participant window allows people attending the exercise to experience a specific, tailored view that relays content stage by stage. It can be spawned by the facilitator as a separate tab and presented on a second screen or over video conferencing. This will automatically update as the facilitator moves through the stages. At the completion of the exercise, an exercise summary can be shown via the participant window.

Creating and Modifying Scenarios

Answer presets: almost every rating question in a tabletop uses the same five-point confidence scale, so new questions in the Exercise Builder start with it already filled in. The Answers dropdown on each question swaps it for agreement, maturity, frequency or yes/no scales, or clears it so you can write your own. Duplicate stage copies a whole stage — content, timing, prompts and questions — which is usually faster than building the next one from scratch.

TTX Gym uses scenario files formatted in a specific way. These TTXF files use Markdown-style syntax and so are easy to read, change, or create from scratch, offering unlimited customisation of exercises.

A guide to the file format is below. Scenario files can be loaded directly into TTX Gym or shared with others.

Tip: For convenience, a scenario builder tool for easily creating TTXF files in the correct format is available here.

The TTXF File Structure and Syntax

This guide explains how to create configuration files that define stages, questions, variables, and facilitator prompts with markdown-enhanced content. Follow this structure and syntax to build properly formatted and feature-rich files.

The configuration file is structured into stages, which contain information content along with optional questions, facilitator prompts, and discussion points. Each 'content' type has specific indicators to denote its purpose.

Each scenario file should begin with a title and summary variable. An optional image variable can also be provided — if present, it will appear as a thumbnail in the facilitator sidebar and as a blurred background on the participant screen:

! title: Example Scenario Title
! image: https://example.com/cover.jpg
! summary
Example scenario summary.
This can spread across multiple lines or paragraphs.
Sigil
Purpose
Example
!
Metadata / key-value variable
! title: My Scenario
@
Stage declaration
@ Initial Incident
#
Array block (prompts / discussion)
# prompts
+
Array item
+ Ask about incident response
?
Assessment question (shown on participant screen)
? What action is taken first?
?-
Assessment question (hidden from participant screen)
?- Internal facilitator question
++
Correct answer (quiz mode)
++ Notify the security team
! image
Scenario cover image URL — shown as thumbnail in facilitator sidebar and blurred background on participant screen
! image: https://example.com/img.jpg

1. Stages @ sigil

Stages define major sections in your file. Use @ followed by the stage name. Everything after this line belongs to this stage until the next stage declaration. Each stage should always have a content variable that defines the content displayed to participants on the presenter view.

@ Initial Incident

2. Key-Value Variables ! sigil

Define variables using ! followed by a key and value separated by a colon. For multi-line values, omit the colon — everything on subsequent lines until the next directive becomes the value. Blank lines within a multi-line value are preserved and rendered as paragraph breaks.

! author: Jane Doe
! content
This is the first paragraph of a description.

A blank line above creates a new paragraph.
This line continues the same paragraph.

The following global variables are recognised at the top of the file (before any @ stage declarations):

Variable
Purpose
! title
Scenario name — shown in the facilitator title bar
! author
Scenario author name (optional)
! summary
Introductory content shown on the first screen before stages begin
! conclusion
Custom debrief text shown on the finish screen (optional)
! image
URL of a cover image — displayed as a 16:9 thumbnail in the facilitator sidebar and as a blurred background on the participant screen (optional)

Inside a stage, one further key is recognised:

Variable
Purpose
Output
! duration
How long you plan to spend on this stage — 10 mins, 1h 30m, or a bare number for minutes. Optional. The facilitator's timer shows elapsed time against it, turning amber at 80% and red once you run over
03:21 / 10:00

3. Questions ? sigil

Use ? to define an assessment question for the stage. Answers are listed under it, each starting with +. There can be multiple questions per stage — each will contribute towards the indicative score for the stage. Scoring assumes an order of preference increasing from first (0%) to last (100%).

? What core systems are included in vulnerability assessments?
+ None
+ Some centrally managed systems
+ Most centrally managed systems
+ All centrally managed systems

By default all questions are shown on both the facilitator view and the participant screen. To define a question that is only visible to the facilitator — for example an internal scoring note or a question you don't want to prompt participants with — use ?- instead of ?. The question will still be answered and scored normally, but will not appear on the participant screen.

?- How would you rate the team's overall response readiness?
+ Poor
+ Developing
+ Proficient
+ Exemplary

'Quiz' style questions are also supported, where only one option is correct and the rest are false. For these question types, answers are scored as 100% for a correct answer and 0% for an incorrect one. To use this type, define a question as normal but denote the correct answer using ++ instead of +.

4. Facilitator Prompts # prompts

Use # prompts to declare facilitator prompts. These will not appear on the participant view, but will be shown below the stage content in the facilitator view. Each prompt starts with +.

# prompts
+ Ask the team about their incident response plan.
+ Discuss the potential risks of delaying action.
+ Encourage brainstorming on containment strategies.

5. Discussion Points # discussion

Use # discussion to declare discussion points. These will appear on the participant view, to encourage discussion and enable fuller answers to stage questions. Each prompt starts with +.

# discussion
+ Do you regularly update and test your incident response plan?
+ Discuss the potential risks of delaying action.
+ Do you have a designated board member with responsibility for security incidents?

Markdown Syntax

Enhance your stage content using Markdown. The following features are supported within multi-line content fields:

Syntax
Description
Output
**text**
Bold text
Important text
*text*
Italic text
Italicized text
`text`
Inline code — filenames, paths, registry keys, log lines. The text inside is reproduced verbatim, so *.tmp keeps its asterisk and ** is not read as bold
svc_upd.exe
```label
…lines…
```
Preformatted block, for a log excerpt, email headers, a ransom note or any artefact whose exact shape matters. Everything between the fences is reproduced verbatim — no formatting is applied, and lines beginning with #, +, ? or // are kept as text rather than read as directives, so a log can be pasted in unaltered. The label after the opening fence is optional and appears above the block. Long lines wrap rather than scroll, so keep excerpts narrow enough to read on a projector
SIEM export
02:13:47 EDR unsigned binary 02:13:48 NET TLS 443 outbound
- item
Bullet list
• Item
1. item
Numbered list
1. Item
~ text
Blockquote
Quoted statement
%news(headline)
%news(headline | flag)
Renders the headline as a still from a news broadcast — the studio shot with a strap across the bottom carrying your text. Must be on a line of its own. The flag is the red label at the left of the strap and defaults to Breaking News; set it to Live at Six, Developing or whatever suits the moment. Useful for turning up the pressure mid-exercise, or for showing a room what publication actually looks like
Studio backdrop with a red BREAKING NEWS flag and your headline beside it
%(url)
Embed image at full width
Image rendered from URL
\ text
Escapes a content line that would otherwise be read as a directive. Use it when a line has to begin with #, +, ?, @ or ! — the backslash is stripped and the rest of the line is kept as content
# Renders as a literal hash
%(url | 50%)
Embed image scaled to a percentage of its natural size, or at an absolute size (e.g. 200px). Uses a pipe | as delimiter to avoid conflicts with URLs containing commas
Image at specified scale
%(../lib/images/x.jpg)
Image paths may be relative to the TTX Gym page as well as absolute, so a scenario and its images work from a local copy or offline. Relative paths are resolved to absolute ones before they reach the participant window or an exported report
Works offline
(blank line)
A blank line between paragraphs of content creates a visible paragraph break when rendered. Lines without a blank line between them are joined into one paragraph
Paragraph spacing
Tip: The pipe character (|) was chosen as the image scale delimiter because it is not a valid unencoded character in URLs — so even URLs containing commas will be parsed correctly. For example: %(https://cdn.example.com/img?a=1,b=2 | 60%)

Running the Room

Everything below is in the facilitator sidebar, and none of it changes the scenario file — it is all about driving the session in front of you.

Moving through stages

As well as the Next and Prev buttons, the exercise responds to Page Down / Page Up and the arrow keys, so a presenter remote works without any setup. Keys are ignored while you are typing in notes or actions.

You can also go straight to any stage by clicking its number in the row of stage markers, without stepping through the ones in between. That is useful for skipping a stage that is not landing, or returning to one the room wants to revisit — and it is what makes branching exercises possible. A scenario can offer the room a choice, put the destination for each option in the facilitator prompts where only you can see it, and send everyone wherever the vote goes. Night Shift in the Just for Fun section of the library is built this way: twenty-three stages, four endings, and a different route each time you run it.

The participant view mirror

A small live copy of the participant screen sits in the bottom-right of the facilitator window, so you can see exactly what the room sees without switching windows. Collapse it with the button if it is in the way.

It stays above everything else in the facilitator window, including the paused overlay and the summary — while the exercise is paused or the summary is up, what the room is looking at is exactly the thing you still want to see.

It is a genuine second view of the same thing, not a snapshot. The stage, the response tallies, the theme, the text size and the scroll position all follow, in both directions — scroll the mirror and the room's screen scrolls with it, which is the easiest way to walk a room down a long inject without leaving your own window.

Drag its header to move it, and the corner at its top-left to resize it — the whole participant screen scales with it, so you can push it up to something you can properly read while working through a long inject, then drop it back down. Double-click either the header or the corner to put that back to where it started. Both the size and the position are remembered, and the corner takes focus if arrow keys suit you better than a drag.

The preview takes its shape from the screen the room is actually looking at. When you open a participant window it reports its size, and the mirror renders at exactly those dimensions and scales the whole thing down — so a 4:3 projector previews as 4:3, a 4K television previews at 4K proportions, and an ultrawide previews wide. Because it is scaled rather than re-laid-out, the line breaks and the amount of content above the fold are the same as the room sees. The pixel size is shown in the header so you know what you are previewing, and it updates if that window is resized or made fullscreen.

The mirror's own header carries the controls worth having at full size: A− and A+ set the text size on the participant screen, switches it between the screen and projector themes, and returns the panel itself to its default size and place if you have moved it somewhere awkward. The frame itself is live, so you can scroll and click inside it too — though at quarter scale the header buttons are the easier target.

Blanking the screen

Blank Screen — or pressing B — covers the participant display for a break or a side conversation, without losing your place. Press it again to bring the content back.

Running it offline

Download the tool as a single HTML file and open it from your own machine — useful if the exercise is being run somewhere without reliable network, or if your organisation would rather it never touched the internet at all. Everything works: load a scenario, drive the participant window, capture notes and actions, export the report.

Two caveats. Scenario cover images and any embedded pictures still come from the network, so scenarios that use them will show the text without the images. And some browsers refuse to let a page opened from a file:// path save anything locally, which turns off autosave — TTX Gym will tell you if that happens, and Save Session still writes a file you can keep.

The participant window works the same way offline as it does online. Open it with Participant Window and leave it open; if you close it and open a new one, it will pick up whatever stage you are on by itself.

The facilitator pack

Under More, Facilitator Pack lays the whole scenario out as a single document — every stage in order with its planned duration, content, discussion points, facilitator prompts and questions, with correct quiz answers marked. It is meant for the hour before the exercise: read it through, or print it and take it into the room. Prompts are labelled as not shown to participants, so there is no risk of putting the wrong page on the projector.

Ad-hoc injects

Exercises rarely go exactly to plan. Send Inject pushes a one-off line of text to the participant screen — "the press have just called", "your primary site has lost power" — without editing the scenario. Moving to the next stage clears it.

Light and dark

The two windows are themed independently, because a laptop in a dim room and a projector in a lit one want opposite things.

The participant window opens dark; the half-moon icon in its bottom-right switches to a light, high-contrast theme for projectors. The facilitator window has its own Light Theme switch under More in the sidebar — useful if you are sharing your own screen, or simply prefer it. Both remember your choice.

Recording What Happened

Responses are a tally, not a single answer

Each answer option is a button, and every click records one response. Click once and it behaves like a simple choice; take a show of hands and click an option once per hand, and the exercise records the spread. The small on an option removes a response if you over-count.

This matters because the interesting signal in a tabletop is usually disagreement. If half the room is confident and half is not, that gap is the finding — and a single answer would have averaged it away before anyone saw it.

The count appears on the participant screen as you record it, so the room watches the split form on the answer options rather than waiting for the summary. The option with the most responses is highlighted, and options with none fade back. Taking a response off with the small , or clearing the question, updates the room straight away too — a miscount is not something you have to live with.

Where you are

The participant screen shows the current stage and a marker for each stage of the exercise, so the room can see how far through they are without asking.

Actions

Every stage has an Actions panel for what needs to happen afterwards, with an owner and a due date. These are collected into a table at the top of the exported report, which is usually the part of the report anyone actually acts on.

Session details

The intro card carries the date, facilitator, attendees, and the objectives and scope of the exercise. Filling these in turns the report from a printout into a record of what was tested, by whom, and what was deliberately left out.

The summary

Present Summary puts the same summary on your screen and on the participant screen — the headline figures, the questions the room was least confident about, the actions with their owners, and each stage with its response distributions. What you are reading is what they are reading.

Your facilitator notes are deliberately not on either summary screen. They are your working record of the discussion, and they go into the exported report rather than onto a projector. Actions and their owners are shown, since agreeing who does what is the point of the debrief.

Confidence and quiz accuracy are reported separately

Rating questions measure what the room believes about itself. Quiz questions measure whether someone knew a fact. These are different things, so the summary reports them as two numbers and never averages them together. The report leads with the questions the room was least confident about, because that is the list worth taking away.

Treat the confidence figure as a map of where to look, not as a grade. A low score on a well-run exercise is a good outcome — it means people were honest.

Saving and resuming a session

Save Session writes a .ttxs file containing everything: the scenario itself, every response, your notes, the actions and the timings. Because the scenario travels inside it, Open Session will resume the exercise on any machine — useful for handing over to a co-facilitator, or for finishing a session that ran out of time.

Compare With Previous Run loads an older .ttxs alongside the current one and shows the movement in confidence since then. Running the same scenario a year later and seeing where the numbers moved is the point of exercising in the first place.

Checking Your File

Both the Exercise Builder and the TTX Gym player check a scenario as they read it, and report anything that looks wrong rather than failing silently. The Builder shows this in a strip above the preview as you type; the player shows it above the stage list when a file is loaded.

Things they will tell you about:

Tip: Warnings are shown in amber and problems in red. A scenario with warnings still runs — they are things worth a second look, not blockers.

Full Example

Here is a complete configuration file demonstrating all features:

! title: Security Breach Response Plan
! author: Jane Doe
! image: https://example.com/cover-photo.jpg
! summary
This scenario depicts an unusual login to a critical system.
Participants will be asked to consider their organisation's response procedures.

@ Stage 1: Identification
! duration: 15 mins
! content
An unusual login attempt was detected on a critical system at 02:14.

A blank line above creates a new paragraph when rendered.
%(https://example.com/diagram.png | 80%)

The incident response process should be invoked immediately.

# prompts
+ Ask the team to identify possible attack vectors.
+ Discuss recent security training and preparedness.
+ Explore options for immediate response.

# discussion
+ What does your incident response plan say about out-of-hours alerts?
+ Who holds the authority to invoke the response process?

? What action should be taken first?
+ Notify the security team
+ Investigate the login origin
+ Block the IP address

?- How would you rate the team's initial response readiness?
+ Poor
+ Developing
+ Proficient
+ Exemplary

@ Stage 2: Containment
! content
Contain the breach by isolating affected systems.

# prompts
+ Review logs for additional suspicious activity.
+ Coordinate with IT to isolate compromised systems.
+ Plan a communication strategy for stakeholders.

? How confident are you in your response procedures?
+ Not at all
+ Somewhat
+ Mostly
+ Completely

? Which system was used to detect the initial alert?
+ No detection system in place
+ Manual log review
++ SIEM / automated monitoring
+ Third-party managed detection

Use this guide to create structured, readable, and actionable scenario files.