Skip to main content
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 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, app/tools/DataDogLogsTool/__init__.py, app/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 improved gating (author: vincenthus; contributors: vincenthus; labels: none; files: app/tools/TracerFailedRunTool/__init__.py, app/tools/TracerRunTool/__init__.py, app/tools/TracerTasksTool/__init__.py)
  • #242 chore: release (author: Vaibhav Upreti; contributors: Vaibhav Upreti; labels: none; files: .github/workflows/release.yml)
  • #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 Improve CLI error message for unknown test id (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: none; files: app/cli/__main__.py)
  • #249 simplified JSON output handling in CLI helper (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: none; files: app/cli/args.py)
  • #253 remove unused sys import to pass lint (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: none; files: app/cli/args.py)
  • #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 resolve lint issue (remove whitespace) (author: Ceren Camkiran; contributors: Ceren Camkiran and Tan Wee Joe; labels: none; files: app/cli/investigate.py)
  • #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, app/config.py, app/integrations/clients/llm_client.py)
  • #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, app/tools/utils/data_validation.py, pyproject.toml, tests/nodes/test_chat.py)
  • #246 Removed outbound_telemetry directory after moving files to utils (author: edgarmb14; contributors: edgarmb14; labels: none; files: app/outbound_telemetry/__init__.py, app/utils/__init__.py, app/utils/config.py, app/utils/config_test.py)
  • #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, app/utils/cfg_helpers.py, app/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 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, app/config.py, app/config_test.py, app/integrations/clients/datadog/client.py, app/integrations/clients/grafana/config.py, and 15 more)
  • #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 Refactor repeated string-list validation in synthetic schemas (author: Ceren Camkiran; contributors: Ceren Camkiran; labels: none; files: tests/synthetic/schemas.py)
  • #280 fix: disable analytics in CI pipelines (author: vincenthus; contributors: vincenthus; labels: none; files: app/analytics/provider.py, app/analytics/provider_test.py)
  • #281 docs: refresh OpenSRE positioning in README (author: vincenthus; contributors: vincenthus; labels: none; files: README.md)
  • #282 Add .editorconfig and clean up tooling config (author: Ebrahim Sameh; contributors: Ebrahim Sameh; labels: none; files: .editorconfig, .gitignore, mypy.ini)
  • #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 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 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