Skip to main content

Overview

OpenSRE queries Temporal’s HTTP API to retrieve workflow executions, event history, task queue health, and namespace-level metrics — helping diagnose workflow failures, activity retries, and worker outages.
OpenSRE connects to Temporal’s HTTP API (the /api/v1/... REST interface served by the frontend service). This is a self-hosted server feature, enabled with the --http-port flag (dev server) or frontend.httpPort config.Temporal Cloud is not currently supported: Cloud exposes only gRPC/mTLS endpoints for workflow data and an HTTP Ops API for control-plane management — neither is the frontend HTTP API this integration uses. Point OpenSRE at a self-hosted Temporal deployment.

Prerequisites

  • A self-hosted Temporal Server with the HTTP API enabled
  • The HTTP API base URL (and an API key only if your deployment requires bearer auth)
Port 7233 is the gRPC frontend port and will not work as base_url — the HTTP API listens on a separate port. On the dev server it is set with --http-port (it otherwise defaults to a random free port). The examples below use 7243.

Setup

Option 1: Interactive CLI

Prompts for HTTP API base URL, namespace, and optional API key.

Option 2: Environment variables

Option 3: Persistent store

Credentials

Set base_url / TEMPORAL_API_URL to the frontend’s HTTP API endpoint. Leave api_key empty for unauthenticated clusters.

Quick local test with Docker

Confirm the HTTP API answers:
Verify:
A fresh namespace has no workflows, and temporal_namespace_info’s workflow_count: "0" on its own isn’t useful evidence. Run a real, deliberately failing workflow first:
opensre investigate only treats an integration as active once the store resolution has something to fall through to env vars with — an untouched ~/.opensre/integrations.json with an unrelated integration in it blocks env-var fallback entirely. Point OPENSRE_INTEGRATIONS_STORE_PATH at an empty, valid store instead, so your real config is never read or written and TEMPORAL_API_URL above is the only source of connection info:
A literal zero-byte file does not work here — the store loader expects valid JSON and raises on an empty read, so this writes an explicitly empty (but valid) store rather than just creating the file with mktemp alone. Trigger a real investigation — this is the actual supported entrypoint, not an internal class:
Real output from a run against this exact local workflow (edited for length). An empty store makes opensre investigate fall through to env-var resolution for every integration, not just Temporal — if your shell or machine already resolves another integration from its own env vars, it rides along too (harmless, and unrelated to the Temporal tool calls below):
All 4 registered tools were exercised in this single turn. Teardown:

Investigation tools

Typical investigation flow

  1. Namespace info — how many workflows are running vs failed?
  2. Workflows — filter to failed/timed-out executions; note workflow type and task queue
  3. Workflow history — which activity failed and why?
  4. Task queue — are workers polling? Is backlog growing?

Verify

Verify probes GET /api/v1/namespaces/{namespace}.

Troubleshooting

Security

  • Use a read-only API key where your deployment supports scoped auth — OpenSRE never writes to Temporal.
  • Restrict network access to the HTTP API to trusted IPs.
  • Store credentials in ~/.opensre/integrations.json or environment variables, not in source code.