Skip to content

Commit b367063

Browse files
committed
feat(temporal): add codec server and encrypt Temporal histories
1 parent 8b4a06a commit b367063

37 files changed

+1375
-333
lines changed

deployments/fargate/main.tf

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,21 @@ module "ecs" {
5959
temporal_namespace = var.temporal_namespace
6060

6161
# Container environment variables
62-
tracecat_app_env = var.tracecat_app_env
63-
log_level = var.log_level
64-
temporal_log_level = var.temporal_log_level
65-
feature_flags = var.feature_flags
66-
ee_multi_tenant = var.ee_multi_tenant
67-
context_compression_enabled = var.context_compression_enabled
68-
context_compression_threshold_kb = var.context_compression_threshold_kb
69-
result_externalization_enabled = var.result_externalization_enabled
70-
collection_manifests_enabled = var.collection_manifests_enabled
71-
result_externalization_threshold_bytes = var.result_externalization_threshold_bytes
72-
workflow_artifact_retention_days = var.workflow_artifact_retention_days
62+
tracecat_app_env = var.tracecat_app_env
63+
log_level = var.log_level
64+
temporal_log_level = var.temporal_log_level
65+
feature_flags = var.feature_flags
66+
ee_multi_tenant = var.ee_multi_tenant
67+
context_compression_enabled = var.context_compression_enabled
68+
context_compression_threshold_kb = var.context_compression_threshold_kb
69+
temporal_payload_encryption_enabled = var.temporal_payload_encryption_enabled
70+
temporal_payload_encryption_key_version = var.temporal_payload_encryption_key_version
71+
temporal_payload_encryption_cache_ttl_seconds = var.temporal_payload_encryption_cache_ttl_seconds
72+
temporal_payload_encryption_cache_max_items = var.temporal_payload_encryption_cache_max_items
73+
result_externalization_enabled = var.result_externalization_enabled
74+
collection_manifests_enabled = var.collection_manifests_enabled
75+
result_externalization_threshold_bytes = var.result_externalization_threshold_bytes
76+
workflow_artifact_retention_days = var.workflow_artifact_retention_days
7377

7478
# Database connection pool
7579
db_max_overflow = var.db_max_overflow
@@ -88,9 +92,12 @@ module "ecs" {
8892
temporal_db_snapshot_name = var.temporal_db_snapshot_name
8993

9094
# Secrets from AWS Secrets Manager
91-
tracecat_db_encryption_key_arn = var.tracecat_db_encryption_key_arn
92-
tracecat_service_key_arn = var.tracecat_service_key_arn
93-
tracecat_signing_secret_arn = var.tracecat_signing_secret_arn
95+
tracecat_db_encryption_key_arn = var.tracecat_db_encryption_key_arn
96+
tracecat_service_key_arn = var.tracecat_service_key_arn
97+
tracecat_signing_secret_arn = var.tracecat_signing_secret_arn
98+
temporal_payload_encryption_key_arn = var.temporal_payload_encryption_key_arn
99+
temporal_visibility_hmac_key_arn = var.temporal_visibility_hmac_key_arn
100+
temporal_codec_server_shared_secret_arn = var.temporal_codec_server_shared_secret_arn
94101

95102
# Authentication
96103
auth_types = var.auth_types

deployments/fargate/modules/ecs/iam.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ resource "aws_iam_policy" "secrets_access" {
137137
var.tracecat_db_encryption_key_arn,
138138
var.tracecat_service_key_arn,
139139
var.tracecat_signing_secret_arn,
140+
var.temporal_payload_encryption_key_arn,
141+
var.temporal_visibility_hmac_key_arn,
142+
var.temporal_codec_server_shared_secret_arn,
140143
var.oauth_client_id_arn,
141144
var.oauth_client_secret_arn,
142145
var.oidc_client_id_arn,

deployments/fargate/modules/ecs/locals.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ locals {
4242
TRACECAT__EE_MULTI_TENANT = var.ee_multi_tenant
4343
TRACECAT__CONTEXT_COMPRESSION_ENABLED = var.context_compression_enabled
4444
TRACECAT__CONTEXT_COMPRESSION_THRESHOLD_KB = var.context_compression_threshold_kb
45+
TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED = var.temporal_payload_encryption_enabled
46+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION = var.temporal_payload_encryption_key_version
47+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS = var.temporal_payload_encryption_cache_ttl_seconds
48+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS = var.temporal_payload_encryption_cache_max_items
4549
TRACECAT__RESULT_EXTERNALIZATION_ENABLED = var.result_externalization_enabled
4650
TRACECAT__COLLECTION_MANIFESTS_ENABLED = var.collection_manifests_enabled
4751
TRACECAT__RESULT_EXTERNALIZATION_THRESHOLD_BYTES = var.result_externalization_threshold_bytes

deployments/fargate/modules/ecs/secrets.tf

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
# Optional secrets:
77
# 1. OAUTH_CLIENT_ID (legacy OIDC alias)
88
# 2. OAUTH_CLIENT_SECRET (legacy OIDC alias)
9+
# 3. TEMPORAL__PAYLOAD_ENCRYPTION_KEY
10+
# 4. TEMPORAL__VISIBILITY_HMAC_KEY
11+
# 5. TEMPORAL__CODEC_SERVER_SHARED_SECRET
912

1013
### Required secrets
1114
data "aws_secretsmanager_secret" "tracecat_db_encryption_key" {
@@ -44,6 +47,21 @@ data "aws_secretsmanager_secret" "oidc_client_secret" {
4447
arn = var.oidc_client_secret_arn
4548
}
4649

50+
data "aws_secretsmanager_secret" "temporal_payload_encryption_key" {
51+
count = var.temporal_payload_encryption_key_arn != null ? 1 : 0
52+
arn = var.temporal_payload_encryption_key_arn
53+
}
54+
55+
data "aws_secretsmanager_secret" "temporal_visibility_hmac_key" {
56+
count = var.temporal_visibility_hmac_key_arn != null ? 1 : 0
57+
arn = var.temporal_visibility_hmac_key_arn
58+
}
59+
60+
data "aws_secretsmanager_secret" "temporal_codec_server_shared_secret" {
61+
count = var.temporal_codec_server_shared_secret_arn != null ? 1 : 0
62+
arn = var.temporal_codec_server_shared_secret_arn
63+
}
64+
4765
data "aws_secretsmanager_secret" "user_auth_secret" {
4866
count = var.user_auth_secret_arn != null ? 1 : 0
4967
arn = var.user_auth_secret_arn
@@ -117,6 +135,21 @@ data "aws_secretsmanager_secret_version" "oidc_client_secret" {
117135
secret_id = data.aws_secretsmanager_secret.oidc_client_secret[0].id
118136
}
119137

138+
data "aws_secretsmanager_secret_version" "temporal_payload_encryption_key" {
139+
count = var.temporal_payload_encryption_key_arn != null ? 1 : 0
140+
secret_id = data.aws_secretsmanager_secret.temporal_payload_encryption_key[0].id
141+
}
142+
143+
data "aws_secretsmanager_secret_version" "temporal_visibility_hmac_key" {
144+
count = var.temporal_visibility_hmac_key_arn != null ? 1 : 0
145+
secret_id = data.aws_secretsmanager_secret.temporal_visibility_hmac_key[0].id
146+
}
147+
148+
data "aws_secretsmanager_secret_version" "temporal_codec_server_shared_secret" {
149+
count = var.temporal_codec_server_shared_secret_arn != null ? 1 : 0
150+
secret_id = data.aws_secretsmanager_secret.temporal_codec_server_shared_secret[0].id
151+
}
152+
120153
data "aws_secretsmanager_secret_version" "user_auth_secret" {
121154
count = var.user_auth_secret_arn != null ? 1 : 0
122155
secret_id = data.aws_secretsmanager_secret.user_auth_secret[0].id
@@ -203,9 +236,33 @@ locals {
203236
}
204237
] : []
205238

239+
temporal_payload_encryption_secret = var.temporal_payload_encryption_key_arn != null ? [
240+
{
241+
name = "TEMPORAL__PAYLOAD_ENCRYPTION_KEY"
242+
valueFrom = data.aws_secretsmanager_secret_version.temporal_payload_encryption_key[0].arn
243+
}
244+
] : []
245+
246+
temporal_visibility_hmac_secret = var.temporal_visibility_hmac_key_arn != null ? [
247+
{
248+
name = "TEMPORAL__VISIBILITY_HMAC_KEY"
249+
valueFrom = data.aws_secretsmanager_secret_version.temporal_visibility_hmac_key[0].arn
250+
}
251+
] : []
252+
253+
temporal_codec_server_shared_secret = var.temporal_codec_server_shared_secret_arn != null ? [
254+
{
255+
name = "TEMPORAL__CODEC_SERVER_SHARED_SECRET"
256+
valueFrom = data.aws_secretsmanager_secret_version.temporal_codec_server_shared_secret[0].arn
257+
}
258+
] : []
259+
206260
tracecat_base_secrets = concat(
207261
local.required_tracecat_base_secrets,
208-
local.temporal_api_key_secret
262+
local.temporal_api_key_secret,
263+
local.temporal_payload_encryption_secret,
264+
local.temporal_visibility_hmac_secret,
265+
local.temporal_codec_server_shared_secret
209266
)
210267

211268
oauth_client_id_secret = var.oauth_client_id_arn != null ? [

deployments/fargate/modules/ecs/variables.tf

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,30 @@ variable "context_compression_threshold_kb" {
286286
default = 16
287287
}
288288

289+
variable "temporal_payload_encryption_enabled" {
290+
type = bool
291+
description = "Enable application-layer encryption for Temporal payloads"
292+
default = false
293+
}
294+
295+
variable "temporal_payload_encryption_key_version" {
296+
type = string
297+
description = "Current Temporal payload encryption key version"
298+
default = "1"
299+
}
300+
301+
variable "temporal_payload_encryption_cache_ttl_seconds" {
302+
type = number
303+
description = "In-memory cache TTL in seconds for resolved Temporal encryption keys"
304+
default = 3600
305+
}
306+
307+
variable "temporal_payload_encryption_cache_max_items" {
308+
type = number
309+
description = "Maximum number of cached Temporal encryption keys"
310+
default = 128
311+
}
312+
289313
### Secret ARNs
290314

291315
variable "tracecat_db_encryption_key_arn" {
@@ -303,6 +327,24 @@ variable "tracecat_signing_secret_arn" {
303327
description = "The ARN of the secret containing the Tracecat signing secret"
304328
}
305329

330+
variable "temporal_payload_encryption_key_arn" {
331+
type = string
332+
description = "The ARN of the secret containing the Temporal payload encryption root key"
333+
default = null
334+
}
335+
336+
variable "temporal_visibility_hmac_key_arn" {
337+
type = string
338+
description = "The ARN of the secret containing the Temporal visibility HMAC key"
339+
default = null
340+
}
341+
342+
variable "temporal_codec_server_shared_secret_arn" {
343+
type = string
344+
description = "The ARN of the secret containing the Temporal codec server shared secret"
345+
default = null
346+
}
347+
306348
variable "oauth_client_id_arn" {
307349
type = string
308350
description = "The ARN of the secret containing the OAuth client ID (optional)"

deployments/fargate/variables.tf

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,30 @@ variable "context_compression_threshold_kb" {
240240
default = 16
241241
}
242242

243+
variable "temporal_payload_encryption_enabled" {
244+
type = bool
245+
description = "Enable application-layer encryption for Temporal payloads"
246+
default = false
247+
}
248+
249+
variable "temporal_payload_encryption_key_version" {
250+
type = string
251+
description = "Current Temporal payload encryption key version"
252+
default = "1"
253+
}
254+
255+
variable "temporal_payload_encryption_cache_ttl_seconds" {
256+
type = number
257+
description = "In-memory cache TTL in seconds for resolved Temporal encryption keys"
258+
default = 3600
259+
}
260+
261+
variable "temporal_payload_encryption_cache_max_items" {
262+
type = number
263+
description = "Maximum number of cached Temporal encryption keys"
264+
default = 128
265+
}
266+
243267
### Secret ARNs
244268

245269
variable "tracecat_db_encryption_key_arn" {
@@ -257,6 +281,24 @@ variable "tracecat_signing_secret_arn" {
257281
description = "The ARN of the secret containing the Tracecat signing secret"
258282
}
259283

284+
variable "temporal_payload_encryption_key_arn" {
285+
type = string
286+
description = "The ARN of the secret containing the Temporal payload encryption root key"
287+
default = null
288+
}
289+
290+
variable "temporal_visibility_hmac_key_arn" {
291+
type = string
292+
description = "The ARN of the secret containing the Temporal visibility HMAC key"
293+
default = null
294+
}
295+
296+
variable "temporal_codec_server_shared_secret_arn" {
297+
type = string
298+
description = "The ARN of the secret containing the Temporal codec server shared secret"
299+
default = null
300+
}
301+
260302
variable "oauth_client_id_arn" {
261303
type = string
262304
description = "The ARN of the secret containing the OAuth client ID (optional)"

docker-compose.dev.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ services:
6060
TEMPORAL__CLUSTER_QUEUE: ${TEMPORAL__CLUSTER_QUEUE}
6161
TEMPORAL__CLUSTER_NAMESPACE: ${TEMPORAL__CLUSTER_NAMESPACE}
6262
TEMPORAL__API_KEY: ${TEMPORAL__API_KEY}
63+
TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED: ${TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED:-false}
64+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY:-}
65+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN:-}
66+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION:-1}
67+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS:-3600}
68+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS:-128}
69+
TEMPORAL__VISIBILITY_HMAC_KEY: ${TEMPORAL__VISIBILITY_HMAC_KEY:-}
70+
TEMPORAL__VISIBILITY_HMAC_KEY__ARN: ${TEMPORAL__VISIBILITY_HMAC_KEY__ARN:-}
71+
TEMPORAL__CODEC_SERVER_SHARED_SECRET: ${TEMPORAL__CODEC_SERVER_SHARED_SECRET:-}
6372
# Blob Storage
6473
TRACECAT__BLOB_STORAGE_ENDPOINT: http://minio:9000
6574
TRACECAT__BLOB_STORAGE_PRESIGNED_URL_ENDPOINT: ${TRACECAT__PUBLIC_APP_URL}/s3
@@ -124,6 +133,15 @@ services:
124133
TEMPORAL__CLUSTER_QUEUE: ${TEMPORAL__CLUSTER_QUEUE}
125134
TEMPORAL__CLUSTER_NAMESPACE: ${TEMPORAL__CLUSTER_NAMESPACE}
126135
TEMPORAL__API_KEY: ${TEMPORAL__API_KEY}
136+
TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED: ${TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED:-false}
137+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY:-}
138+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN:-}
139+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION:-1}
140+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS:-3600}
141+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS:-128}
142+
TEMPORAL__VISIBILITY_HMAC_KEY: ${TEMPORAL__VISIBILITY_HMAC_KEY:-}
143+
TEMPORAL__VISIBILITY_HMAC_KEY__ARN: ${TEMPORAL__VISIBILITY_HMAC_KEY__ARN:-}
144+
TEMPORAL__CODEC_SERVER_SHARED_SECRET: ${TEMPORAL__CODEC_SERVER_SHARED_SECRET:-}
127145
# Local registry
128146
TRACECAT__LOCAL_REPOSITORY_PATH: ${TRACECAT__LOCAL_REPOSITORY_PATH}
129147
TRACECAT__LOCAL_REPOSITORY_ENABLED: ${TRACECAT__LOCAL_REPOSITORY_ENABLED}
@@ -200,6 +218,15 @@ services:
200218
TEMPORAL__CLUSTER_URL: ${TEMPORAL__CLUSTER_URL}
201219
TEMPORAL__CLUSTER_NAMESPACE: ${TEMPORAL__CLUSTER_NAMESPACE}
202220
TEMPORAL__API_KEY: ${TEMPORAL__API_KEY}
221+
TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED: ${TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED:-false}
222+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY:-}
223+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN:-}
224+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION:-1}
225+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS:-3600}
226+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS:-128}
227+
TEMPORAL__VISIBILITY_HMAC_KEY: ${TEMPORAL__VISIBILITY_HMAC_KEY:-}
228+
TEMPORAL__VISIBILITY_HMAC_KEY__ARN: ${TEMPORAL__VISIBILITY_HMAC_KEY__ARN:-}
229+
TEMPORAL__CODEC_SERVER_SHARED_SECRET: ${TEMPORAL__CODEC_SERVER_SHARED_SECRET:-}
203230
# Executor worker configuration
204231
TRACECAT__EXECUTOR_QUEUE: ${TRACECAT__EXECUTOR_QUEUE:-shared-action-queue}
205232
# Pool size auto-scales based on available CPUs if not set
@@ -276,6 +303,15 @@ services:
276303
TEMPORAL__CLUSTER_URL: ${TEMPORAL__CLUSTER_URL}
277304
TEMPORAL__CLUSTER_NAMESPACE: ${TEMPORAL__CLUSTER_NAMESPACE}
278305
TEMPORAL__API_KEY: ${TEMPORAL__API_KEY}
306+
TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED: ${TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED:-false}
307+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY:-}
308+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN:-}
309+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION:-1}
310+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS:-3600}
311+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS:-128}
312+
TEMPORAL__VISIBILITY_HMAC_KEY: ${TEMPORAL__VISIBILITY_HMAC_KEY:-}
313+
TEMPORAL__VISIBILITY_HMAC_KEY__ARN: ${TEMPORAL__VISIBILITY_HMAC_KEY__ARN:-}
314+
TEMPORAL__CODEC_SERVER_SHARED_SECRET: ${TEMPORAL__CODEC_SERVER_SHARED_SECRET:-}
279315
# Agent Worker configuration
280316
TRACECAT__AGENT_QUEUE: ${TRACECAT__AGENT_QUEUE:-shared-agent-queue}
281317
TRACECAT__LLM_PROXY_READ_TIMEOUT: ${TRACECAT__LLM_PROXY_READ_TIMEOUT:-300}
@@ -339,6 +375,15 @@ services:
339375
TEMPORAL__CLUSTER_QUEUE: ${TEMPORAL__CLUSTER_QUEUE}
340376
TEMPORAL__CLUSTER_NAMESPACE: ${TEMPORAL__CLUSTER_NAMESPACE}
341377
TEMPORAL__API_KEY: ${TEMPORAL__API_KEY}
378+
TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED: ${TEMPORAL__PAYLOAD_ENCRYPTION_ENABLED:-false}
379+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY:-}
380+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY__ARN:-}
381+
TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION: ${TEMPORAL__PAYLOAD_ENCRYPTION_KEY_VERSION:-1}
382+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_TTL_SECONDS:-3600}
383+
TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS: ${TEMPORAL__PAYLOAD_ENCRYPTION_CACHE_MAX_ITEMS:-128}
384+
TEMPORAL__VISIBILITY_HMAC_KEY: ${TEMPORAL__VISIBILITY_HMAC_KEY:-}
385+
TEMPORAL__VISIBILITY_HMAC_KEY__ARN: ${TEMPORAL__VISIBILITY_HMAC_KEY__ARN:-}
386+
TEMPORAL__CODEC_SERVER_SHARED_SECRET: ${TEMPORAL__CODEC_SERVER_SHARED_SECRET:-}
342387
volumes:
343388
- ./tracecat:/app/tracecat
344389
- ./packages:/app/packages

0 commit comments

Comments
 (0)