> ## Documentation Index
> Fetch the complete documentation index at: https://opensre.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Daily Update — 2026-04-02

> OpenSRE engineering daily update for 2026-04-02 (Europe/London)

Thanks to everyone who contributed today: Ceren Camkiran, Ebrahim Sameh, edgarmb14, Kalio, Luke Gimza, Tan Wee Joe, Vaibhav Upreti, and vincenthus 🙏🚀

## Main updates shipped

* Multi-provider LLM support -- added OpenRouter, Gemini, and NVIDIA NIM providers with automatic detection via `LLM_PROVIDER` env var, alongside fixes to make chat nodes (`general_node`, `chat_agent_node`) fully provider-aware for OpenAI and Anthropic with provider-keyed caches and lazy imports.
* Pydantic config rollout -- replaced ad-hoc config handling with a Pydantic-based strict config across the app, touching CLI, integrations, state, and tooling layers.
* Simulation engine overhaul -- large rework of the synthetic test engine (+1470/-735) covering root-cause diagnosis nodes, the mock Grafana backend, and RDS Postgres scenario fixtures including new replication-lag and connection-exhaustion scenarios.
* Expanded RDS Postgres metric fixtures -- split the `000-healthy` CloudWatch metrics pack into per-metric JSON files (CPUUtilization, ReplicaLag, WriteIOPS, etc.) and updated the scenario loader and fixture generator accordingly.
* Grafana local demo moved to wizard CLI -- Grafana stack seeding and live-demo entrypoints now live under `app/cli/wizard/`, Make targets updated, and the obsolete bundled local RCA demo path removed.
* CLI improvements -- better error message for unknown test IDs (hints `opensre tests list`), simplified JSON output handling in `args.py`, and a readability refactor in `investigate.py` with lint fixes.
* Tooling hygiene -- added `.editorconfig` (4-space Python, 100-char line length, matching `ruff.toml`), added `.ruff_cache/` to `.gitignore`, removed unused `mypy.ini` kubernetes stubs, and disabled PostHog analytics firing in CI environments.
* Release workflow & CI -- added `release.yml` GitHub Actions workflow and improved the wizard onboarding flow to avoid re-prompting for provider selection.

## Source pull requests

* [#239](https://github.com/Tracer-Cloud/opensre/pull/239) improved simulation engine (author: vincenthus; contributors: vincenthus; labels: *none*; files: `app/nodes/chat.py`, `app/nodes/root_cause_diagnosis/claim_validator.py`, `app/nodes/root_cause_diagnosis/evidence_checker.py`, `app/nodes/root_cause_diagnosis/prompt_builder.py`, `tools/DataDogLogsTool/__init__.py`, `tools/base.py`, `mypy.ini`, `tests/synthetic/mock_grafana_backend/backend.py`, `tests/synthetic/mock_grafana_backend/formatters.py`, `tests/synthetic/mock_grafana_backend/selective_backend.py`, and 86 more)
* [#240](https://github.com/Tracer-Cloud/opensre/pull/240) improved gating (author: vincenthus; contributors: vincenthus; labels: *none*; files: `tools/TracerFailedRunTool/__init__.py`, `tools/TracerRunTool/__init__.py`, `tools/TracerTasksTool/__init__.py`)
* [#242](https://github.com/Tracer-Cloud/opensre/pull/242) chore: release (author: Vaibhav Upreti; contributors: Vaibhav Upreti; labels: *none*; files: `.github/workflows/release.yml`)
* [#245](https://github.com/Tracer-Cloud/opensre/pull/245) push metrics outpack with expanded data for 000 (author: vincenthus; contributors: vincenthus; labels: *none*; files: `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_BinLogDiskUsage.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_CPUUtilization.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_CommitLatency.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_CommitThroughput.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_DatabaseConnections.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_DiskQueueDepth.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_FreeStorageSpace.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_FreeableMemory.json`, `tests/synthetic/rds_postgres/000-healthy/aws_cloudwatch_metrics_MaximumUsedTransactionIDs.json`, and 14 more)
* [#247](https://github.com/Tracer-Cloud/opensre/pull/247) Improve CLI error message for unknown test id (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: *none*; files: `app/cli/__main__.py`)
* [#249](https://github.com/Tracer-Cloud/opensre/pull/249) simplified JSON output handling in CLI helper (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: *none*; files: `app/cli/args.py`)
* [#253](https://github.com/Tracer-Cloud/opensre/pull/253) remove unused sys import to pass lint (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: *none*; files: `app/cli/args.py`)
* [#248](https://github.com/Tracer-Cloud/opensre/pull/248) Small refactor to improve readability and reduce duplication. No beha… (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: *none*; files: `app/cli/investigate.py`)
* [#252](https://github.com/Tracer-Cloud/opensre/pull/252) resolve lint issue (remove whitespace) (author: Ceren Camkiran; contributors: Ceren Camkiran and Tan Wee Joe; labels: *none*; files: `app/cli/investigate.py`)
* [#233](https://github.com/Tracer-Cloud/opensre/pull/233) feature: Support OpenRouter, Gemini, and NVIDIA LLMs (author: Tan Wee Joe; contributors: Tan Wee Joe; labels: `enhancement`; files: `.env.example`, `SETUP.md`, `app/cli/wizard/config.py`, `app/cli/wizard/flow_test.py`, `app/cli/wizard/validation.py`, `config/config.py`, `app/integrations/clients/llm_client.py`)
* [#241](https://github.com/Tracer-Cloud/opensre/pull/241) fix: use OpenAI in chat when LLM\_PROVIDER=openai (author: Kalio; contributors: Kalio; labels: *none*; files: `app/integrations/clients/aws_sdk_client.py`, `app/nodes/chat.py`, `app/nodes/publish_findings/formatters/evidence.py`, `app/nodes/publish_findings/report_context.py`, `app/nodes/root_cause_diagnosis/prompt_builder.py`, `tools/utils/data_validation.py`, `pyproject.toml`, `tests/nodes/test_chat.py`)
* [#246](https://github.com/Tracer-Cloud/opensre/pull/246) Removed outbound\_telemetry directory after moving files to utils (author: edgarmb14; contributors: edgarmb14; labels: *none*; files: `app/outbound_telemetry/__init__.py`, `utils/__init__.py`, `utils/config.py`, `utils/config_test.py`)
* [#255](https://github.com/Tracer-Cloud/opensre/pull/255) Fixes #214: Make chat provider-aware for OpenAI and Anthropic (author: Luke Gimza; contributors: Luke Gimza and vincenthus; labels: *none*; files: `app/nodes/chat.py`, `utils/cfg_helpers.py`, `utils/config_test.py`, `pyproject.toml`, `tests/conftest.py`, `tests/e2e/grafana_validation/env_requirements.py`, `tests/e2e/grafana_validation/grafana_validation.py`, `tests/e2e/grafana_validation/test_grafana_cloud_push.py`, `tests/e2e/upstream_prefect_ecs_fargate/infrastructure_sdk/deploy.py`, `tests/nodes/test_chat.py`, and 4 more)
* [#276](https://github.com/Tracer-Cloud/opensre/pull/276) implemented pydantic config (author: vincenthus; contributors: vincenthus; labels: *none*; files: `.github/workflows/ci.yml`, `.github/workflows/issue-comment-to-slack.yml`, `Makefile`, `app/cli/investigate.py`, `app/cli/investigate_test.py`, `app/cli/wizard/integration_health.py`, `config/config.py`, `app/config_test.py`, `app/integrations/clients/datadog/client.py`, `app/integrations/clients/grafana/config.py`, and 15 more)
* [#278](https://github.com/Tracer-Cloud/opensre/pull/278) fix: clean up chat model caches (author: vincenthus; contributors: vincenthus; labels: *none*; files: `app/nodes/chat.py`, `app/sentry.py`, `tests/nodes/test_chat.py`, `tests/nodes/test_chat_provider_awareness.py`)
* [#279](https://github.com/Tracer-Cloud/opensre/pull/279) Refactor repeated string-list validation in synthetic schemas (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: *none*; files: `tests/synthetic/schemas.py`)
* [#280](https://github.com/Tracer-Cloud/opensre/pull/280) fix: disable analytics in CI pipelines (author: vincenthus; contributors: vincenthus; labels: *none*; files: `app/analytics/provider.py`, `app/analytics/provider_test.py`)
* [#281](https://github.com/Tracer-Cloud/opensre/pull/281) docs: refresh OpenSRE positioning in README (author: vincenthus; contributors: vincenthus; labels: *none*; files: `README.md`)
* [#282](https://github.com/Tracer-Cloud/opensre/pull/282) Add .editorconfig and clean up tooling config (author: Ebrahim Sameh; contributors: Ebrahim Sameh; labels: *none*; files: `.editorconfig`, `.gitignore`, `mypy.ini`)
* [#251](https://github.com/Tracer-Cloud/opensre/pull/251) Bug: Move local Grafana demo to wizard CLI and update makefile (author: Tan Wee Joe; contributors: Tan Wee Joe and Vaibhav Upreti; labels: `bug`; files: `Makefile`, `SETUP.md`, `app/cli/tests/discover.py`, `app/cli/wizard/flow.py`, `app/cli/wizard/grafana_seed.py`, `docs/local-grafana-live.md`, `docs/local-rca-demo.md`)
* [#283](https://github.com/Tracer-Cloud/opensre/pull/283) chore: improve ci remove space select logic (author: Vaibhav Upreti; contributors: Vaibhav Upreti; labels: *none*; files: `app/cli/wizard/flow.py`, `app/cli/wizard/flow_test.py`, `app/cli/wizard/prompts.py`, `app/cli/wizard/prompts_test.py`)
* [#284](https://github.com/Tracer-Cloud/opensre/pull/284) chore: do not ask for provider again in opensre onboard (author: Vaibhav Upreti; contributors: Vaibhav Upreti; labels: *none*; files: `app/cli/wizard/flow.py`, `app/cli/wizard/flow_test.py`)

## Generation metadata

* Generator version: `opensre 0.1.0`
* Fallback summary used: `no`
* UTC window: `2026-04-01T23:00:00+00:00` to `2026-04-02T23:00:00+00:00`
