Skip to content

feat: Add kubevela to built-in toolsets - #1512

Merged
arikalon1 merged 10 commits into
HolmesGPT:masterfrom
mailprak:feature/kubevela-tool-integration
Feb 14, 2026
Merged

arikalon1 merged 10 commits into
HolmesGPT:masterfrom
mailprak:feature/kubevela-tool-integration

Conversation

@mailprak

@mailprak mailprak commented Feb 6, 2026 •

Copy link
Copy Markdown
Contributor

New Features

Added a KubeVela toolset exposing comprehensive vela CLI commands for application management, component inspection, workflow execution, trait configuration, addon management, and troubleshooting capabilities including status checks, logs, resource usage monitoring, dry-run previews, and live-diff comparisons.

Documentation

Added comprehensive KubeVela documentation (docs/data-sources/builtin-toolsets/kubevela.md) including prerequisites, CLI installation instructions, configuration examples for both Holmes CLI and Robusta Helm Chart deployments, common use cases, and a complete capabilities table listing all available tools. Integrated KubeVela into site navigation (.nav.yml)
and toolset index page.

Tests

Added LLM evaluation test (tests/llm/fixtures/test_ask_holmes/212_kubevela_app_diagnosis/) with complete end-to-end scenario covering KubeVela installation, intentional application deployment failure (bad container image), verification of Holmes's diagnostic capabilities, and proper cleanup procedures. Test includes robust setup verification with retry loops and detailed error reporting.

Summary by CodeRabbit

  • New Features

    • Added KubeVela toolset support for inspecting applications, components, traits, workflows, logs, port-forward info, addons, definitions, resource usage, and diff/dry-run checks.
  • Documentation

    • Added KubeVela integration guide with installation, configuration, usage examples, and a new navigation entry.
  • Tests

    • Added an end-to-end test fixture for KubeVela application diagnosis and a test toolset configuration.

@netlify

netlify Bot commented Feb 6, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for holmes-docs ready!

Name Link
🔨 Latest commit 31e6d10
🔍 Latest deploy log https://app.netlify.com/projects/holmes-docs/deploys/6990406b4dba4400085df653
😎 Deploy Preview https://deploy-preview-1512--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.

@linux-foundation-easycla

linux-foundation-easycla Bot commented Feb 6, 2026 •

Copy link
Copy Markdown

CLA Signed

The committers listed above are authorized under a signed CLA.

  • ✅ login: arikalon1 / name: arik (31e6d10)

@CLAassistant

CLAassistant commented Feb 6, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@coderabbitai

coderabbitai Bot commented Feb 6, 2026 •

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds KubeVela support: documentation and navigation entries, a new kubevela/core toolset definition, and end-to-end test fixtures that deploy a sample KubeVela Application for diagnostic testing.

Changes

Cohort / File(s) Summary
Documentation Navigation
docs/data-sources/builtin-toolsets/.nav.yml, docs/data-sources/builtin-toolsets/index.md
Inserted KubeVela entry into builtin toolsets navigation and index.
Toolset Documentation
docs/data-sources/builtin-toolsets/kubevela.md
Added new KubeVela toolset docs with prerequisites, install/config steps, usage examples, and test commands.
Toolset Definition
holmes/plugins/toolsets/kubevela.yaml
Created kubevela/core toolset: metadata, LLM instructions, prerequisites, and many tools (app/component/trait/workflow inspection, logs, defs, addons, resource usage, dry-run/live-diff). Review LLM instructions and command templates for correctness.
Test Fixtures
tests/llm/fixtures/test_ask_holmes/212_kubevela_app_diagnosis/test_case.yaml, tests/llm/fixtures/test_ask_holmes/212_kubevela_app_diagnosis/toolsets.yaml
Added integration fixture that deploys a KubeVela Application with a broken image and enables kubevela/core and kubernetes/core for diagnostic tests; contains setup/teardown scripts and waits for vela-core readiness.

Sequence Diagram

sequenceDiagram
    actor User
    participant Holmes as Holmes CLI
    participant Toolset as kubevela/core
    participant Vela as vela CLI
    participant K8s as Kubernetes API

    User->>Holmes: ask "diagnose KubeVela app"
    Holmes->>Toolset: select kubevela/core tools per instructions
    Toolset->>Vela: run vela commands (ls / status / show / components / workflows / logs)
    Vela->>K8s: query Application, Components, Pods, Workflows, CRDs
    K8s-->>Vela: resource metadata, statuses, events, logs
    Vela-->>Toolset: aggregated output
    Toolset->>Holmes: structured findings (health, failures, suggested actions)
    Holmes-->>User: diagnosis and recommended actions
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • arikalon1
  • aantn
🚥 Pre-merge checks | ✅ 5 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The linked issue #39 requires updating README.md with more descriptive verbs, but the PR only adds KubeVela toolset documentation without modifying README.md. Either update README.md with more descriptive verbs to address issue #39, or remove the issue link if it was incorrectly associated with this PR.
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title clearly and accurately describes the main change: adding KubeVela as a new built-in toolset.
Out of Scope Changes check ✅ Passed The PR adds documentation and implementation files directly related to KubeVela toolset integration, with no unrelated out-of-scope changes detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into master

✏️ 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.

@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: 4

🤖 Fix all issues with AI agents
In `@docs/data-sources/builtin-toolsets/kubevela.md`:
- Around line 68-89: Remove the entire "## Capabilities" section from the
kubevela.md file: locate the "## Capabilities" heading and delete that heading
plus the following capabilites intro inclusion and the full markdown table
listing vela_app_list, vela_app_status, vela_app_show, vela_logs, vela_exec,
vela_component_list, vela_trait_list, vela_workflow_list, vela_workflow_status,
vela_workflow_logs, vela_addon_list, vela_addon_status, vela_definition_show,
vela_top, vela_dry_run, and vela_live_diff so the document no longer contains a
Capabilities section in accordance with the documentation guideline.

In `@holmes/plugins/toolsets/kubevela.yaml`:
- Around line 48-50: The vela_logs and vela_workflow_logs tool definitions
currently call `vela logs` without a line limit, risking unbounded output;
update the command templates for the "vela_logs" and "vela_workflow_logs"
entries to include a `--tail` limit (either a fixed safe default like `--tail
500` or a templated parameter such as `--tail {{ tail }}`) so returned logs are
capped and adjustable; modify the command strings for the vela_logs and
vela_workflow_logs symbols accordingly.
- Around line 92-94: The tool entry named "vela_top" uses the interactive
command string "vela top {{ app_name }} -n {{ namespace }}" which will hang in
non-interactive runs; replace or remove it. Update the "command" field for the
"vela_top" tool to a non-interactive alternative (for example use "kubectl top
pods --selector=app.kubernetes.io/name={{ app_name }} -n {{ namespace }}" or
"vela status {{ app_name }} -n {{ namespace }}" depending on desired output), or
remove the "vela_top" tool entry entirely if no suitable non-interactive
equivalent exists.
- Around line 44-46: The "vela_app_show" tool currently uses an incorrect
command ("vela show {{ app_name }} -n {{ namespace }}") which shows capability
docs and will fail for app names; update the "command" for the vela_app_show
entry to the correct runtime-inspection command "vela status {{ app_name }} -n
{{ namespace }}" if you want the app runtime status, or replace it with "kubectl
get application {{ app_name }} -n {{ namespace }} -o yaml" if the intent is to
return the application YAML/spec; adjust the "vela_app_show" command string
accordingly.
🧹 Nitpick comments (2)
holmes/plugins/toolsets/kubevela.yaml (1)

56-58: The vela_port_forward tool just echoes a message — consider removing it.

This tool doesn't perform any actual diagnostic action; it only prints a suggestion. An LLM agent calling this tool will get no useful information back. If port-forwarding isn't actionable in this context, remove the tool to avoid wasting a tool-call turn.

Proposed fix
-      - name: "vela_port_forward"
-        description: "Check port-forward capability for debugging (informational only, doesn't create actual port-forward)"
-        command: "echo 'Port-forward available with: vela port-forward {{ app_name }} -n {{ namespace }}{% if port %} {{ port }}{% endif %}'"
-
tests/llm/fixtures/test_ask_holmes/212_kubevela_app_diagnosis/test_case.yaml (1)

120-122: Minor: after_test cleanup uses hardcoded values instead of the variables from before_test.

Lines 121–122 hardcode payment-service and app-212 rather than using variables. This is fine for correctness since after_test runs as a separate shell, but note that if you rename the app or namespace, both blocks need updating.

Comment thread docs/data-sources/builtin-toolsets/kubevela.md Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated

@arikalon1 arikalon1 left a comment

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.

Thanks for the great PR @mailprak

Left a few minor comments

Comment thread docs/data-sources/builtin-toolsets/kubevela.md Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated

@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: 2

🤖 Fix all issues with AI agents
In `@holmes/plugins/toolsets/kubevela.yaml`:
- Around line 88-90: The vela_top tool entry uses the wrong pod label selector;
update the command string for the "vela_top" entry to use KubeVela's label key
app.oam.dev/name instead of app.kubernetes.io/name (e.g., change the command
value in the vela_top definition to use -l app.oam.dev/name={{ app_name }} -n {{
namespace }}); ensure only the label key is changed so pod filtering returns
KubeVela application pods.
- Around line 48-50: The vela_logs tool entry currently runs "vela logs ..." and
can hang on interactive prompts; update the command string for the vela_logs
entry to append the non-interactive flag "-y" (or "--yes") so it becomes "...
--tail {{ tail | default(500) }} -y"; also consider adding optional pod/cluster
selectors if available (e.g. --pod/--cluster template variables) to further
avoid ambiguity and interactive selection when multiple pods/resources match.
🧹 Nitpick comments (1)
holmes/plugins/toolsets/kubevela.yaml (1)

52-54: vela_port_forward tool provides no diagnostic value.

This tool just echoes a string telling the user how to run port-forward manually. It doesn't execute any inspection or return any data. Consider removing it — the LLM can suggest the command in its response without needing a dedicated tool.

Proposed fix — remove the tool
-      - name: "vela_port_forward"
-        description: "Check port-forward capability for debugging (informational only, doesn't create actual port-forward)"
-        command: "echo 'Port-forward available with: vela port-forward {{ app_name }} -n {{ namespace }}{% if port %} {{ port }}{% endif %}'"
-

Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated
Comment thread holmes/plugins/toolsets/kubevela.yaml Outdated
@mailprak

mailprak commented Feb 9, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the great PR @mailprak

Left a few minor comments

Thank you @arikalon1 The comments are addressed. Please review.

@mailprak
mailprak requested a review from arikalon1 February 12, 2026 16:54
arikalon1
arikalon1 previously approved these changes Feb 13, 2026

@arikalon1 arikalon1 left a comment

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.

Thanks for this great contribution @mailprak

@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

🤖 Fix all issues with AI agents
In `@docs/data-sources/builtin-toolsets/kubevela.md`:
- Line 3: The intro sentence currently reads "By enabling this toolset,
HolmesGPT will be able to diagnose KubeVela applications, inspect components,
check workflow execution, and analyze deployment issues using the Open
Application Model (OAM)"; change it to describe the toolset's capabilities
(e.g., "Provides diagnostics for KubeVela applications, component inspection,
workflow execution checks, and deployment issue analysis using the Open
Application Model (OAM)") so it focuses on the toolset rather than Holmes's
behavior; update the sentence in kubevela.md where that exact line appears and
keep the same list of capabilities and OAM reference.

Comment thread docs/data-sources/builtin-toolsets/kubevela.md Outdated

@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

🤖 Fix all issues with AI agents
In `@docs/data-sources/builtin-toolsets/kubevela.md`:
- Around line 23-29: The fenced YAML example is being interpreted as an indented
code block and triggers MD046; open
docs/data-sources/builtin-toolsets/kubevela.md and replace the indented block
with a proper fenced code block (use ```yaml before the snippet and ``` after)
containing the toolsets: / kubevela/core: / enabled: true lines, or
alternatively add a markdownlint-disable MD046 HTML comment immediately before
and re-enable after the fenced block to suppress linting; ensure the snippet
includes the language tag (yaml) so it stays a fenced block for the linter and
readers, and reference the YAML keys "toolsets" and "kubevela/core" to locate
the snippet.

Comment thread docs/data-sources/builtin-toolsets/kubevela.md
@arikalon1
arikalon1 merged commit eb96c35 into HolmesGPT:master Feb 14, 2026
16 of 20 checks passed
moshemorad pushed a commit that referenced this pull request Feb 22, 2026
New Features

Added a KubeVela toolset exposing comprehensive vela CLI commands for
application management, component inspection, workflow execution, trait
configuration, addon management, and troubleshooting capabilities
including status checks, logs, resource usage monitoring, dry-run
previews, and live-diff comparisons.

Documentation

Added comprehensive KubeVela documentation
(docs/data-sources/builtin-toolsets/kubevela.md) including
prerequisites, CLI installation instructions, configuration examples for
both Holmes CLI and Robusta Helm Chart deployments, common use cases,
and a complete capabilities table listing all available tools.
Integrated KubeVela into site navigation (.nav.yml)
and toolset index page.

Tests

Added LLM evaluation test
(tests/llm/fixtures/test_ask_holmes/212_kubevela_app_diagnosis/) with
complete end-to-end scenario covering KubeVela installation, intentional
application deployment failure (bad container image), verification of
Holmes's diagnostic capabilities, and proper cleanup procedures. Test
includes robust setup verification with retry loops and detailed error
reporting.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added KubeVela toolset support for inspecting applications,
components, traits, workflows, logs, port-forward info, addons,
definitions, resource usage, and diff/dry-run checks.

* **Documentation**
* Added KubeVela integration guide with installation, configuration,
usage examples, and a new navigation entry.

* **Tests**
* Added an end-to-end test fixture for KubeVela application diagnosis
and a test toolset configuration.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: arik <alon.arik@gmail.com>
Signed-off-by: Mohse Morad <moshemorad12340@gmail.com>
moshemorad pushed a commit that referenced this pull request Feb 22, 2026
New Features

Added a KubeVela toolset exposing comprehensive vela CLI commands for
application management, component inspection, workflow execution, trait
configuration, addon management, and troubleshooting capabilities
including status checks, logs, resource usage monitoring, dry-run
previews, and live-diff comparisons.

Documentation

Added comprehensive KubeVela documentation
(docs/data-sources/builtin-toolsets/kubevela.md) including
prerequisites, CLI installation instructions, configuration examples for
both Holmes CLI and Robusta Helm Chart deployments, common use cases,
and a complete capabilities table listing all available tools.
Integrated KubeVela into site navigation (.nav.yml)
and toolset index page.

Tests

Added LLM evaluation test
(tests/llm/fixtures/test_ask_holmes/212_kubevela_app_diagnosis/) with
complete end-to-end scenario covering KubeVela installation, intentional
application deployment failure (bad container image), verification of
Holmes's diagnostic capabilities, and proper cleanup procedures. Test
includes robust setup verification with retry loops and detailed error
reporting.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added KubeVela toolset support for inspecting applications,
components, traits, workflows, logs, port-forward info, addons,
definitions, resource usage, and diff/dry-run checks.

* **Documentation**
* Added KubeVela integration guide with installation, configuration,
usage examples, and a new navigation entry.

* **Tests**
* Added an end-to-end test fixture for KubeVela application diagnosis
and a test toolset configuration.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: arik <alon.arik@gmail.com>
Signed-off-by: Mohse Morad <moshemorad12340@gmail.com>
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