Skip to content

feat: add support for external temporal#379

Open
schitizsharma wants to merge 3 commits into
stagingfrom
feat/external-temporal
Open

feat: add support for external temporal#379
schitizsharma wants to merge 3 commits into
stagingfrom
feat/external-temporal

Conversation

@schitizsharma
Copy link
Copy Markdown
Collaborator

@schitizsharma schitizsharma commented May 18, 2026

Description

Adds support for external Temporal in the olake-ui server, mirroring the implementation in olake-helm. Previously the server only supported bundled Temporal with a hardcoded task queue. This change enables three deployment modes driven entirely by environment variables:

  • Default: TEMPORAL_EXTERNAL=false — no change in behavior, connects to the bundled Temporal service at TEMPORAL_ADDRESS using OLAKE_DOCKER_TASK_QUEUE
  • External self-managed: TEMPORAL_EXTERNAL=true, TEMPORAL_API_KEY unset — connects to a user-managed Temporal cluster with configurable namespace and task queue
  • Temporal Cloud: TEMPORAL_EXTERNAL=true, TEMPORAL_API_KEY set — connects to Temporal Cloud with TLS and API key credentials

Fixes # (issue)

Type of change

  • New feature (non-breaking change which adds functionality)

How Has This Been Tested?

  • Default: Start with default config (TEMPORAL_EXTERNAL unset), verify server connects to bundled Temporal and workflows execute normally on OLAKE_DOCKER_TASK_QUEUE
  • External self-managed: Set TEMPORAL_EXTERNAL=true, TEMPORAL_ADDRESS=<host:port>, TEMPORAL_NAMESPACE=<ns>, TEMPORAL_TASK_QUEUE=<queue> — verify server connects to external
    cluster and dispatches workflows to the correct queue
  • Temporal Cloud: Set TEMPORAL_EXTERNAL=true, TEMPORAL_API_KEY=<key>, TEMPORAL_ENABLE_TLS=true, TEMPORAL_NAMESPACE=<ns>, TEMPORAL_TASK_QUEUE=<queue> — verify TLS + API key
    credentials are injected and connection succeeds
  • Backward compatibility with current latest release of olake-ui

Screenshots or Recordings

Related PR's (If Any):

  • olake-helm: feat/worker-external-temporal (worker-side implementation this aligns with)

@schitizsharma schitizsharma changed the base branch from master to staging May 19, 2026 06:20
@schitizsharma schitizsharma marked this pull request as ready for review May 22, 2026 05:40

if cfg.TemporalEnableTLS {
clientOptions.ConnectionOptions = client.ConnectionOptions{
TLS: &tls.Config{}, // #nosec G402 -- Temporal SDK handles TLS negotiation internally
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we force a min version here, instead of supressing it.

Anyways all lower versions are deprecated and has vulnerabilities: https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls?tabs=47-plus%2Chttpclient-sslstream#what-is-transport-layer-security-tls

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TLS is handled by the temporal SDK itself, point is that if Temporal decides to move forward to a newer TLS version the client's environment may break.
We will just simply let Temporal SDK handle it internally.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But we can mention the minVersion, and if temporal bumps the minversion up it will not affect the environment (that happens in case of MaxVersion).

So if we set, we can remove the suppression as well.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I will update it on both olake-ui and olake-helm PRs

Comment thread server/internal/services/temporal/client.go
Comment thread server/conf/app.yaml
Comment on lines +28 to +32
TEMPORAL_NAMESPACE: default
TEMPORAL_ENABLE_TLS: false
TEMPORAL_API_KEY: ""
TEMPORAL_EXTERNAL: false
TEMPORAL_TASK_QUEUE: ""
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should we added to docker-compose-v1 in the shared envs so that it is read by both bff and worker

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point! Let's add them when this PR is ready for merge.
Keep this comment open and only resolve it once the docker-compose-v1 side implementation done.

@schitizsharma schitizsharma force-pushed the feat/external-temporal branch from e70aae4 to 9c47dbe Compare May 26, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants