diff --git a/deployments/ts-demo/ts-demo.c b/deployments/ts-demo/ts-demo.c
new file mode 100644
index 0000000..c7ef52b
--- /dev/null
+++ b/deployments/ts-demo/ts-demo.c
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <app/ts-demo/ts-demo.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "libpsa.h"
+
+int main(int argc, char *argv[])
+{
+	psa_status_t psa_status = PSA_ERROR_GENERIC_ERROR;
+	const char *service_name = "sn:trustedfirmware.org:crypto:0";
+
+	if (argc > 1)
+		service_name = argv[1];
+
+	psa_status = libpsa_init_crypto_context(service_name);
+
+	if (psa_status) {
+		printf("libpsa_init_crypto_context failed: %d\n", psa_status);
+		return psa_status;
+	}
+
+	psa_status = run_ts_demo(true);
+
+	libpsa_deinit_its_context();
+
+	if (psa_status)
+		printf("\n*** ts-demo failed ***\n\n");
+	else
+		printf("\n*** ts-demo was successful ***\n\n");
+
+	return psa_status;
+}
diff --git a/deployments/ts-demo/ts-demo.cmake b/deployments/ts-demo/ts-demo.cmake
index 0769df9..a7fda2c 100644
--- a/deployments/ts-demo/ts-demo.cmake
+++ b/deployments/ts-demo/ts-demo.cmake
@@ -12,19 +12,18 @@
 #-------------------------------------------------------------------------------
 
 #-------------------------------------------------------------------------------
-#  Use libts for locating and accessing services. An appropriate version of
-#  libts will be imported for the environment in which service tests are
-#  deployed.
+#  Use libpsa for locating PSA services. An appropriate version of
+#  libpsa will be imported for the environment.
 #-------------------------------------------------------------------------------
-include(${TS_ROOT}/deployments/libts/libts-import.cmake)
-target_link_libraries(ts-demo PRIVATE libts::ts)
+include(${TS_ROOT}/deployments/libpsa/libpsa-import.cmake)
+target_link_libraries(ts-demo PRIVATE libpsa::psa)
 
 #-------------------------------------------------------------------------------
 #  Common main for all deployments
 #
 #-------------------------------------------------------------------------------
 target_sources(ts-demo PRIVATE
-	"${CMAKE_CURRENT_LIST_DIR}/ts-demo.cpp"
+	"${CMAKE_CURRENT_LIST_DIR}/ts-demo.c"
 )
 
 #-------------------------------------------------------------------------------
@@ -36,26 +35,9 @@
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
 		"components/app/ts-demo"
-		"components/common/tlv"
-		"components/service/common/include"
-		"components/service/common/client"
-		"components/service/crypto/client/cpp"
-		"components/service/crypto/client/cpp/protocol/packed-c"
-		"protocols/service/crypto/packed-c"
 )
 
 #-------------------------------------------------------------------------------
-#  Components used from external projects
-#
-#-------------------------------------------------------------------------------
-
-# MbedTLS provides libmbedcrypto
-set(MBEDTLS_USER_CONFIG_FILE "${TS_ROOT}/external/MbedTLS/config/crypto_posix.h"
-	CACHE STRING "Configuration file for mbedcrypto")
-include(${TS_ROOT}/external/MbedTLS/MbedTLS.cmake)
-target_link_libraries(ts-demo PRIVATE MbedTLS::mbedcrypto)
-
-#-------------------------------------------------------------------------------
 #  Define install content.
 #
 #-------------------------------------------------------------------------------
diff --git a/deployments/ts-demo/ts-demo.cpp b/deployments/ts-demo/ts-demo.cpp
deleted file mode 100644
index 55948a3..0000000
--- a/deployments/ts-demo/ts-demo.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// SPDX-License-Identifier: BSD-2-Clause
-/*
- * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
- */
-
-#include <cstdio>
-#include <service/crypto/client/cpp/protocol/packed-c/packedc_crypto_client.h>
-#include <protocols/rpc/common/packed-c/encoding.h>
-#include <app/ts-demo/ts-demo.h>
-#include <service_locator.h>
-#include <rpc_caller.h>
-
-int main(int argc, char *argv[]) {
-	(void) argc;
-	(void) argv;
-
-	int status = -1;
-	struct service_context *crypto_service_context = NULL;
-
-	service_locator_init();
-
-	crypto_service_context = service_locator_query("sn:trustedfirmware.org:crypto:0");
-
-	if (crypto_service_context) {
-
-		struct rpc_caller_session *session = NULL;
-
-		session = service_context_open(crypto_service_context);
-
-		if (session) {
-
-			packedc_crypto_client crypto_client(session);
-
-			status = run_ts_demo(&crypto_client, true);
-
-			if (status != 0) {
-				printf("run_ts_demo failed\n");
-			}
-
-			service_context_close(crypto_service_context, session);
-		}
-		else {
-			printf("Failed to open rpc session\n");
-		}
-
-		service_context_relinquish(crypto_service_context);
-	}
-	else {
-		printf("Failed to discover crypto service\n");
-	}
-
-	return status;
-}
