5S-TES DemoStack Quickstart
This is not intended to be a production deployment. To run these applications in a deployed environment, see their respective deployment documentation
DemoStack is a demonstration instance of the complete Five Safes TES Weave (intended to be run locally).
The purpose of this Quickstart is allowing you to run all the components of Five Safes TES in a single install, and guide you through sending your first “Hello World” submission to the Five Safes TES. This then will help you to explore how this weave can be useful for your use case, or as part of a development pathway.
The quickstart is expected to take approximately 10 minutes to complete.
Prerequisites
-
To run the quickstart, you will need Docker, which can be installed and running on your machine, following these instructions. Any issues can be raised here.
-
The Docker Compose files of Five Safes TES Weave need to be downloaded or cloned from the GitHub repository. You can do this by running the following command:
git clone https://github.com/SwanseaUniversityMedical/5S-TES-deployment.gitYou do not need a GitHub account to access these, but you may wish to create one in order to keep your configuration script in version control. If you do this or wish to clone the repository, you will also need Git installed on your machine.
- Funnel is chosen as the TES executor for the DemoStack quickstart. The DemoStack provides automated setup scripts that handle Funnel installation and configuration.
If there are any issues with the automated setup scripts, or if you prefer to set up Funnel manually, follow the instructions here.
Sending Hello World submission
Start the starter.sh automation scripts
The DemoStack includes a starter.sh automation script that automates the initial setup process. This script will:
- Start all Docker Compose services in
DemoMode = trueto seed the demo data and instances. - Install and configure the MinIO client (mc).
- Fetch MinIO access keys for Funnel.
- Installs and setup the Funnel for executing the TES tasks.
- Generate the Funnel configuration file.
- Start the Funnel TES server.
Follow these steps to run the starter.sh automation script:
- Within the 5S-TES-deployment root directory, change to the
DemoStackdirectory:cd DemoStack - Give permission to execute the
starter.shautomation script:chmod +x scripts/starter.shThe command above only requires if you run this for the first time.
- Run the
starter.shautomation script:./scripts/starter.sh
Wait until all the services are up and running and the starter.sh script
finishes executing. You should see the following message in the terminal:
...
Creating funnel-config.yml...
Starting Funnel...
server Server listening
httpPort 8000
rpcAddress :9090
time 2026-02-25T12:47:16ZThis will start the stack with the seeding of some demo data and instances. For example, Testing project will be created, TRE named DEMO will be deployed, and users credentials used to communicate between apps will be seeded.
You can check the status of the services by running docker stats in the
terminal.
Once the keycloak service has started, the configuration files for three realms DARE-Control, DARE-TRE and Data-Egress will be imported and applied automatically.
As a result, the admin user globaladminuser to access Submission Layer, TRE Agent and Egress Layer will be created in each realm.
Username: globaladminuser
Password: password123Approve the Project access to the TRE
Since the “DemoMode” is true for the first run, a project named Testing and a TRE named DEMO are automatically seeded in the Submission layer. Once the Docker Compose stack has started successfully, if the seeded project and TRE do not appear yet, please allow approximately 2 minutes for the TRE Agent to complete the migration of the demo projects and sync.
Follow this guide to approve the project access to the TRE.
To make sure that the project has been approved and Submission Layer is in sync with TRE Agent, choose the project in Submission layer and navigate to the TREs section. You should see Approved status for the TRE.

Prepare to send the first submission
To send the first submission, you need to disable simulation mode in DemoStack by doing the following:
- Set
DemoModetofalse - Set
UseTESKtotrue
This can be done manually by editing the .env file and restarting the Docker Compose services or by running the submission-ready.sh automation script.
Follow these steps to run the submission-ready.sh automation script:
- Open a new terminal window and navigate to the DemoStack directory:
cd DemoStack- Give permission to execute the
submission-ready.shautomation script:
chmod +x scripts/submission-ready.shThe command above only requires if you run this for the first time.
- Run the
submission-ready.shautomation script:
./scripts/submission-ready.shThis script will automatically do the following steps:
- Set
DemoModetofalse - Set
UseTESKtotrue - Restart all Docker Compose services with the updated configuration.
Tips:
- Before sending submission, make sure you have Funnel running in a separate terminal window. You can start Funnel by running the following command at the
DemoStackdirectory:
./scripts/funnel.sh- You can always start or restart the Docker Compose services (e.g.,after editing the
.envfile) by running the following command:
./scripts/submission-ready.shThis will help keep the stack in the state that ready for you to send the submission.
Send a Hello World submission
The Hello World TES task is a simple submission that is used to demo the DemoStack.
-
Login to the Submission Layer
-
Go to the
Projectspage. -
From the list of projects select the
Testingproject. -
Once in the
Testingproject go toSubmissions->Create Submission->TES Wizard. -
On the
TES Wizardpage selectSubmission Mode -> Raw JSON -
Enter the following payload, then click
Submit TES Task:
{
"state": 0,
"name": "Hello World",
"inputs": [],
"outputs": [
{
"name": "Stdout",
"description": "Stdout results",
"url": "s3://",
"path": "/outputs",
"type": "DIRECTORY"
}
],
"executors": [
{
"image": "ubuntu",
"command": ["echo", "Hello World"],
"workdir": "/outputs",
"stdout": "/outputs/stdout"
}
],
"volumes": null,
"tags": {
"project": "Testing",
"tres": "DEMO"
},
"logs": null,
"creation_time": null
}More information around submitting different TES Tasks can be found in the TES Wizard
guide.
Tracking and approving the submission results
You will be redirected to the list of Submissions, click onto the submission you just sent.
You should be able to see the status of the submission. Once it has been processed, the status will be set to: Requested Egress.
This means that the results are waiting for egress approval. Follow this guide to approve the submission results.
View the submission results
Once the Egress request has been approved, you can view the results in the Submission Layer’s output bucket.
The final successful process should be like this:

Next steps
Now you have sent your first submission, you can try to send a different submission with a different project and TRE using this guide.