Skip to content

Add multi-region support for Robusta platform endpoints - #2094

Merged
moshemorad merged 6 commits into
masterfrom
claude/clever-tesla-w5YiK
May 26, 2026
Merged

moshemorad merged 6 commits into
masterfrom
claude/clever-tesla-w5YiK

Conversation

@moshemorad

@moshemorad moshemorad commented May 26, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This PR adds comprehensive multi-region support for the Robusta platform, allowing users to configure HolmesGPT for US, EU, and AP regions. The changes include new configuration guidance, updated environment variable documentation, and region-specific endpoint URLs across all relevant documentation.

Key Changes

  • New "Selecting a Region" section in Robusta AI provider docs with tabbed configuration examples for US, EU, and AP regions
  • Updated "How It Works" section to document that model discovery and proxy access endpoints now use the configurable ROBUSTA_API_ENDPOINT variable
  • Enhanced troubleshooting guidance to include region-specific endpoint validation and the importance of matching ROBUSTA_API_ENDPOINT to the user's account region
  • Expanded environment variables documentation with clearer description of ROBUSTA_API_ENDPOINT and region-specific values
  • Multi-region support in LiteLLM configuration (LITELLM_MODEL_COST_MAP_URL) with tabbed examples for each region
  • Region-specific OAuth redirect URIs for Azure AD authentication in Kubernetes MCP toolset
  • Region-specific platform URLs for:
    • Coralogix logs configuration (platform setup)
    • UI installation signup flow

Implementation Details

  • All region-specific URLs follow the pattern: https://api[.region].robusta.dev for API endpoints and https://platform[.region].robusta.dev for UI
  • Documentation uses MkDocs tabbed interface (=== "Region") for clean, organized presentation of region options
  • Default behavior remains unchanged (US region) for backwards compatibility
  • Added clear warnings about endpoint/region mismatch causing authentication and model-discovery failures

https://claude.ai/code/session_01RueKk3pFhbXqTqyM8EKKjZ

Summary by CodeRabbit

  • Documentation
    • Added region-specific API endpoint guidance (US/EU/AP) for Robusta configuration
    • Updated signup and installation flows with region selectors for easier onboarding
    • Enhanced integration setup with region-matching callback URLs
    • Improved troubleshooting and environment-variable guidance for regional deployments
    • Introduced a region-tabs rendering block for US/EU/AP links/examples and guidance for authors to use it

Review Change Stack

claude added 2 commits May 26, 2026 10:11
Mirror the region-picker pattern from
robusta-dev/robusta@1f927f1 by documenting the regional URL variants
wherever the HolmesGPT docs reference platform.robusta.dev or
api.robusta.dev. MkDocs has no equivalent of Robusta's Sphinx region
picker, so each affected page now carries an inline US/EU/AP table —
matching the existing pattern in docs/data-sources/oauth-mcp-servers.md.

Updated pages:
- ai-providers/robusta-ai.md: new "Selecting a Region" section,
  templated ${ROBUSTA_API_ENDPOINT} in How It Works, region-aware
  Troubleshooting and ROBUSTA_API_ENDPOINT env var description
- installation/ui-installation.md: regional sign-up URLs
- reference/environment-variables.md: regional LITELLM_MODEL_COST_MAP_URL
  mirrors
- data-sources/builtin-toolsets/coralogix-logs.md: regional platform URLs
  for AI Customization
- data-sources/builtin-toolsets/kubernetes-mcp.md: regional Entra ID
  OAuth redirect URIs

Signed-off-by: Claude <noreply@anthropic.com>
Use MkDocs Material content tabs (=== "US" / "EU" / "AP") instead of
static markdown tables for region selection. With content.tabs.link
already enabled in mkdocs.yml, Material renders these as a horizontal
segmented control and persists the choice across pages via
localStorage — the MkDocs-native equivalent of the JS region picker
from robusta-dev/robusta@1f927f1.

Affects the same five pages as the previous commit: robusta-ai.md,
ui-installation.md, environment-variables.md, coralogix-logs.md,
kubernetes-mcp.md.

Signed-off-by: Claude <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@coderabbitai

coderabbitai Bot commented May 26, 2026 •

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8dc255a6-6f5e-4ca0-b41a-65dfb4e91f7b

📥 Commits

Reviewing files that changed from the base of the PR and between dd5f373 and 4c30268.

📒 Files selected for processing (1)
  • CLAUDE.md

Walkthrough

Adds a MkDocs custom fence (robusta-region) that renders region-specific (US/EU/AP) Robusta links/snippets, and updates docs and mkdocs.yml to use region-based API endpoints, signup/platform links, callback URIs, and mirror URLs with matching troubleshooting and environment-variable entries.

Changes

Region-specific Robusta configuration documentation

Layer / File(s) Summary
Custom fence implementation
docs/custom_fences.py
Adds ROBUSTA_REGIONS, ROBUSTA_DOMAIN_RE, MARKDOWN_LINK_RE, _rewrite_robusta_domain, and robusta_region_fence_format to rewrite Robusta domains and render per-region tabs with links or code blocks.
Robusta AI provider configuration and troubleshooting
docs/ai-providers/robusta-ai.md
Adds "Selecting a Region"; updates "How It Works" to reference ${ROBUSTA_API_ENDPOINT} for model discovery and proxy access; extends troubleshooting and environment-variable table to list regional ROBUSTA_API_ENDPOINT values and on‑prem guidance.
Region-specific Robusta access across integration flows
docs/installation/ui-installation.md, docs/data-sources/builtin-toolsets/coralogix-logs.md, docs/data-sources/builtin-toolsets/kubernetes-mcp.md
Replaces single hardcoded signup/platform links and redirect URIs with robusta-region fenced blocks that present US/EU/AP region options (signup link, platform link, and Azure AD callback URIs).
Region-specific mirror URL reference and Helm examples
docs/reference/environment-variables.md
Reworks LITELLM_MODEL_COST_MAP_URL documentation to present region-matched Robusta mirror URLs and updates the Helm additionalEnvVars example accordingly.
MkDocs wiring for custom fence
mkdocs.yml
Registers the robusta-region superfence formatter (docs.custom_fences.robusta_region_fence_format) in markdown_extensions.
Contributor guidance
CLAUDE.md
Adds instructions to wrap api.robusta.dev / platform.robusta.dev references in the robusta-region fence and documents supported input shapes and authoring rules.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • RoiGlinik
  • pavangudiwada
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main objective of the PR: adding multi-region support for Robusta platform endpoints across documentation and code.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@netlify

netlify Bot commented May 26, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for holmes-docs ready!

Name Link
🔨 Latest commit a84e1bb
🔍 Latest deploy log https://app.netlify.com/projects/holmes-docs/deploys/6a158e62a1e7f40007835ca7
😎 Deploy Preview https://deploy-preview-2094--holmes-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Replace the duplicated `=== "US" / "EU" / "AP"` tab blocks across 5 docs
with a single custom Markdown fence. The fence takes a US URL as input,
auto-rewrites `api.robusta.dev` and `platform.robusta.dev` to the
regional subdomain per tab, and renders one of three shapes:

- Plain code (default): URLs, redirect URIs, mirror addresses
- Markdown link via `[text](url)`: clickable platform links
- YAML config via `{lang=yaml}`: helm values blocks

Authoring goes from 15-25 lines of tab boilerplate per usage to 3-5
lines. Adding AP-equivalent or future regions only touches the fence's
`ROBUSTA_REGIONS` tuple, not every doc.

Mirrors the spirit of robusta-dev/robusta@1f927f1 — single source of
truth for the region URL pattern, rendered with the existing MkDocs
Material content-tabs primitive and Material's content.tabs.link
persistence.

Signed-off-by: Claude <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
docs/custom_fences.py (1)

139-217: ⚡ Quick win

Add type hints to function signature.

Type hints are required per coding guidelines. The function signature should include parameter types and return type annotation.

📝 Proposed fix
-def robusta_region_fence_format(source, language, css_class, options, md, **kwargs):
+def robusta_region_fence_format(
+    source: str,
+    language: str,
+    css_class: str,
+    options: dict | None,
+    md,
+    **kwargs
+) -> str:

Note: The md parameter type depends on the MkDocs API (likely a Markdown instance); you may need to import the appropriate type or use Any if the exact type isn't readily available.

As per coding guidelines: Type hints are required in Python files; mypy configuration is in pyproject.toml

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/custom_fences.py` around lines 139 - 217, The function
robusta_region_fence_format is missing type hints; update its signature to
include parameter and return types (e.g., source: str, language: str, css_class:
str, options: Optional[Mapping[str, Any]] = None, md: Any, **kwargs: Any) and
annotate the return as -> str; add the necessary typing imports (Any, Optional,
Mapping) at the top of the file or use Any for uncertain types like md and
kwargs so mypy passes while preserving the existing behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/custom_fences.py`:
- Around line 139-217: The function robusta_region_fence_format is missing type
hints; update its signature to include parameter and return types (e.g., source:
str, language: str, css_class: str, options: Optional[Mapping[str, Any]] = None,
md: Any, **kwargs: Any) and annotate the return as -> str; add the necessary
typing imports (Any, Optional, Mapping) at the top of the file or use Any for
uncertain types like md and kwargs so mypy passes while preserving the existing
behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0d77ebc3-28b8-4fa4-b2d3-f31c5d3d6a7a

📥 Commits

Reviewing files that changed from the base of the PR and between a5b3a90 and fdaceac.

📒 Files selected for processing (7)
  • docs/ai-providers/robusta-ai.md
  • docs/custom_fences.py
  • docs/data-sources/builtin-toolsets/coralogix-logs.md
  • docs/data-sources/builtin-toolsets/kubernetes-mcp.md
  • docs/installation/ui-installation.md
  • docs/reference/environment-variables.md
  • mkdocs.yml
✅ Files skipped from review due to trivial changes (2)
  • docs/reference/environment-variables.md
  • docs/ai-providers/robusta-ai.md

Add a section to CLAUDE.md telling future contributors / AI to use the
robusta-region custom fence whenever they reference api.robusta.dev or
platform.robusta.dev in a docs page, instead of hardcoding a US URL.
Documents the three input shapes (plain code, markdown link, YAML with
lang attr) and points at the existing usages as greppable examples.

Signed-off-by: Claude <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CLAUDE.md`:
- Around line 678-685: The outer fence around the YAML example uses five
backticks while the inner fenced block uses three (```robusta-region
{lang=yaml}), causing inconsistent nesting; replace the five-backtick outer
fence with four backticks so the outer fence is N+1 (4) for the inner 3-backtick
block—i.e., locate the block starting with the ```robusta-region {lang=yaml}
fence and change the surrounding outer backtick markers from ````` to ````.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a31c0884-edd7-4f6f-b899-48b94a1ae071

📥 Commits

Reviewing files that changed from the base of the PR and between fdaceac and dd5f373.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment thread CLAUDE.md Outdated
The third robusta-region example was using a 5-backtick outer fence
while the two earlier examples on the same page used 4-backtick outer
fences around a 3-backtick inner block. 5 backticks still rendered
correctly (CommonMark only requires outer > inner) but the
inconsistency was confusing. Drop to 4 backticks to match the
surrounding examples.

Signed-off-by: Claude <noreply@anthropic.com>
@moshemorad moshemorad closed this May 26, 2026
@moshemorad moshemorad reopened this May 26, 2026
Signed-off-by: Claude <noreply@anthropic.com>
@moshemorad moshemorad closed this May 26, 2026
@moshemorad moshemorad reopened this May 26, 2026
@moshemorad
moshemorad merged commit 0944fba into master May 26, 2026
17 of 22 checks passed
@moshemorad
moshemorad deleted the claude/clever-tesla-w5YiK branch May 26, 2026 13:37
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.

3 participants