Skip to content

debug: trigger cli-performance to capture failure logs - #2055

Draft
aantn wants to merge 7 commits into
masterfrom
claude/debug-benchmark-failures-gPkry
Draft

aantn wants to merge 7 commits into
masterfrom
claude/debug-benchmark-failures-gPkry

Conversation

@aantn

@aantn aantn commented May 17, 2026 •

Copy link
Copy Markdown
Collaborator

Trivial whitespace change to fire the cli-performance workflow so we can capture the failure logs and diagnose why "Benchmark PR" and "Benchmark Master" have been failing since ~May 15.

Will close without merging.


Generated by Claude Code

Summary by CodeRabbit

  • Style

    • Minor whitespace change: added a blank line after the Python shebang in an internal script.
  • Tests

    • Enhanced CLI performance benchmark workflow: richer environment/version logging, per-command exit-code capture, persisted stdout/stderr to logs, appended log tails to step summaries, conditional artifact output only on successful runs, and workflow fails when benchmark steps fail.

Review Change Stack

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

github-actions Bot commented May 17, 2026 •

Copy link
Copy Markdown
Contributor

📂 Previous Runs

📜 #2 · Run @ __d6a7544__ (#26001252455) — May 17, 20:09 UTC

✅ Results of HolmesGPT evals

Automatically triggered by commit d6a7544 on branch claude/debug-benchmark-failures-gPkry

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 11/11 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost Total tokens Input Max input Output Max output Cached Non-cached Reasoning Compactions Src
✅ 09_crashpod 40.3s 6 14 $0.3211 133,131 130,283 25,159 2,848 977 102,699 27,584 322 — src
✅ 101_loki_historical_logs_pod_deleted 81.9s 8 19 $0.4595 200,914 195,584 30,313 5,330 918 162,516 33,068 1,280 — src
✅ 112_find_pvcs_by_uuid 19.0s 3 4 $0.2062 60,954 59,709 21,803 1,245 670 37,652 22,057 350 — src
✅ 12_job_crashing 41.4s 6 14 $0.3146 132,550 129,890 24,703 2,660 881 102,401 27,489 178 — src
✅ 176_network_policy_blocking_traffic_no_skills 50.6s 6 15 $0.3546 139,779 136,421 26,678 3,358 790 106,015 30,406 724 — src
✅ 227_count_configmaps_per_namespace[0] 17.9s 4 9 $0.2038 76,263 75,136 20,545 1,127 593 54,275 20,861 53 — src
✅ 243_pod_names_contain_service 31.7s 5 9 $0.2533 101,535 99,550 22,307 1,985 886 76,664 22,886 227 — src
✅ 24_misconfigured_pvc 39.2s 5 15 $0.2945 107,976 105,241 24,228 2,735 955 79,354 25,887 237 — src
✅ 43_current_datetime_from_prompt 3.5s 1 — $0.1182 16,898 16,798 16,798 100 100 0 16,798 60 — src
✅ 51_logs_summarize_errors 19.8s 4 5 $0.2048 77,246 76,176 21,092 1,070 359 55,079 21,097 73 — src
✅ 61_exact_match_counting 9.1s 3 3 $0.1510 52,428 52,066 17,776 362 215 34,286 17,780 31 — src
Total 32.2s avg 4.6 avg 10.7 avg $2.8817 1,099,674 1,076,854 30,313 22,820 977 810,941 265,913 3,535 —
Benchmark Comparison Details

Master baseline: latest master-* experiment (post-merge regression eval)
Status: 11 test/model combinations loaded

Benchmark baseline: latest ci-benchmark experiment on master
Status: 147 test/model combinations loaded

Time comparison (seconds):

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 40.3s 34.3s ↑17% 32.5s ↑24%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 81.9s 63.8s ↑28% 51.7s ↑58%
112_find_pvcs_by_uuid (opus-4.6) 📄 19.0s 19.7s ±0% 18.1s ±0%
12_job_crashing (opus-4.6) 📄 41.4s 42.2s ±0% 42.4s ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 50.6s 42.3s ↑20% 35.7s ↑42%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 17.9s 18.6s ±0% 19.7s ±0%
243_pod_names_contain_service (opus-4.6) 📄 31.7s 38.3s ↓17% 27.4s ↑16%
24_misconfigured_pvc (opus-4.6) 📄 39.2s 40.5s ±0% 35.8s ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 3.5s 3.1s ↑12% — —
51_logs_summarize_errors (opus-4.6) 📄 19.8s 21.4s ±0% 23.1s ↓14%
61_exact_match_counting (opus-4.6) 📄 9.1s 9.3s ±0% 10.8s ↓15%
Total (all, n=11) 32.2s 30.3s — 29.7s —
Comparable (m=11, b=10) 32.2s 30.3s ±0% 29.7s ↑18%

Cost comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 $0.3211 $0.2729 ↑18% $0.2616 ↑23%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 $0.4595 $0.3876 ↑19% $0.3371 ↑36%
112_find_pvcs_by_uuid (opus-4.6) 📄 $0.2062 $0.2086 ±0% $0.2014 ±0%
12_job_crashing (opus-4.6) 📄 $0.3146 $0.3169 ±0% $0.3076 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 $0.3546 $0.3282 ±0% $0.2914 ↑22%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 $0.2038 $0.2069 ±0% $0.2059 ±0%
243_pod_names_contain_service (opus-4.6) 📄 $0.2533 $0.2881 ↓12% $0.2280 ↑11%
24_misconfigured_pvc (opus-4.6) 📄 $0.2945 $0.3109 ±0% $0.2831 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 $0.1182 $0.0120 ↑885% — —
51_logs_summarize_errors (opus-4.6) 📄 $0.2048 $0.2070 ±0% $0.2072 ±0%
61_exact_match_counting (opus-4.6) 📄 $0.1510 $0.1510 ±0% $0.1522 ±0%
Total (all, n=11) $0.2620 $0.2446 — $0.2475 —
Comparable (m=11, b=10) $0.2620 $0.2446 ±0% $0.2475 ↑12%

Total tokens comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 133,131 104,084 ↑28% 103,497 ↑29%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 200,914 167,778 ↑20% 138,670 ↑45%
112_find_pvcs_by_uuid (opus-4.6) 📄 60,954 61,070 ±0% 61,169 ±0%
12_job_crashing (opus-4.6) 📄 132,550 135,709 ±0% 133,893 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 139,779 113,278 ↑23% 111,145 ↑26%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 76,263 76,279 ±0% 76,945 ±0%
243_pod_names_contain_service (opus-4.6) 📄 101,535 124,965 ↓19% 79,525 ↑28%
24_misconfigured_pvc (opus-4.6) 📄 107,976 131,123 ↓18% 108,047 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 16,898 16,898 ±0% — —
51_logs_summarize_errors (opus-4.6) 📄 77,246 77,246 ±0% 77,707 ±0%
61_exact_match_counting (opus-4.6) 📄 52,428 52,428 ±0% 52,942 ±0%
Total (all, n=11) 99,970 96,442 — 94,354 —
Comparable (m=11, b=10) 99,970 96,442 ±0% 94,354 ↑15%

Cached tokens comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 102,699 77,473 ↑33% 77,391 ↑33%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 162,516 134,689 ↑21% 106,565 ↑53%
112_find_pvcs_by_uuid (opus-4.6) 📄 37,652 37,651 ±0% 38,002 ±0%
12_job_crashing (opus-4.6) 📄 102,401 106,020 ±0% 104,761 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 106,015 79,473 ↑33% 81,519 ↑30%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 54,275 53,666 ±0% 54,503 ±0%
243_pod_names_contain_service (opus-4.6) 📄 76,664 98,220 ↓22% 55,513 ↑38%
24_misconfigured_pvc (opus-4.6) 📄 79,354 102,442 ↓23% 80,270 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 — 16,795 — — —
51_logs_summarize_errors (opus-4.6) 📄 55,079 55,037 ±0% 55,443 ±0%
61_exact_match_counting (opus-4.6) 📄 34,286 34,285 ±0% 34,632 ±0%
Total (all, n=11) 73,722 72,341 — 68,860 —
Comparable (m=10, b=10) 81,094 77,896 ±0% 68,860 ↑18%

Turns comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 6 5 ↑20% — —
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 8 7 ↑14% — —
112_find_pvcs_by_uuid (opus-4.6) 📄 3 3 ±0% — —
12_job_crashing (opus-4.6) 📄 6 6 ±0% — —
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 6 5 ↑20% — —
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 4 4 ±0% — —
243_pod_names_contain_service (opus-4.6) 📄 5 6 ↓17% — —
24_misconfigured_pvc (opus-4.6) 📄 5 6 ↓17% — —
43_current_datetime_from_prompt (opus-4.6) 📄 1 1 ±0% — —
51_logs_summarize_errors (opus-4.6) 📄 4 4 ±0% — —
61_exact_match_counting (opus-4.6) 📄 3 3 ±0% — —
Total (all, n=11) 4.6 4.5 — — —
Comparable (m=11, b=0) 4.6 4.5 ±0% — —

Tool calls comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 14 12 ↑17% 10 ↑40%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 19 16 ↑19% 14 ↑36%
112_find_pvcs_by_uuid (opus-4.6) 📄 4 4 ±0% 4 ±0%
12_job_crashing (opus-4.6) 📄 14 15 ±0% 14 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 15 14 ±0% 13 ↑15%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 9 9 ±0% 9 ±0%
243_pod_names_contain_service (opus-4.6) 📄 9 10 ↓10% 8 ↑12%
24_misconfigured_pvc (opus-4.6) 📄 15 15 ±0% 14 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 — — — — —
51_logs_summarize_errors (opus-4.6) 📄 5 5 ±0% 5 ±0%
61_exact_match_counting (opus-4.6) 📄 3 3 ±0% 3 ±0%
Total (all, n=11) 9.7 10.3 — 9.4 —
Comparable (m=10, b=10) 10.7 10.3 ±0% 9.4 ↑14%

Comparison indicators:

  • ±0% — diff under 10% (within noise threshold)
  • ↑N%/↓N% — diff 10-25%
  • ↑N%/↓N% — diff over 25% (significant)
⚠️ 1 older run truncated

Older runs were omitted to stay under GitHub's 64KB comment size limit.


✅ Results of HolmesGPT evals

Automatically triggered by commit 04600fc on branch claude/debug-benchmark-failures-gPkry

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 11/11 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost Total tokens Input Max input Output Max output Cached Non-cached Reasoning Compactions Src
✅ 09_crashpod 31.9s 4 10 $0.2591 84,811 82,719 23,925 2,092 1,070 57,834 24,885 199 — src
✅ 101_loki_historical_logs_pod_deleted 75.7s 7 20 $0.4512 175,881 170,885 31,551 4,996 916 135,250 35,635 925 — src
✅ 112_find_pvcs_by_uuid 18.7s 3 4 $0.2032 60,691 59,532 21,707 1,159 589 37,569 21,963 259 — src
✅ 12_job_crashing 42.2s 6 13 $0.2991 132,222 129,757 24,511 2,465 578 104,256 25,501 233 — src
✅ 176_network_policy_blocking_traffic_no_skills 53.3s 6 14 $0.3370 135,511 132,416 25,955 3,095 759 103,447 28,969 645 — src
✅ 227_count_configmaps_per_namespace[0] 20.3s 4 9 $0.2038 76,294 75,172 20,562 1,122 591 54,292 20,880 53 — src
✅ 243_pod_names_contain_service 29.7s 4 8 $0.2314 78,996 77,225 21,720 1,771 887 54,927 22,298 181 — src
✅ 24_misconfigured_pvc 40.2s 5 14 $0.2905 106,707 103,885 23,617 2,822 1,072 78,988 24,897 392 — src
✅ 43_current_datetime_from_prompt 5.0s 1 — $0.1183 16,900 16,798 16,798 102 102 0 16,798 61 — src
✅ 51_logs_summarize_errors 22.2s 4 5 $0.2081 77,726 76,588 21,294 1,138 423 55,289 21,299 76 — src
✅ 61_exact_match_counting 11.9s 3 3 $0.1510 52,418 52,056 17,771 362 215 34,281 17,775 31 — src
Total 31.9s avg 4.3 avg 10.0 avg $2.7527 998,157 977,033 31,551 21,124 1,072 716,133 260,900 3,055 —
Benchmark Comparison Details

Master baseline: latest master-* experiment (post-merge regression eval)
Status: 11 test/model combinations loaded

Benchmark baseline: latest ci-benchmark experiment on master
Status: 147 test/model combinations loaded

Time comparison (seconds):

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 31.9s 34.3s ±0% 32.5s ±0%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 75.7s 63.8s ↑19% 51.7s ↑47%
112_find_pvcs_by_uuid (opus-4.6) 📄 18.7s 19.7s ±0% 18.1s ±0%
12_job_crashing (opus-4.6) 📄 42.2s 42.2s ±0% 42.4s ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 53.3s 42.3s ↑26% 35.7s ↑49%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 20.3s 18.6s ±0% 19.7s ±0%
243_pod_names_contain_service (opus-4.6) 📄 29.7s 38.3s ↓22% 27.4s ±0%
24_misconfigured_pvc (opus-4.6) 📄 40.2s 40.5s ±0% 35.8s ↑12%
43_current_datetime_from_prompt (opus-4.6) 📄 5.0s 3.1s ↑61% — —
51_logs_summarize_errors (opus-4.6) 📄 22.2s 21.4s ±0% 23.1s ±0%
61_exact_match_counting (opus-4.6) 📄 11.9s 9.3s ↑29% 10.8s ↑10%
Total (all, n=11) 31.9s 30.3s — 29.7s —
Comparable (m=11, b=10) 31.9s 30.3s ±0% 29.7s ↑16%

Cost comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 $0.2591 $0.2729 ±0% $0.2616 ±0%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 $0.4512 $0.3876 ↑16% $0.3371 ↑34%
112_find_pvcs_by_uuid (opus-4.6) 📄 $0.2032 $0.2086 ±0% $0.2014 ±0%
12_job_crashing (opus-4.6) 📄 $0.2991 $0.3169 ±0% $0.3076 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 $0.3370 $0.3282 ±0% $0.2914 ↑16%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 $0.2038 $0.2069 ±0% $0.2059 ±0%
243_pod_names_contain_service (opus-4.6) 📄 $0.2314 $0.2881 ↓20% $0.2280 ±0%
24_misconfigured_pvc (opus-4.6) 📄 $0.2905 $0.3109 ±0% $0.2831 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 $0.1183 $0.0120 ↑885% — —
51_logs_summarize_errors (opus-4.6) 📄 $0.2081 $0.2070 ±0% $0.2072 ±0%
61_exact_match_counting (opus-4.6) 📄 $0.1510 $0.1510 ±0% $0.1522 ±0%
Total (all, n=11) $0.2502 $0.2446 — $0.2475 —
Comparable (m=11, b=10) $0.2502 $0.2446 ±0% $0.2475 ±0%

Total tokens comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 84,811 104,084 ↓19% 103,497 ↓18%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 175,881 167,778 ±0% 138,670 ↑27%
112_find_pvcs_by_uuid (opus-4.6) 📄 60,691 61,070 ±0% 61,169 ±0%
12_job_crashing (opus-4.6) 📄 132,222 135,709 ±0% 133,893 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 135,511 113,278 ↑20% 111,145 ↑22%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 76,294 76,279 ±0% 76,945 ±0%
243_pod_names_contain_service (opus-4.6) 📄 78,996 124,965 ↓37% 79,525 ±0%
24_misconfigured_pvc (opus-4.6) 📄 106,707 131,123 ↓19% 108,047 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 16,900 16,898 ±0% — —
51_logs_summarize_errors (opus-4.6) 📄 77,726 77,246 ±0% 77,707 ±0%
61_exact_match_counting (opus-4.6) 📄 52,418 52,428 ±0% 52,942 ±0%
Total (all, n=11) 90,742 96,442 — 94,354 —
Comparable (m=11, b=10) 90,742 96,442 ±0% 94,354 ±0%

Cached tokens comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 57,834 77,473 ↓25% 77,391 ↓25%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 135,250 134,689 ±0% 106,565 ↑27%
112_find_pvcs_by_uuid (opus-4.6) 📄 37,569 37,651 ±0% 38,002 ±0%
12_job_crashing (opus-4.6) 📄 104,256 106,020 ±0% 104,761 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 103,447 79,473 ↑30% 81,519 ↑27%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 54,292 53,666 ±0% 54,503 ±0%
243_pod_names_contain_service (opus-4.6) 📄 54,927 98,220 ↓44% 55,513 ±0%
24_misconfigured_pvc (opus-4.6) 📄 78,988 102,442 ↓23% 80,270 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 — 16,795 — — —
51_logs_summarize_errors (opus-4.6) 📄 55,289 55,037 ±0% 55,443 ±0%
61_exact_match_counting (opus-4.6) 📄 34,281 34,285 ±0% 34,632 ±0%
Total (all, n=11) 65,103 72,341 — 68,860 —
Comparable (m=10, b=10) 71,613 77,896 ±0% 68,860 ±0%

Turns comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 4 5 ↓20% — —
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 7 7 ±0% — —
112_find_pvcs_by_uuid (opus-4.6) 📄 3 3 ±0% — —
12_job_crashing (opus-4.6) 📄 6 6 ±0% — —
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 6 5 ↑20% — —
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 4 4 ±0% — —
243_pod_names_contain_service (opus-4.6) 📄 4 6 ↓33% — —
24_misconfigured_pvc (opus-4.6) 📄 5 6 ↓17% — —
43_current_datetime_from_prompt (opus-4.6) 📄 1 1 ±0% — —
51_logs_summarize_errors (opus-4.6) 📄 4 4 ±0% — —
61_exact_match_counting (opus-4.6) 📄 3 3 ±0% — —
Total (all, n=11) 4.3 4.5 — — —
Comparable (m=11, b=0) 4.3 4.5 ±0% — —

Tool calls comparison:

Test case This branch master (9h ago) Δ vs master benchmark (14d ago) Δ vs benchmark
09_crashpod (opus-4.6) 📄 10 12 ↓17% 10 ±0%
101_loki_historical_logs_pod_deleted (opus-4.6) 📄 20 16 ↑25% 14 ↑43%
112_find_pvcs_by_uuid (opus-4.6) 📄 4 4 ±0% 4 ±0%
12_job_crashing (opus-4.6) 📄 13 15 ↓13% 14 ±0%
176_network_policy_blocking_traffic_no_skills (opus-4.6) 📄 14 14 ±0% 13 ±0%
227_count_configmaps_per_namespace[0] (opus-4.6) 📄 9 9 ±0% 9 ±0%
243_pod_names_contain_service (opus-4.6) 📄 8 10 ↓20% 8 ±0%
24_misconfigured_pvc (opus-4.6) 📄 14 15 ±0% 14 ±0%
43_current_datetime_from_prompt (opus-4.6) 📄 — — — — —
51_logs_summarize_errors (opus-4.6) 📄 5 5 ±0% 5 ±0%
61_exact_match_counting (opus-4.6) 📄 3 3 ±0% 3 ±0%
Total (all, n=11) 9.1 10.3 — 9.4 —
Comparable (m=10, b=10) 10.0 10.3 ±0% 9.4 ±0%

Comparison indicators:

  • ±0% — diff under 10% (within noise threshold)
  • ↑N%/↓N% — diff 10-25%
  • ↑N%/↓N% — diff over 25% (significant)
📖 Legend
Icon Meaning
✅ The test was successful
➖ The test was skipped
⚠️ The test failed but is known to be flaky or known to fail
🚧 The test had a setup failure (not a code regression)
🔧 The test failed due to mock data issues (not a code regression)
🚫 The test was throttled by API rate limits/overload
❌ The test failed and should be fixed before merging the PR
🔄 Re-run evals manually

⚠️ Warning: /eval comments always run using the workflow from master, not from this PR branch. If you modified the GitHub Action (e.g., added secrets or env vars), those changes won't take effect.

To test workflow changes, use the GitHub CLI or Actions UI instead:

gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/debug-benchmark-failures-gPkry -f markers=regression -f filter=

Option 1: Comment on this PR with /eval:

/eval
tags: regression

Or with more options (one per line):

/eval
model: gpt-4o
tags: regression
id: 09_crashpod
iterations: 5

Run evals on a different branch (e.g., master) for comparison:

/eval
branch: master
tags: regression
Option Description
model Model(s) to test (default: same as automatic runs)
tags Pytest tags / markers (no default - runs all tests!)
id Eval ID / pytest -k filter (use /list to see valid eval names)
iterations Number of runs, max 10
branch Run evals on a different branch (for cross-branch comparison)

Quick re-run: Use /rerun to re-run the most recent /eval on this PR with the same parameters.

Option 2: Trigger via GitHub Actions UI → "Run workflow"

Option 3: Add PR labels to include extra evals (applies to both automatic runs and /eval comments):

Label Effect
evals-tag-<name> Run tests with tag <name> alongside regression
evals-id-<name> Run a specific eval by test ID
evals-model-<name> Override the model (use model list name, e.g. sonnet-4.5)

Examples: evals-tag-easy, evals-id-09_crashpod, evals-model-sonnet-4.5

🏷️ Valid tags

benchmark, chain-of-causation, compaction, confluence, context_window, conversation_worker, coralogix, counting, database, datadog, datetime, db-connectors, easy, elasticsearch, embeds, fast, frontend, grafana, hard, images, integration, kafka, kubernetes, leaked-information, logs, loki, manual, mcp, medium, metrics, network, newrelic, no-cicd, numerical, one-test, port-forward, prometheus, question-answer, regression, skills, slackbot, storage, token-limit, toolset-limitation, traces, transparency, victorialogs

🤖 Valid models

deepseek-chat, deepseek-r1-reasoner, deepseek-reasoner, deepseek-v3.2-chat, gemini-3-flash-preview, gemini-3-pro-preview, gemini-3.1-pro-preview, gpt-4.1, gpt-5.2-high-reasoning, gpt-5.3-codex, gpt-5.4, haiku-4.5, kimi-2.5, kimi-2.5-openrouter, opus-4.5, opus-4.6, opus-4.7, qwen-next-80B-instruct, qwen-next-80B-thinking, sonnet-4.5, sonnet-4.6


Commands: /eval · /rerun · /list

CLI: gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/debug-benchmark-failures-gPkry -f markers=regression -f filter=

@github-actions

github-actions Bot commented May 17, 2026 •

Copy link
Copy Markdown
Contributor

✅ Docker images ready for d1de13f2 (built in 1m 5s)

⚠️ Warning: does not support ARM (ARM images are built on release only - not on every PR)

Use these tags to pull the images for testing.

📋 Copy commands

⚠️ Temporary images are deleted after 30 days. Copy to a permanent registry before using them:

gcloud auth configure-docker us-central1-docker.pkg.dev
docker pull us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes:d1de13f2
docker tag us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes:d1de13f2 me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:d1de13f2
docker push me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:d1de13f2
docker pull us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes-operator:d1de13f2
docker tag us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes-operator:d1de13f2 me-west1-docker.pkg.dev/robusta-development/development/holmes-operator-dev:d1de13f2
docker push me-west1-docker.pkg.dev/robusta-development/development/holmes-operator-dev:d1de13f2

Patch Helm values in one line (choose the chart you use):

HolmesGPT chart:

helm upgrade --install holmesgpt ./helm/holmes \
  --set registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set image=holmes-dev:d1de13f2 \
  --set operator.registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set operator.image=holmes-operator-dev:d1de13f2

Robusta wrapper chart:

helm upgrade --install robusta robusta/robusta \
  --reuse-values \
  --set holmes.registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set holmes.image=holmes-dev:d1de13f2 \
  --set holmes.operator.registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set holmes.operator.image=holmes-operator-dev:d1de13f2

@coderabbitai

coderabbitai Bot commented May 17, 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: 5783d217-04c8-4af8-862e-2ee5e2278638

📥 Commits

Reviewing files that changed from the base of the PR and between 8a5b9b4 and 648f8ea.

📒 Files selected for processing (1)
  • .github/workflows/cli-performance.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/cli-performance.yaml

Walkthrough

Added a blank line after the Python shebang in the CLI benchmark script and revamped PR/master GitHub Actions benchmark steps to log environment info, capture per-run exit codes, tee outputs to logs, write step-summary tails, conditionally set JSON outputs, and fail the job if runs fail.

Changes

CLI Performance Benchmarks

Layer / File(s) Summary
Workflow PR & master benchmark scripts
.github/workflows/cli-performance.yaml
Reworked PR and master benchmark job shell steps to add tracing/version logging, capture STARTUP_EXIT and LLM_EXIT, pipe outputs through tee into startup-output.log/llm-output.log, append tails and exit codes to $GITHUB_STEP_SUMMARY, only set startup_json/llm_json when runs succeed, and fail the step if either run exits non‑zero.
Shebang spacing
scripts/cli_performance_benchmark.py
Inserted a single blank line immediately after the Python shebang (line 2).

Sequence Diagram(s)

sequenceDiagram
  participant ActionsRunner as GitHub Actions Runner
  participant WorkflowStep as benchmark shell step
  participant Startup as startup benchmark
  participant LLM as LLM/e2e benchmark
  participant Logs as startup-output.log / llm-output.log
  ActionsRunner->>WorkflowStep: invoke step (tracing + env)
  WorkflowStep->>Startup: run startup benchmark (set +e, pipe to tee)
  Startup->>Logs: write stdout/stderr
  WorkflowStep->>WorkflowStep: capture STARTUP_EXIT from PIPESTATUS
  WorkflowStep->>LLM: optionally run LLM benchmark (if OPENROUTER_API_KEY)
  LLM->>Logs: write stdout/stderr
  WorkflowStep->>WorkflowStep: capture LLM_EXIT from PIPESTATUS
  WorkflowStep->>ActionsRunner: append log tails and exit codes to $GITHUB_STEP_SUMMARY
  WorkflowStep->>ActionsRunner: write startup_json/llm_json only when respective exit == 0
  WorkflowStep->>ActionsRunner: exit 1 if STARTUP_EXIT or LLM_EXIT != 0
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • HolmesGPT/holmesgpt#1415: Prior work on the benchmark workflow setup that overlaps with updated capture-and-report behavior.

Suggested reviewers

  • moshemorad
  • yuryrudey
  • arikalon1
🚥 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 reflects the primary intent: to trigger the cli-performance workflow for debugging purposes and capturing failure logs.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 17, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for holmes-docs ready!

Name Link
🔨 Latest commit 04600fc
🔍 Latest deploy log https://app.netlify.com/projects/holmes-docs/deploys/6a0a1f5b53331c0007a52375
😎 Deploy Preview https://deploy-preview-2055--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.

claude added 2 commits May 17, 2026 14:32
Signed-off-by: Claude <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Benchmark Master diagnostic dump

startup-output.log (tail)

Running startup-only benchmark (5 iterations)...
STARTUP iteration 1/5 (cold)...
  Time: 6.26s (cold)
STARTUP iteration 2/5 (warm)...
  Time: 6.24s (warm)
STARTUP iteration 3/5 (warm)...
  Time: 6.30s (warm)
STARTUP iteration 4/5 (warm)...
  Time: 6.16s (warm)
STARTUP iteration 5/5 (warm)...
  Time: 6.25s (warm)

Results saved to startup.json

==================================================
📊 Benchmark Summary (STARTUP)
==================================================
🥶 Cold Start: 6.26s
🔥 Warm Start: 6.23s (mean)
   Min: 6.16s | Max: 6.30s
{
  "benchmark_type": "startup",
  "iterations": 5,
  "cold_start_seconds": 6.262078577000011,
  "warm_mean_seconds": 6.234180399000003,
  "warm_median_seconds": 6.242235424500009,
  "warm_min_seconds": 6.155990462999995,
  "warm_max_seconds": 6.296260283999999,
  "warm_stdev_seconds": 0.05826159439639066,
  "all_times": [
    6.262078577000011,
    6.23568198800001,
    6.296260283999999,
    6.155990462999995,
    6.248788861000008
  ],
  "timestamp": "2026-05-17T14:37:41.134681+00:00",
  "git_sha": "fa5e0ced",
  "git_branch": "master",
  "prompt": "",
  "model": ""
}

llm-output.log (tail)

�[31m│�[0m   �[2m2391 �[0m�[2m│   │   │   │   │   │   │   �[0mmessage=�[33mf�[0m�[33m"�[0m�[33mAPIError: �[0m�[33m{�[0mexception_provider�[33m}�[0m�[33m �[0m �[31m│�[0m
�[31m│�[0m   �[2m2392 �[0m�[2m│   │   │   │   │   │   │   �[0mllm_provider=custom_llm_provider,         �[31m│�[0m
�[31m╰──────────────────────────────────────────────────────────────────────────────╯�[0m
�[1;91mAPIError: �[0mlitellm.APIError: APIError: OpenrouterException - 
�[1m{�[0m�[32m"error"�[0m:�[1m{�[0m�[32m"message"�[0m:�[32m"This request requires more credits, or fewer max_tokens. �[0m
�[32mYou requested up to 64000 tokens, but can only afford 61126. To increase, visit �[0m
�[32mhttps://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c�[0m
�[32m77b117bbc914dc34a4217daa828d08 and adjust the key's weekly �[0m
�[32mlimit"�[0m,�[32m"code"�[0m:�[1;36m402�[0m,�[32m"metadata"�[0m:�[1m{�[0m�[32m"provider_name"�[0m:null�[1m}�[0m�[1m}�[0m,�[32m"user_id"�[0m:�[32m"user_379TDnIlnyH�[0m
�[32mRRxFAu5xIWDgH9LC"�[0m�[1m}�[0m

STDOUT:
Loaded models: ['openrouter/anthropic/claude-haiku-4.5']                        
Using selected model: openrouter/anthropic/claude-haiku-4.5                     
Model: openrouter/anthropic/claude-haiku-4.5, 200K context, 40K max response    
(default, change with --model, for all options see                              
https://holmesgpt.dev/ai-providers)                                             
Refreshing available datasources (toolsets)                                     
Running without kube-config! e=Invalid kube-config file. No configuration found.
Toolset 'kubernetes/kube-lineage-extras' is enabled but was excluded because its
tags ['cluster'] don't match the current mode's tags ['core', 'cli']            
❌ Toolset kubevela/core: `vela version` failed with exit code 127: /bin/sh: 1: 
vela: not found                                                                 
❌ Toolset openshift/live-metrics: `oc adm top nodes` failed with exit code 127:
/bin/sh: 1: oc: not found                                                       
❌ Toolset inspektor-gadget/node: Environment variable ENABLE_INSPEKTOR_GADGET  
was not set                                                                     
❌ Toolset inspektor-gadget/tcpdump: Environment variable                       
ENABLE_INSPEKTOR_GADGET was not set                                             
❌ Toolset slab: Environment variable SLAB_API_KEY was not set                  
❌ Toolset openshift/core: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
❌ Toolset openshift/logs: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
❌ Toolset openshift/security: `oc version --client` failed with exit code 127: 
/bin/sh: 1: oc: not found                                                       
❌ Toolset argocd/core: Environment variable ARGOCD_AUTH_TOKEN was not set      
✅ Toolset core_investigation                                                   
✅ Toolset connectivity_check                                                   
✅ Toolset kubernetes/kube-prometheus-stack                                     
❌ Toolset cilium/core: `cilium status` failed with exit code 127: /bin/sh: 1:  
cilium: not found                                                               
✅ Toolset internet                                                             
❌ Toolset hubble/observability: `hubble version` failed with exit code 127:    
/bin/sh: 1: hubble: not found                                                   
❌ Toolset robusta: Integration with Robusta cloud is disabled                  
❌ Toolset notion: Notion toolset is misconfigured. Authorization header is     
required.                                                                       
❌ Toolset opensearch/query_assist: Environment variable OPENSEARCH_URL was not 
set                                                                             
✅ Toolset skills                                                               
✅ Toolset kubectl-run                                                          
✅ Toolset kubernetes/logs                                                      
✅ Toolset bash                                                                 
✅ Toolset kubernetes/core                                                      
❌ Toolset kubernetes/krew-extras: `kubectl version --client && kubectl lineage 
--version` failed with exit code 1: error: unknown command "lineage" for        
"kubectl"                                                                       
✅ Toolset docker/core                                                          
❌ Toolset crossplane/core: `kubectl api-resources --api-group=pkg.crossplane.io
--no-headers 2>/dev/null | grep -q providers` failed with exit code 1           
❌ Toolset kubernetes/live-metrics: `kubectl top nodes` failed with exit code 1:
The connection to the server localhost:8080 was refused - did you specify the   
right host or port?                                                             
❌ Toolset aks/node-health: `az account show` failed with exit code 1: ERROR:   
Please run 'az login' to setup account.                                         
❌ Toolset aks/core: `az account show` failed with exit code 1: ERROR: Please   
run 'az login' to setup account.                                                
✅ Toolset helm/core                                                            
Toolset statuses are cached to /home/runner/.holmes/toolsets_status.json        
✅ Toolset kubernetes/kube-prometheus-stack                                     
✅ Toolset core_investigation                                                   
✅ Toolset internet                                                             
✅ Toolset connectivity_check                                                   
✅ Toolset kubectl-run                                                          
✅ Toolset bash                                                                 
✅ Toolset skills                                                               
✅ Toolset kubernetes/logs                                                      
✅ Toolset docker/core                                                          
✅ Toolset kubernetes/core                                                      
✅ Toolset helm/core                                                            

�[1;31mGive Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new�[0m
LiteLLM.Info: If you need to debug this error, use `litellm._turn_on_debug()'.

LLM call failed on model=openrouter/anthropic/claude-haiku-4.5 (streaming       
iteration 1): APIError: litellm.APIError: APIError: OpenrouterException -       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 236, in _make_common_sync_call   
    response = sync_httpx_client.post(                                          
               ^^^^^^^^^^^^^^^^^^^^^^^                                          
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1047, in post                        
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1029, in post                        
    response.raise_for_status()                                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/httpx/
_models.py", line 829, in raise_for_status                                      
    raise HTTPStatusError(message, request=request, response=self)              
httpx.HTTPStatusError: Client error '402 Payment Required' for url              
'https://openrouter.ai/api/v1/chat/completions'                                 
For more information check:                                                     
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/402                    
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 3316, in completion                                            
    response = base_llm_http_handler.completion(                                
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 560, in completion               
    response = self._make_common_sync_call(                                     
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 261, in _make_common_sync_call   
    raise self._handle_error(e=e, provider_config=provider_config)              
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 4721, in _handle_error           
    raise provider_config.get_error_class(                                      
litellm.llms.openrouter.common_utils.OpenRouterException:                       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/tool_calling_llm.py", 
line 1093, in call_stream                                                       
    full_response = self.llm.completion(                                        
                    ^^^^^^^^^^^^^^^^^^^^                                        
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/llm.py", line 613, in 
completion                                                                      
    result = litellm_to_use.completion(                                         
             ^^^^^^^^^^^^^^^^^^^^^^^^^^                                         
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1769, in wrapper                                              
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1590, in wrapper                                              
    result = original_function(*args, **kwargs)                                 
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 4411, in completion                                            
    raise exception_type(                                                       
          ^^^^^^^^^^^^^^^                                                       
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2456, in exception_type  
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2389, in exception_type  
    raise APIError(                                                             
litellm.exceptions.APIError: litellm.APIError: APIError: OpenrouterException -  
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              

Traceback (most recent call last):
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 267, in <module>
    main()
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 240, in main
    summary = run_e2e_benchmark(
              ^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 181, in run_e2e_benchmark
    return run_benchmark(cmd, "e2e", iterations, model=model or "default", prompt=prompt)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 136, in run_benchmark
    raise RuntimeError(f"Cold start {benchmark_type} benchmark failed")
RuntimeError: Cold start e2e benchmark failed

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Benchmark PR diagnostic dump

startup-output.log (tail)

Running startup-only benchmark (5 iterations)...
STARTUP iteration 1/5 (cold)...
  Time: 6.61s (cold)
STARTUP iteration 2/5 (warm)...
  Time: 6.45s (warm)
STARTUP iteration 3/5 (warm)...
  Time: 6.62s (warm)
STARTUP iteration 4/5 (warm)...
  Time: 6.58s (warm)
STARTUP iteration 5/5 (warm)...
  Time: 6.65s (warm)

Results saved to startup.json

==================================================
📊 Benchmark Summary (STARTUP)
==================================================
🥶 Cold Start: 6.61s
🔥 Warm Start: 6.58s (mean)
   Min: 6.45s | Max: 6.65s
{
  "benchmark_type": "startup",
  "iterations": 5,
  "cold_start_seconds": 6.609377569999992,
  "warm_mean_seconds": 6.575814634249994,
  "warm_median_seconds": 6.601879013999962,
  "warm_min_seconds": 6.453377654000008,
  "warm_max_seconds": 6.646122855000044,
  "warm_stdev_seconds": 0.08619860245012007,
  "all_times": [
    6.609377569999992,
    6.453377654000008,
    6.624215456999991,
    6.579542570999934,
    6.646122855000044
  ],
  "timestamp": "2026-05-17T14:37:47.010684+00:00",
  "git_sha": "66f4419e",
  "git_branch": "HEAD",
  "prompt": "",
  "model": ""
}

llm-output.log (tail)

�[31m│�[0m   �[2m2391 �[0m�[2m│   │   │   │   │   │   │   �[0mmessage=�[33mf�[0m�[33m"�[0m�[33mAPIError: �[0m�[33m{�[0mexception_provider�[33m}�[0m�[33m �[0m �[31m│�[0m
�[31m│�[0m   �[2m2392 �[0m�[2m│   │   │   │   │   │   │   �[0mllm_provider=custom_llm_provider,         �[31m│�[0m
�[31m╰──────────────────────────────────────────────────────────────────────────────╯�[0m
�[1;91mAPIError: �[0mlitellm.APIError: APIError: OpenrouterException - 
�[1m{�[0m�[32m"error"�[0m:�[1m{�[0m�[32m"message"�[0m:�[32m"This request requires more credits, or fewer max_tokens. �[0m
�[32mYou requested up to 64000 tokens, but can only afford 61126. To increase, visit �[0m
�[32mhttps://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c�[0m
�[32m77b117bbc914dc34a4217daa828d08 and adjust the key's weekly �[0m
�[32mlimit"�[0m,�[32m"code"�[0m:�[1;36m402�[0m,�[32m"metadata"�[0m:�[1m{�[0m�[32m"provider_name"�[0m:null�[1m}�[0m�[1m}�[0m,�[32m"user_id"�[0m:�[32m"user_379TDnIlnyH�[0m
�[32mRRxFAu5xIWDgH9LC"�[0m�[1m}�[0m

STDOUT:
Loaded models: ['openrouter/anthropic/claude-haiku-4.5']                        
Using selected model: openrouter/anthropic/claude-haiku-4.5                     
Model: openrouter/anthropic/claude-haiku-4.5, 200K context, 40K max response    
(default, change with --model, for all options see                              
https://holmesgpt.dev/ai-providers)                                             
Refreshing available datasources (toolsets)                                     
Running without kube-config! e=Invalid kube-config file. No configuration found.
Toolset 'kubernetes/kube-lineage-extras' is enabled but was excluded because its
tags ['cluster'] don't match the current mode's tags ['core', 'cli']            
❌ Toolset openshift/core: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
❌ Toolset kubevela/core: `vela version` failed with exit code 127: /bin/sh: 1: 
vela: not found                                                                 
❌ Toolset inspektor-gadget/node: Environment variable ENABLE_INSPEKTOR_GADGET  
was not set                                                                     
❌ Toolset inspektor-gadget/tcpdump: Environment variable                       
ENABLE_INSPEKTOR_GADGET was not set                                             
❌ Toolset slab: Environment variable SLAB_API_KEY was not set                  
❌ Toolset openshift/logs: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
❌ Toolset cilium/core: `cilium status` failed with exit code 127: /bin/sh: 1:  
cilium: not found                                                               
❌ Toolset hubble/observability: `hubble version` failed with exit code 127:    
/bin/sh: 1: hubble: not found                                                   
✅ Toolset kubernetes/kube-prometheus-stack                                     
❌ Toolset openshift/security: `oc version --client` failed with exit code 127: 
/bin/sh: 1: oc: not found                                                       
❌ Toolset openshift/live-metrics: `oc adm top nodes` failed with exit code 127:
/bin/sh: 1: oc: not found                                                       
❌ Toolset argocd/core: Environment variable ARGOCD_AUTH_TOKEN was not set      
✅ Toolset core_investigation                                                   
✅ Toolset internet                                                             
✅ Toolset connectivity_check                                                   
❌ Toolset robusta: Integration with Robusta cloud is disabled                  
❌ Toolset notion: Notion toolset is misconfigured. Authorization header is     
required.                                                                       
❌ Toolset opensearch/query_assist: Environment variable OPENSEARCH_URL was not 
set                                                                             
✅ Toolset kubectl-run                                                          
✅ Toolset skills                                                               
✅ Toolset kubernetes/logs                                                      
✅ Toolset bash                                                                 
✅ Toolset kubernetes/core                                                      
❌ Toolset crossplane/core: `kubectl api-resources --api-group=pkg.crossplane.io
--no-headers 2>/dev/null | grep -q providers` failed with exit code 1           
❌ Toolset kubernetes/krew-extras: `kubectl version --client && kubectl lineage 
--version` failed with exit code 1: error: unknown command "lineage" for        
"kubectl"                                                                       
✅ Toolset docker/core                                                          
❌ Toolset kubernetes/live-metrics: `kubectl top nodes` failed with exit code 1:
The connection to the server localhost:8080 was refused - did you specify the   
right host or port?                                                             
❌ Toolset aks/node-health: `az account show` failed with exit code 1: ERROR:   
Please run 'az login' to setup account.                                         
❌ Toolset aks/core: `az account show` failed with exit code 1: ERROR: Please   
run 'az login' to setup account.                                                
✅ Toolset helm/core                                                            
Toolset statuses are cached to /home/runner/.holmes/toolsets_status.json        
✅ Toolset kubernetes/kube-prometheus-stack                                     
✅ Toolset core_investigation                                                   
✅ Toolset internet                                                             
✅ Toolset connectivity_check                                                   
✅ Toolset kubectl-run                                                          
✅ Toolset bash                                                                 
✅ Toolset skills                                                               
✅ Toolset kubernetes/logs                                                      
✅ Toolset docker/core                                                          
✅ Toolset kubernetes/core                                                      
✅ Toolset helm/core                                                            

�[1;31mGive Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new�[0m
LiteLLM.Info: If you need to debug this error, use `litellm._turn_on_debug()'.

LLM call failed on model=openrouter/anthropic/claude-haiku-4.5 (streaming       
iteration 1): APIError: litellm.APIError: APIError: OpenrouterException -       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 236, in _make_common_sync_call   
    response = sync_httpx_client.post(                                          
               ^^^^^^^^^^^^^^^^^^^^^^^                                          
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1047, in post                        
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1029, in post                        
    response.raise_for_status()                                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/httpx/
_models.py", line 829, in raise_for_status                                      
    raise HTTPStatusError(message, request=request, response=self)              
httpx.HTTPStatusError: Client error '402 Payment Required' for url              
'https://openrouter.ai/api/v1/chat/completions'                                 
For more information check:                                                     
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/402                    
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 3316, in completion                                            
    response = base_llm_http_handler.completion(                                
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 560, in completion               
    response = self._make_common_sync_call(                                     
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 261, in _make_common_sync_call   
    raise self._handle_error(e=e, provider_config=provider_config)              
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 4721, in _handle_error           
    raise provider_config.get_error_class(                                      
litellm.llms.openrouter.common_utils.OpenRouterException:                       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/tool_calling_llm.py", 
line 1093, in call_stream                                                       
    full_response = self.llm.completion(                                        
                    ^^^^^^^^^^^^^^^^^^^^                                        
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/llm.py", line 613, in 
completion                                                                      
    result = litellm_to_use.completion(                                         
             ^^^^^^^^^^^^^^^^^^^^^^^^^^                                         
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1769, in wrapper                                              
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1590, in wrapper                                              
    result = original_function(*args, **kwargs)                                 
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 4411, in completion                                            
    raise exception_type(                                                       
          ^^^^^^^^^^^^^^^                                                       
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2456, in exception_type  
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2389, in exception_type  
    raise APIError(                                                             
litellm.exceptions.APIError: litellm.APIError: APIError: OpenrouterException -  
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              

Traceback (most recent call last):
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 267, in <module>
    main()
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 240, in main
    summary = run_e2e_benchmark(
              ^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 181, in run_e2e_benchmark
    return run_benchmark(cmd, "e2e", iterations, model=model or "default", prompt=prompt)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 136, in run_benchmark
    raise RuntimeError(f"Cold start {benchmark_type} benchmark failed")
RuntimeError: Cold start e2e benchmark failed

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Benchmark PR diagnostic dump

startup-output.log (tail)

Running startup-only benchmark (5 iterations)...
STARTUP iteration 1/5 (cold)...
  Time: 6.25s (cold)
STARTUP iteration 2/5 (warm)...
  Time: 6.25s (warm)
STARTUP iteration 3/5 (warm)...
  Time: 6.27s (warm)
STARTUP iteration 4/5 (warm)...
  Time: 6.26s (warm)
STARTUP iteration 5/5 (warm)...
  Time: 6.31s (warm)

Results saved to startup.json

==================================================
📊 Benchmark Summary (STARTUP)
==================================================
🥶 Cold Start: 6.25s
🔥 Warm Start: 6.27s (mean)
   Min: 6.25s | Max: 6.31s
{
  "benchmark_type": "startup",
  "iterations": 5,
  "cold_start_seconds": 6.249858286999995,
  "warm_mean_seconds": 6.272976330750005,
  "warm_median_seconds": 6.266346937500003,
  "warm_min_seconds": 6.247126092999991,
  "warm_max_seconds": 6.312085355000022,
  "warm_stdev_seconds": 0.02807844545388773,
  "all_times": [
    6.249858286999995,
    6.247126092999991,
    6.272653641000005,
    6.260040234000002,
    6.312085355000022
  ],
  "timestamp": "2026-05-17T20:06:17.118057+00:00",
  "git_sha": "d1de13f2",
  "git_branch": "HEAD",
  "prompt": "",
  "model": ""
}

llm-output.log (tail)

�[31m│�[0m   �[2m2391 �[0m�[2m│   │   │   │   │   │   │   �[0mmessage=�[33mf�[0m�[33m"�[0m�[33mAPIError: �[0m�[33m{�[0mexception_provider�[33m}�[0m�[33m �[0m �[31m│�[0m
�[31m│�[0m   �[2m2392 �[0m�[2m│   │   │   │   │   │   │   �[0mllm_provider=custom_llm_provider,         �[31m│�[0m
�[31m╰──────────────────────────────────────────────────────────────────────────────╯�[0m
�[1;91mAPIError: �[0mlitellm.APIError: APIError: OpenrouterException - 
�[1m{�[0m�[32m"error"�[0m:�[1m{�[0m�[32m"message"�[0m:�[32m"This request requires more credits, or fewer max_tokens. �[0m
�[32mYou requested up to 64000 tokens, but can only afford 61126. To increase, visit �[0m
�[32mhttps://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c�[0m
�[32m77b117bbc914dc34a4217daa828d08 and adjust the key's weekly �[0m
�[32mlimit"�[0m,�[32m"code"�[0m:�[1;36m402�[0m,�[32m"metadata"�[0m:�[1m{�[0m�[32m"provider_name"�[0m:null�[1m}�[0m�[1m}�[0m,�[32m"user_id"�[0m:�[32m"user_379TDnIlnyH�[0m
�[32mRRxFAu5xIWDgH9LC"�[0m�[1m}�[0m

STDOUT:
Loaded models: ['openrouter/anthropic/claude-haiku-4.5']                        
Using selected model: openrouter/anthropic/claude-haiku-4.5                     
Model: openrouter/anthropic/claude-haiku-4.5, 200K context, 40K max response    
(default, change with --model, for all options see                              
https://holmesgpt.dev/ai-providers)                                             
Refreshing available datasources (toolsets)                                     
Running without kube-config! e=Invalid kube-config file. No configuration found.
Toolset 'kubernetes/kube-lineage-extras' is enabled but was excluded because its
tags ['cluster'] don't match the current mode's tags ['core', 'cli']            
❌ Toolset kubevela/core: `vela version` failed with exit code 127: /bin/sh: 1: 
vela: not found                                                                 
❌ Toolset inspektor-gadget/node: Environment variable ENABLE_INSPEKTOR_GADGET  
was not set                                                                     
❌ Toolset inspektor-gadget/tcpdump: Environment variable                       
ENABLE_INSPEKTOR_GADGET was not set                                             
❌ Toolset openshift/live-metrics: `oc adm top nodes` failed with exit code 127:
/bin/sh: 1: oc: not found                                                       
❌ Toolset slab: Environment variable SLAB_API_KEY was not set                  
❌ Toolset openshift/core: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
❌ Toolset openshift/security: `oc version --client` failed with exit code 127: 
/bin/sh: 1: oc: not found                                                       
✅ Toolset kubernetes/kube-prometheus-stack                                     
❌ Toolset openshift/logs: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
✅ Toolset core_investigation                                                   
✅ Toolset internet                                                             
❌ Toolset hubble/observability: `hubble version` failed with exit code 127:    
/bin/sh: 1: hubble: not found                                                   
❌ Toolset argocd/core: Environment variable ARGOCD_AUTH_TOKEN was not set      
✅ Toolset connectivity_check                                                   
❌ Toolset cilium/core: `cilium status` failed with exit code 127: /bin/sh: 1:  
cilium: not found                                                               
❌ Toolset robusta: Integration with Robusta cloud is disabled                  
❌ Toolset opensearch/query_assist: Environment variable OPENSEARCH_URL was not 
set                                                                             
❌ Toolset notion: Notion toolset is misconfigured. Authorization header is     
required.                                                                       
✅ Toolset kubectl-run                                                          
✅ Toolset skills                                                               
✅ Toolset kubernetes/logs                                                      
✅ Toolset bash                                                                 
✅ Toolset kubernetes/core                                                      
❌ Toolset crossplane/core: `kubectl api-resources --api-group=pkg.crossplane.io
--no-headers 2>/dev/null | grep -q providers` failed with exit code 1           
❌ Toolset kubernetes/krew-extras: `kubectl version --client && kubectl lineage 
--version` failed with exit code 1: error: unknown command "lineage" for        
"kubectl"                                                                       
✅ Toolset docker/core                                                          
❌ Toolset kubernetes/live-metrics: `kubectl top nodes` failed with exit code 1:
The connection to the server localhost:8080 was refused - did you specify the   
right host or port?                                                             
✅ Toolset helm/core                                                            
❌ Toolset aks/node-health: `az account show` failed with exit code 1: ERROR:   
Please run 'az login' to setup account.                                         
❌ Toolset aks/core: `az account show` failed with exit code 1: ERROR: Please   
run 'az login' to setup account.                                                
Toolset statuses are cached to /home/runner/.holmes/toolsets_status.json        
✅ Toolset kubernetes/kube-prometheus-stack                                     
✅ Toolset core_investigation                                                   
✅ Toolset internet                                                             
✅ Toolset connectivity_check                                                   
✅ Toolset kubectl-run                                                          
✅ Toolset skills                                                               
✅ Toolset kubernetes/logs                                                      
✅ Toolset bash                                                                 
✅ Toolset docker/core                                                          
✅ Toolset kubernetes/core                                                      
✅ Toolset helm/core                                                            

�[1;31mGive Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new�[0m
LiteLLM.Info: If you need to debug this error, use `litellm._turn_on_debug()'.

LLM call failed on model=openrouter/anthropic/claude-haiku-4.5 (streaming       
iteration 1): APIError: litellm.APIError: APIError: OpenrouterException -       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 236, in _make_common_sync_call   
    response = sync_httpx_client.post(                                          
               ^^^^^^^^^^^^^^^^^^^^^^^                                          
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1047, in post                        
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1029, in post                        
    response.raise_for_status()                                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/httpx/
_models.py", line 829, in raise_for_status                                      
    raise HTTPStatusError(message, request=request, response=self)              
httpx.HTTPStatusError: Client error '402 Payment Required' for url              
'https://openrouter.ai/api/v1/chat/completions'                                 
For more information check:                                                     
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/402                    
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 3316, in completion                                            
    response = base_llm_http_handler.completion(                                
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 560, in completion               
    response = self._make_common_sync_call(                                     
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 261, in _make_common_sync_call   
    raise self._handle_error(e=e, provider_config=provider_config)              
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 4721, in _handle_error           
    raise provider_config.get_error_class(                                      
litellm.llms.openrouter.common_utils.OpenRouterException:                       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/tool_calling_llm.py", 
line 1093, in call_stream                                                       
    full_response = self.llm.completion(                                        
                    ^^^^^^^^^^^^^^^^^^^^                                        
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/llm.py", line 613, in 
completion                                                                      
    result = litellm_to_use.completion(                                         
             ^^^^^^^^^^^^^^^^^^^^^^^^^^                                         
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1769, in wrapper                                              
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1590, in wrapper                                              
    result = original_function(*args, **kwargs)                                 
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 4411, in completion                                            
    raise exception_type(                                                       
          ^^^^^^^^^^^^^^^                                                       
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2456, in exception_type  
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2389, in exception_type  
    raise APIError(                                                             
litellm.exceptions.APIError: litellm.APIError: APIError: OpenrouterException -  
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              

Traceback (most recent call last):
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 267, in <module>
    main()
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 240, in main
    summary = run_e2e_benchmark(
              ^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 181, in run_e2e_benchmark
    return run_benchmark(cmd, "e2e", iterations, model=model or "default", prompt=prompt)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 136, in run_benchmark
    raise RuntimeError(f"Cold start {benchmark_type} benchmark failed")
RuntimeError: Cold start e2e benchmark failed

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Benchmark Master diagnostic dump

startup-output.log (tail)

Running startup-only benchmark (5 iterations)...
STARTUP iteration 1/5 (cold)...
  Time: 6.64s (cold)
STARTUP iteration 2/5 (warm)...
  Time: 6.48s (warm)
STARTUP iteration 3/5 (warm)...
  Time: 6.42s (warm)
STARTUP iteration 4/5 (warm)...
  Time: 6.39s (warm)
STARTUP iteration 5/5 (warm)...
  Time: 6.34s (warm)

Results saved to startup.json

==================================================
📊 Benchmark Summary (STARTUP)
==================================================
🥶 Cold Start: 6.64s
🔥 Warm Start: 6.41s (mean)
   Min: 6.34s | Max: 6.48s
{
  "benchmark_type": "startup",
  "iterations": 5,
  "cold_start_seconds": 6.641066816999967,
  "warm_mean_seconds": 6.406881110500024,
  "warm_median_seconds": 6.4030776305000074,
  "warm_min_seconds": 6.340654252000036,
  "warm_max_seconds": 6.480714929000044,
  "warm_stdev_seconds": 0.05877946891383978,
  "all_times": [
    6.641066816999967,
    6.480714929000044,
    6.418868695000015,
    6.387286566,
    6.340654252000036
  ],
  "timestamp": "2026-05-17T20:06:21.270431+00:00",
  "git_sha": "fa5e0ced",
  "git_branch": "master",
  "prompt": "",
  "model": ""
}

llm-output.log (tail)

�[31m│�[0m   �[2m2391 �[0m�[2m│   │   │   │   │   │   │   �[0mmessage=�[33mf�[0m�[33m"�[0m�[33mAPIError: �[0m�[33m{�[0mexception_provider�[33m}�[0m�[33m �[0m �[31m│�[0m
�[31m│�[0m   �[2m2392 �[0m�[2m│   │   │   │   │   │   │   �[0mllm_provider=custom_llm_provider,         �[31m│�[0m
�[31m╰──────────────────────────────────────────────────────────────────────────────╯�[0m
�[1;91mAPIError: �[0mlitellm.APIError: APIError: OpenrouterException - 
�[1m{�[0m�[32m"error"�[0m:�[1m{�[0m�[32m"message"�[0m:�[32m"This request requires more credits, or fewer max_tokens. �[0m
�[32mYou requested up to 64000 tokens, but can only afford 61126. To increase, visit �[0m
�[32mhttps://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c�[0m
�[32m77b117bbc914dc34a4217daa828d08 and adjust the key's weekly �[0m
�[32mlimit"�[0m,�[32m"code"�[0m:�[1;36m402�[0m,�[32m"metadata"�[0m:�[1m{�[0m�[32m"provider_name"�[0m:null�[1m}�[0m�[1m}�[0m,�[32m"user_id"�[0m:�[32m"user_379TDnIlnyH�[0m
�[32mRRxFAu5xIWDgH9LC"�[0m�[1m}�[0m

STDOUT:
Loaded models: ['openrouter/anthropic/claude-haiku-4.5']                        
Using selected model: openrouter/anthropic/claude-haiku-4.5                     
Model: openrouter/anthropic/claude-haiku-4.5, 200K context, 40K max response    
(default, change with --model, for all options see                              
https://holmesgpt.dev/ai-providers)                                             
Refreshing available datasources (toolsets)                                     
Running without kube-config! e=Invalid kube-config file. No configuration found.
Toolset 'kubernetes/kube-lineage-extras' is enabled but was excluded because its
tags ['cluster'] don't match the current mode's tags ['core', 'cli']            
❌ Toolset openshift/core: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
❌ Toolset inspektor-gadget/node: Environment variable ENABLE_INSPEKTOR_GADGET  
was not set                                                                     
❌ Toolset inspektor-gadget/tcpdump: Environment variable                       
ENABLE_INSPEKTOR_GADGET was not set                                             
❌ Toolset openshift/live-metrics: `oc adm top nodes` failed with exit code 127:
/bin/sh: 1: oc: not found                                                       
❌ Toolset slab: Environment variable SLAB_API_KEY was not set                  
❌ Toolset kubevela/core: `vela version` failed with exit code 127: /bin/sh: 1: 
vela: not found                                                                 
❌ Toolset openshift/logs: `oc version --client` failed with exit code 127:     
/bin/sh: 1: oc: not found                                                       
✅ Toolset kubernetes/kube-prometheus-stack                                     
❌ Toolset cilium/core: `cilium status` failed with exit code 127: /bin/sh: 1:  
cilium: not found                                                               
❌ Toolset openshift/security: `oc version --client` failed with exit code 127: 
/bin/sh: 1: oc: not found                                                       
❌ Toolset argocd/core: Environment variable ARGOCD_AUTH_TOKEN was not set      
✅ Toolset core_investigation                                                   
❌ Toolset robusta: Integration with Robusta cloud is disabled                  
❌ Toolset hubble/observability: `hubble version` failed with exit code 127:    
/bin/sh: 1: hubble: not found                                                   
✅ Toolset internet                                                             
✅ Toolset connectivity_check                                                   
❌ Toolset notion: Notion toolset is misconfigured. Authorization header is     
required.                                                                       
❌ Toolset opensearch/query_assist: Environment variable OPENSEARCH_URL was not 
set                                                                             
✅ Toolset kubectl-run                                                          
✅ Toolset bash                                                                 
✅ Toolset skills                                                               
✅ Toolset kubernetes/logs                                                      
✅ Toolset kubernetes/core                                                      
❌ Toolset crossplane/core: `kubectl api-resources --api-group=pkg.crossplane.io
--no-headers 2>/dev/null | grep -q providers` failed with exit code 1           
❌ Toolset kubernetes/krew-extras: `kubectl version --client && kubectl lineage 
--version` failed with exit code 1: error: unknown command "lineage" for        
"kubectl"                                                                       
❌ Toolset kubernetes/live-metrics: `kubectl top nodes` failed with exit code 1:
The connection to the server localhost:8080 was refused - did you specify the   
right host or port?                                                             
✅ Toolset docker/core                                                          
✅ Toolset helm/core                                                            
❌ Toolset aks/node-health: `az account show` failed with exit code 1: ERROR:   
Please run 'az login' to setup account.                                         
❌ Toolset aks/core: `az account show` failed with exit code 1: ERROR: Please   
run 'az login' to setup account.                                                
Toolset statuses are cached to /home/runner/.holmes/toolsets_status.json        
✅ Toolset kubernetes/kube-prometheus-stack                                     
✅ Toolset core_investigation                                                   
✅ Toolset internet                                                             
✅ Toolset bash                                                                 
✅ Toolset connectivity_check                                                   
✅ Toolset kubectl-run                                                          
✅ Toolset skills                                                               
✅ Toolset kubernetes/logs                                                      
✅ Toolset docker/core                                                          
✅ Toolset kubernetes/core                                                      
✅ Toolset helm/core                                                            

�[1;31mGive Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new�[0m
LiteLLM.Info: If you need to debug this error, use `litellm._turn_on_debug()'.

LLM call failed on model=openrouter/anthropic/claude-haiku-4.5 (streaming       
iteration 1): APIError: litellm.APIError: APIError: OpenrouterException -       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 236, in _make_common_sync_call   
    response = sync_httpx_client.post(                                          
               ^^^^^^^^^^^^^^^^^^^^^^^                                          
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1047, in post                        
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/http_handler.py", line 1029, in post                        
    response.raise_for_status()                                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/httpx/
_models.py", line 829, in raise_for_status                                      
    raise HTTPStatusError(message, request=request, response=self)              
httpx.HTTPStatusError: Client error '402 Payment Required' for url              
'https://openrouter.ai/api/v1/chat/completions'                                 
For more information check:                                                     
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/402                    
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 3316, in completion                                            
    response = base_llm_http_handler.completion(                                
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 560, in completion               
    response = self._make_common_sync_call(                                     
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 261, in _make_common_sync_call   
    raise self._handle_error(e=e, provider_config=provider_config)              
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/llms/custom_httpx/llm_http_handler.py", line 4721, in _handle_error           
    raise provider_config.get_error_class(                                      
litellm.llms.openrouter.common_utils.OpenRouterException:                       
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              
                                                                                
During handling of the above exception, another exception occurred:             
                                                                                
Traceback (most recent call last):                                              
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/tool_calling_llm.py", 
line 1093, in call_stream                                                       
    full_response = self.llm.completion(                                        
                    ^^^^^^^^^^^^^^^^^^^^                                        
  File "/home/runner/work/holmesgpt/holmesgpt/holmes/core/llm.py", line 613, in 
completion                                                                      
    result = litellm_to_use.completion(                                         
             ^^^^^^^^^^^^^^^^^^^^^^^^^^                                         
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1769, in wrapper                                              
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/utils.py", line 1590, in wrapper                                              
    result = original_function(*args, **kwargs)                                 
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                 
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/main.py", line 4411, in completion                                            
    raise exception_type(                                                       
          ^^^^^^^^^^^^^^^                                                       
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2456, in exception_type  
    raise e                                                                     
  File                                                                          
"/home/runner/work/holmesgpt/holmesgpt/.venv/lib/python3.12/site-packages/litell
m/litellm_core_utils/exception_mapping_utils.py", line 2389, in exception_type  
    raise APIError(                                                             
litellm.exceptions.APIError: litellm.APIError: APIError: OpenrouterException -  
{"error":{"message":"This request requires more credits, or fewer max_tokens.   
You requested up to 64000 tokens, but can only afford 61126. To increase, visit 
https://openrouter.ai/workspaces/default/keys/77659021ba1e42d59eeb78414ffdc38f2c
77b117bbc914dc34a4217daa828d08 and adjust the key's weekly                      
limit","code":402,"metadata":{"provider_name":null}},"user_id":"user_379TDnIlnyH
RRxFAu5xIWDgH9LC"}                                                              

Traceback (most recent call last):
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 267, in <module>
    main()
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 240, in main
    summary = run_e2e_benchmark(
              ^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 181, in run_e2e_benchmark
    return run_benchmark(cmd, "e2e", iterations, model=model or "default", prompt=prompt)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/holmesgpt/holmesgpt/scripts/cli_performance_benchmark.py", line 136, in run_benchmark
    raise RuntimeError(f"Cold start {benchmark_type} benchmark failed")
RuntimeError: Cold start e2e benchmark failed

This branch has not been deployed

No deployments
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.

2 participants