



  

<!DOCTYPE html>
<html
  lang="en"
  
  data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
  data-a11y-animated-images="system" data-a11y-link-underlines="true"
  
  >




  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  <link rel="preconnect" href="https://avatars.githubusercontent.com">

<script type="importmap">{"imports":{"react":"https://github.githubassets.com/assets/react-e27d1b3e03961e68.js","react-dom":"https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js","react-dom/client":"https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js","react-is":"https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js","react-reconciler":"https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js","react/compiler-runtime":"https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js","react/jsx-dev-runtime":"https://github.githubassets.com/assets/react-jsx-dev-runtime-ea55d68667d559e5.js","react/jsx-runtime":"https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js","scheduler":"https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js"}}</script>
<meta name="react-profiling" content="0" data-turbo-transient="true" />
<meta name="react-import-map" content="react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@777f63f87cd0" data-turbo-track="reload" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-e27d1b3e03961e68.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js" />

  


  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-0f910d8806d5761b.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-a7abd4d4c49ac593.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-5fc4c4a9cb41e596.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-ed0cee9214dedabd.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-78a2491d538dab5a.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-c26b63d7c532d0a2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-a6f60cea68c08405.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-f66faf28b2ea18b6.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-6701f6218c53cf5b.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-7037fa46ae124d97.css" />

  <style type="text/css">
    :root {
      --tab-size-preference: 4;
    }

    pre, code {
      tab-size: var(--tab-size-preference);
    }
  </style>

    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-97df7784617ce1ea.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-9be9fe6313f476af.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-62747e27e61258dc.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-b04ca6fccda778e2.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-72bd7d974b5ac1cc.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-4c5c0895f723f870.css" />

  

  <script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_caches_react_shell","actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","actions_runners_react_shell","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","async_conversion_coverage_enabled","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","code_quality_enablement_banner_targeting","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","copilot_agent_snippy","copilot_ahp_tool_call_timing","copilot_api_agentic_issue_marshal_yaml","copilot_automation_repo_mcp_servers","copilot_automations_pagination","copilot_base_model_policy_row","copilot_chat_auto_mode_v2","copilot_chat_clear_model_selection_for_default_change","copilot_chat_early_task_provisioning","copilot_chat_persist_session_drafts","copilot_chat_vision_dotcom_chat_ga_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_hide_hovercard","copilot_immersive_task_hyperlinking","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_awps_batching","copilot_mission_control_early_stop","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_discussion_comment_trigger","copilot_swe_agent_discussion_opened_trigger","copilot_swe_agent_discussion_updated_trigger","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_assigned_trigger","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_issue_labeled_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_assigned_trigger","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_labeled_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_ready_for_review_trigger","copilot_swe_agent_pull_request_review_requested_trigger","copilot_swe_agent_pull_request_review_submitted_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_sub_issue_added_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_task_scoped_alive_channel","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_web_integration_cutover","copilot_workbench_sunset_redirect","dashboard_agents_module_auth_token_check","dashboard_indexeddb_caching","fgpat_permissions_selector_redesign","glc_code_quality_repo_settings_workflow_config","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_ubb_individual_budget_banner","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_team_vs_personal","issue_relative_time_micro","issue_viewer_paved_path","issues_expanded_file_types","issues_hide_closed_sub_issues","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","labels_archiving","labels_archiving_info","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_cookie_consent_banner","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_header_feedback","milestone_closed_issues_prioritization","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","primer_react_timeline_list_semantics","prs_copilot_app_open_action","prs_css_anchor_positioning","pull_request_copilot_attribution_header","pull_request_overview_merge_control","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_navigation_shortcuts","pull_request_virtualization_image_estimate","pull_request_virtualization_loader_batching","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_logged_out_repository_header","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_turbo","repo_issues_sidebar_layout","repo_pulls_dashboard_declutter","repo_pulls_dashboard_ga","repo_pulls_dashboard_persistence","repos_contributors_limited_default_range","review_involves_filter","rule_ignored_file_paths","rulesets_actor_list_editor","sample_network_conn_type","security_center_artifact_filters_popover","see_who_reacted","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","set_sha256_on_repo_creation_form","site_banner_desktop_copilot_app","site_ghca_pixel_mona","site_github_app_ga_page","site_github_app_ga_page_highlight","site_github_app_mobile_native_share","site_global_banner_dev_days_attendee","site_global_nav_spark_models_removed","speculation_rules_ui_service","suggest_custom_property_values_copilot","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","update_issue_suggestions","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workstream_plugin_bootstrap"],"githubDomain":"https://github.com","copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}</script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/high-contrast-cookie-3663bcaacc724f4c.js"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-721126455a2225e3.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-156c6259e31cc551.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-f6ce38f47c2e1d56.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-804a14996977c014.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-fb5d13278eb42203.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tp-ea613009a991e211.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-107a7753389a8a2d.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.25915bc98fb322a6.module.css" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-52ed81112a548e10.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e8810f64c443fb9b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-fe7e72f699fdf493.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by-9da36843ba9d191d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-9a1160b939f2cd52.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3h-55903cf2303047ad.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hk-0d35a1220587d888.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-c964b1a3671f2a92.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-1d800d09e9a8720a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-1ad12374da9777f2.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-531d35538b61fd0d.js" defer="defer"></script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-bf5e3b2aee197122.js" defer="defer"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-5e0b3ae3c4036207.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-752acdc868e2da64.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-e87ffadced20a3c9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-75bc55d9971828b7.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a9-34620c7b13885011.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-643d2814115561a9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t6-5d0869970ac0aac0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pb0-a5c5ec36d311aeef.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6n-afcf86ccabc4cad2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/zj-f08c728cf00018aa.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/o6-2a1c68d269710ee9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/h9a-c6405aa090de0e84.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/vy6-3c3e6e96629c2ce4.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/js-4eb97d5803e657c0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/g7-baf9e817ae102b01.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/unc-96389cade7bad821.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/nu-65322a6997c6c93c.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-5dd3809b5c8bac3c.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.3792087592bf207a.module.css" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-menu-4318f0f4c608f3dd.js" defer="defer"></script>
  
  <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-7afef75d393cf294.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/op-acddf38478d45ef9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ncx-461e4b09f2e67ee5.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qmp-c7cfba40cf5a93b0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j6-148a74299e5a01ab.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t7l-a52ba56147f77909.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4u-ec4874f70bfd5d76.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/s0-481bd34f90bc2bd7.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/y5-ed17e73b4c0bd15e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/n4-be595475cdbf7d4b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j8-23a3c5ff8eef412d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/la-27679061f16e1495.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/iu-9806a0291a782cbe.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ftx-39fb490e3c1d778f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/zi-32a0c3c081ea5cce.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sg-7a5d50475874c0e1.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pd-6a8710840033e042.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/86g-ec28c25ed7d5de06.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sn-1bab7384818953b7.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/iq-6d4ecf6d2fb6993c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p2-7d8e7cee5b46cb45.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7d-2e3cc25d719f3a95.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4d-76d8acdf21a33266.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tsb-e0f6288ab985d9d2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/lf-910ef220ce85c660.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2j-2f19c1afd2ceaf93.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/me-f1476ec44a29f34a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p2u-e654a57b1a70c47d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/5d-d97cc006d4da4d9b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/r5-38f013bc2c0fd298.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/r6s-9039f5619230a653.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/9e-cece06724bf6ea3b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/x9-3e077a3a37a73f9f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pj-87629cb5389d7663.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/eq-3764fd5f66494289.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/13-d889936dff7e5c0f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/44-8193eea4af825ead.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/v4-9c1327d212e52a0d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/id-7f39706ba9007db6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ah-271362a1ed227d03.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/s1g-d434d712bca59d3a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/vz-d7f4a583896f872e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/47-c8c0ce2700acc5be.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-view-4118a687d0150749.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.2d881b4d4a503d1c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/pj.75627bfeb9ceb1da.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ah.2623f7c6ecbe2ecd.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/47.78770c57a48a810c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-view.37656c95a9729fb9.module.css" />


  <title>hermes-agent/RELEASE_v0.5.0.md at main · j32ryc/hermes-agent · GitHub</title>



  <meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient>
  <meta name="route-controller" content="blob" data-turbo-transient>
  <meta name="route-action" content="show" data-turbo-transient>
  <meta name="fetch-nonce" content="v2:e067a781-2940-ba33-7700-8bfff59b364d">

    
  <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">


  <meta name="request-id" content="D614:256C02:ACE2B7B:E18217B:6ACA5FFE" data-pjax-transient="true"/><meta name="html-safe-nonce" content="4425f19233c7a3510f3fa4c4ed73eb468a8fb34dfbbf20cb30e491a1a7c37071" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENjE0OjI1NkMwMjpBQ0UyQjdCOkUxODIxN0I6NkFDQTVGRkUiLCJ2aXNpdG9yX2lkIjoiNjYwNDU1NjU1Nzg2OTUzOTMyNiIsInJlZ2lvbl9lZGdlIjoiZnJhIiwicmVnaW9uX3JlbmRlciI6ImZyYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="473f4dec46680428c13ea5bd3b761157e625255c30bb5f4a2b689af26161fa08" data-pjax-transient="true"/>


    <meta name="hovercard-subject-tag" content="repository:1207920400" data-turbo-transient>


  <meta name="github-keyboard-shortcuts" content="repository,source-code,file-tree,copilot" data-turbo-transient="true" />
  

  <meta name="selected-link" value="repo_source" data-turbo-transient>
  <link rel="assets" href="https://github.githubassets.com/">

    <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">

<meta name="octolytics-url" content="https://collector.github.com/github/collect" />





  <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-turbo-transient="true" />

  




    <meta name="user-login" content="">

  

    <meta name="viewport" content="width=device-width">

    

      <meta name="description" content="The agent that grows with you. Contribute to j32ryc/hermes-agent development by creating an account on GitHub.">

      <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">

    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <meta property="fb:app_id" content="1401488693436528">
    <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md" />

      <meta name="twitter:image" content="https://opengraph.githubassets.com/cf066fc2e80b6f14657d19515107b80b222f8f6e8af53f02470dad32cd29a494/j32ryc/hermes-agent" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="hermes-agent/RELEASE_v0.5.0.md at main · j32ryc/hermes-agent" /><meta name="twitter:description" content="The agent that grows with you. Contribute to j32ryc/hermes-agent development by creating an account on GitHub." />
  <meta property="og:image" content="https://opengraph.githubassets.com/cf066fc2e80b6f14657d19515107b80b222f8f6e8af53f02470dad32cd29a494/j32ryc/hermes-agent" /><meta property="og:image:alt" content="The agent that grows with you. Contribute to j32ryc/hermes-agent development by creating an account on GitHub." /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="hermes-agent/RELEASE_v0.5.0.md at main · j32ryc/hermes-agent" /><meta property="og:url" content="https://github.com/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md" /><meta property="og:description" content="The agent that grows with you. Contribute to j32ryc/hermes-agent development by creating an account on GitHub." />
  




      <meta name="hostname" content="github.com">



        <meta name="expected-hostname" content="github.com">


  <meta http-equiv="x-pjax-version" content="d05be8f8b6905b6460fc264e80447721dfee1e32cf9e4291c4bf58f160c9f705" data-turbo-track="reload">
  <meta http-equiv="x-pjax-csp-version" content="c4a65e47b0c850e1157ae8e66298070851d7e3b558038de5a3b4ff7a93e630ed" data-turbo-track="reload">
  <meta http-equiv="x-pjax-css-version" content="a80b0545b169f440b929ce2b977c76b6988f014cca6513fb83c5df6581635fb3" data-turbo-track="reload">
  <meta http-equiv="x-pjax-js-version" content="af51c6f9d659be0324665373df3ee542f817dbd7f66f352a087935f2ceabe545" data-turbo-track="reload">

  <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">

      <meta name="turbo-cache-control" content="no-cache" data-turbo-transient>

    <meta data-hydrostats="publish">

  <meta name="go-import" content="github.com/j32ryc/hermes-agent git https://github.com/j32ryc/hermes-agent.git">

  <meta name="octolytics-dimension-user_id" content="8653014" /><meta name="octolytics-dimension-user_login" content="j32ryc" /><meta name="octolytics-dimension-repository_id" content="1207920400" /><meta name="octolytics-dimension-repository_nwo" content="j32ryc/hermes-agent" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="true" /><meta name="octolytics-dimension-repository_parent_id" content="1024554267" /><meta name="octolytics-dimension-repository_parent_nwo" content="NousResearch/hermes-agent" /><meta name="octolytics-dimension-repository_network_root_id" content="1024554267" /><meta name="octolytics-dimension-repository_network_root_nwo" content="NousResearch/hermes-agent" />
  



    

    <meta name="turbo-body-classes" content="logged-out env-production page-responsive">
  <meta name="disable-turbo" content="false">


  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">


  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <meta name="release" content="3b1bb5b10f5c7fd1769d56e38b15dfddb34052a8" data-turbo-track="reload">
  <meta name="ui-target" content="full">

  <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
  <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon">

<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />


  <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

  </head>

  <body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
    <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
      <div id="__primerPortalRoot__" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div>
      

    <div class="position-relative header-wrapper js-header-wrapper ">
      <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>

      <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
    <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>      
      <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/19-c660652a0a1639be.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-47c5223d8d1af8ef.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.2d881b4d4a503d1c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.d53d993320d57e14.module.css" />

<react-partial
  partial-name="keyboard-shortcuts-dialog"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>





      

          <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-install-banner-partial-3c87deb7f0f20434.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.2d881b4d4a503d1c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-install-banner-partial.7b357012e82003e7.module.css" />

<react-partial
  partial-name="app-install-banner-partial"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>


          

                <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/et9-7eeec247c287fca4.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/94v-e20946127faa8f6e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz5-892a9e99cc92858d.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jag-441e702bfd4c7904.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hw-8ce7888b57d0a23c.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/rq-0ec82a12cf538a4d.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/1m-a7a4c022483b2713.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-70703fe17422eb58.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.2d881b4d4a503d1c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.fbc35b3d20e988ff.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/1m.fec8b575d0e5234f.module.css" />

<react-partial
  partial-name="marketing-header"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2Fj32ryc%2Fhermes-agent%2Fblob%2Fmain%2FRELEASE_v0.5.0.md","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow\u0026source=header-repo\u0026source_repo=j32ryc%2Fhermes-agent","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://github.com/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md\",\"user_id\":null}}","auth_hydro_click_hmac":"9653dddde5543cc210adce0b3d1d0886299219f6150b4dab2e35b35447b3f9db","overlay":false,"fixed":false}}</script>
  <div data-target="react-partial.reactRoot"><div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out" role="banner" data-marketing-header="true" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark" data-is-top="true"><h2 class="MarketingHeader-module__visuallyHidden__sqKsl">Navigation Menu</h2><button type="button" class="MarketingHeader-module__backdrop__sw4RU" aria-label="Close navigation menu"></button><div class="MarketingHeader-module__bar__mBSyE"><div class="MarketingHeader-module__topRow__yeury"><div class="MarketingHeader-module__toggleSlot__hDxbh"><button type="button" class="HeaderMenuToggle-module__toggle__i8EiC" aria-label="Toggle navigation" aria-expanded="false"><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span></button></div><a href="/" aria-label="Homepage" class="HeaderLogo-module__logo__UFyHI" data-analytics-event="{&quot;action&quot;:&quot;homepage&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;logo&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;homepage_link_logo_header&quot;}"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><div class="AuthCTAs-module__mobileActions__NNzeV"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fj32ryc%2Fhermes-agent%2Fblob%2Fmain%2FRELEASE_v0.5.0.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9653dddde5543cc210adce0b3d1d0886299219f6150b4dab2e35b35447b3f9db"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_3dd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_3dd_">Appearance settings</div></div></div><div class="MarketingHeader-module__menu__GIy3y"><div class="MarketingHeader-module__menuWrapper__owstH"><nav class="MarketingNavigation-module__nav__W0KYY" aria-label="Global"><ul class="MarketingNavigation-module__list__tFbMb"><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_nd_">Platform<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5knd_">AI CODE CREATION</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot" data-analytics-event="{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>GitHub Copilot</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Write better code with AI</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/ai/github-app" data-analytics-event="{&quot;action&quot;:&quot;github_copilot_app&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_app_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.766 11.328c-2.063-.25-3.516-1.734-3.516-3.656 0-.781.281-1.625.75-2.188-.203-.515-.172-1.609.063-2.062.625-.078 1.468.25 1.968.703.594-.187 1.219-.281 1.985-.281.765 0 1.39.094 1.953.265.484-.437 1.344-.765 1.969-.687.218.422.25 1.515.046 2.047.5.593.766 1.39.766 2.203 0 1.922-1.453 3.375-3.547 3.64.531.344.89 1.094.89 1.954v1.625c0 .468.391.734.86.547C13.781 14.359 16 11.53 16 8.03 16 3.61 12.406 0 7.984 0 3.563 0 0 3.61 0 8.031a7.88 7.88 0 0 0 5.172 7.422c.422.156.828-.125.828-.547v-1.25c-.219.094-.5.156-.75.156-1.031 0-1.64-.562-2.078-1.609-.172-.422-.36-.672-.719-.719-.187-.015-.25-.093-.25-.187 0-.188.313-.328.625-.328.453 0 .844.281 1.25.86.313.452.64.655 1.031.655s.641-.14 1-.5c.266-.265.47-.5.657-.656"></path></svg>GitHub Copilot app</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Direct agents from issue to merge</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/mcp" data-analytics-event="{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.52 1.12a3.578 3.578 0 0 1 6.078 2.98 3.578 3.578 0 0 1 2.982 6.08l-3.292 3.293a.252.252 0 0 0 0 .354l.843.843a.749.749 0 1 1-1.06 1.06l-.844-.843a1.75 1.75 0 0 1 0-2.474L13.52 9.12a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0L7.731 9.03A.75.75 0 0 1 6.67 7.97l2.85-2.85a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0l-4.799 4.8A.75.75 0 0 1 .72 5.92Z"></path><path d="M7.52 3.12a.749.749 0 1 1 1.06 1.06L5.731 7.03A2.079 2.079 0 0 0 8.67 9.97l2.85-2.85a.749.749 0 1 1 1.06 1.06l-2.849 2.85A3.578 3.578 0 0 1 4.67 5.97Z"></path></svg>MCP Registry</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Integrate external tools</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9knd_">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/actions" data-analytics-event="{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path></svg>Actions</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Automate any workflow</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/codespaces" data-analytics-event="{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Instant dev environments</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/issues" data-analytics-event="{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg>Issues</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Plan and track work</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-review" data-analytics-event="{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>Code Review</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Manage code changes</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-quality" data-analytics-event="{&quot;action&quot;:&quot;code_quality&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_quality_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codescan-checkmark NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.28 6.28a.75.75 0 1 0-1.06-1.06L6.25 8.19l-.97-.97a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.06 0l3.5-3.5Z"></path><path d="M7.5 15a7.5 7.5 0 1 1 5.807-2.754l2.473 2.474a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2.474-2.473A7.472 7.472 0 0 1 7.5 15Zm0-13.5a6 6 0 1 0 4.094 10.386.748.748 0 0 1 .293-.292 6.002 6.002 0 0 0 1.117-6.486A6.002 6.002 0 0 0 7.5 1.5Z"></path></svg>Code Quality</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enforce quality at merge</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dknd_">APPLICATION SECURITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Find and fix vulnerabilities</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/code-security" data-analytics-event="{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>Code security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Secure your code as you build</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>Secret protection</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Stop leaks before they start</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_hknd_">EXPLORE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_hknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/why-github" data-analytics-event="{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog" data-analytics-event="{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog/changelog" data-analytics-event="{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Changelog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/marketplace" data-analytics-event="{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/features" data-analytics-event="{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all features</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_17d_">Solutions<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_17d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5l7d_">BY COMPANY SIZE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Enterprises</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/team" data-analytics-event="{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Small and medium teams</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise/startups" data-analytics-event="{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Startups</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9l7d_">BY USE CASE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">App Modernization</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevSecOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">CI/CD</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/use-case" data-analytics-event="{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all use cases</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dl7d_">BY INDUSTRY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dl7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/healthcare" data-analytics-event="{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Healthcare</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/financial-services" data-analytics-event="{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Financial services</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Manufacturing</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/government" data-analytics-event="{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Government</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/industry" data-analytics-event="{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all industries</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions" data-analytics-event="{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all solutions</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_1nd_">Resources<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_1nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5lnd_">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=ai" data-analytics-event="{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Software Development</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=security" data-analytics-event="{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources/articles" data-analytics-event="{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all topics</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9lnd_">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/customer-stories" data-analytics-event="{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer stories</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/events" data-analytics-event="{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Events &amp; webinars</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/whitepapers" data-analytics-event="{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Ebooks &amp; reports</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/executive-insights" data-analytics-event="{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Business insights</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://skills.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Skills</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dlnd_">SUPPORT &amp; SERVICES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dlnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://support.github.com" data-analytics-event="{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer support</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/orgs/community/discussions" data-analytics-event="{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Community forum</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trust-center" data-analytics-event="{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trust center</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources" data-analytics-event="{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all resources</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_27d_">Open Source<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_27d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5m7d_">COMMUNITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/open-source/sponsors" data-analytics-event="{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.586 1C12.268 1 13.5 2.37 13.5 4.25c0 1.745-.996 3.359-2.622 4.831-.166.15-.336.297-.509.438l1.116 5.584a.75.75 0 0 1-.991.852l-2.409-.876a.25.25 0 0 0-.17 0l-2.409.876a.75.75 0 0 1-.991-.852L5.63 9.519a13.78 13.78 0 0 1-.51-.438C3.497 7.609 2.5 5.995 2.5 4.25 2.5 2.37 3.732 1 5.414 1c.963 0 1.843.403 2.474 1.073L8 2.198l.112-.125a3.385 3.385 0 0 1 2.283-1.068L10.586 1Zm-3.621 9.495-.718 3.594 1.155-.42a1.75 1.75 0 0 1 1.028-.051l.168.051 1.154.42-.718-3.592c-.199.13-.37.235-.505.314l-.169.097a.75.75 0 0 1-.72 0 9.54 9.54 0 0 1-.515-.308l-.16-.105ZM10.586 2.5c-.863 0-1.611.58-1.866 1.459-.209.721-1.231.721-1.44 0C7.025 3.08 6.277 2.5 5.414 2.5 4.598 2.5 4 3.165 4 4.25c0 1.23.786 2.504 2.128 3.719.49.443 1.018.846 1.546 1.198l.325.21.076-.047.251-.163a13.341 13.341 0 0 0 1.546-1.198C11.214 6.754 12 5.479 12 4.25c0-1.085-.598-1.75-1.414-1.75Z"></path></svg>GitHub Sponsors</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Fund open source developers</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9m7d_">PROGRAMS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://securitylab.github.com" data-analytics-event="{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security Lab</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://maintainers.github.com" data-analytics-event="{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Maintainer Community</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://stars.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_stars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_stars_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Stars</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://archiveprogram.github.com" data-analytics-event="{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Archive Program</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dm7d_">REPOSITORIES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dm7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/topics" data-analytics-event="{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Topics</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trending" data-analytics-event="{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trending</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/collections" data-analytics-event="{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_2nd_">Enterprise<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_2nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5mnd_">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>Enterprise platform</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">AI-powered developer platform</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9mnd_">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade security features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot/copilot-business" data-analytics-event="{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>Copilot for Business</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade AI features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise/premium-support" data-analytics-event="{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Premium Support</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade 24/7 support</span></span></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}" class="MarketingNavigation-module__navLink__hUomM">Pricing</a></li></ul></nav><div class="MarketingHeader-module__ctaContainer__tBmPz"><div class="HeaderSearch-module__searchSlot__oVOUS"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderSearch-module__trigger__zsF9q" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="Search or jump to, type / to search" data-analytics-event="{&quot;action&quot;:&quot;searchbar&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;context&quot;:&quot;global&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"><span class="HeaderSearch-module__content__kMpxU"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search HeaderSearch-module__icon__wcrHX" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg><span class="HeaderSearch-module__label__d1iWG">Search</span><kbd class="HeaderSearch-module__kbd__HNG0o" aria-hidden="true">/</kbd></span></span></span></button><div class="d-none"></div></div><div class="AuthCTAs-module__signInWrap__q2P60"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq AuthCTAs-module__desktopActionGap__UZuXT AuthCTAs-module__hiddenBelowLg__BfKBw" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fj32ryc%2Fhermes-agent%2Fblob%2Fmain%2FRELEASE_v0.5.0.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9653dddde5543cc210adce0b3d1d0886299219f6150b4dab2e35b35447b3f9db"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a></div><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo&amp;source_repo=j32ryc%2Fhermes-agent" data-analytics-event="{&quot;action&quot;:&quot;sign_up&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_up_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9653dddde5543cc210adce0b3d1d0886299219f6150b4dab2e35b35447b3f9db"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a">Sign up</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_fbd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_fbd_">Appearance settings</div></div></div></div></div><div class="MarketingHeader-module__bottomBorder__uZT38" aria-hidden="true"></div></header></div></div>
</react-partial>



      <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
  
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>

    <button id="icon-button-b412a26d-1877-47f4-8720-fdf251fec2f1" aria-labelledby="tooltip-9308fc43-003b-4b24-833a-2e341e42f44e" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button><tool-tip id="tooltip-9308fc43-003b-4b24-833a-2e341e42f44e" for="icon-button-b412a26d-1877-47f4-8720-fdf251fec2f1" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>


  
</div>
    </div>

  <div id="start-of-content" class="show-on-focus"></div>








    <div id="js-flash-container" class="flash-container" data-turbo-replace>






  <template class="js-flash-template">
    
<div class="flash flash-full   {{ className }}">
  <div >
    <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    <div aria-atomic="true" role="alert" class="js-flash-alert">
      
      <div>{{ message }}</div>

    </div>
  </div>
</div>
  </template>
</div>


    






  <div
    class="application-main "
    data-commit-hovercards-enabled
    data-discussion-hovercards-enabled
    data-issue-and-pr-hovercards-enabled
    data-project-hovercards-enabled
  >
        <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
    <main id="js-repo-pjax-container" >
      
      








  

    <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ym-6bc2c9bf8112c038.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sk2-8deeef9351be3911.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ni-3e194d222c7770bf.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7x-71d30cb240cd901f.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wwk-ad869086822937b1.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a1-9f79841ecac1da8e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wzg-40a3213b3e83400b.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/5f-64f8e7d5bcbd4787.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/z5-b53a93078d026f1e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/8h-cef26f68c1331011.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fq-3ce13a77e863807a.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a7-596b507bd20acddc.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xfx-c82d8352413aea0a.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j4-b3a9e87fa7878a98.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/global-nav-bar-29c7aef68ee9db41.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.2d881b4d4a503d1c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/pj.75627bfeb9ceb1da.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-nav-bar.2f2560cba06ab359.module.css" />

<react-partial
  partial-name="global-nav-bar"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"contextRegion":{"crumbs":[{"crumb_type":"user","label":"j32ryc","is_root":false,"href":"/j32ryc"},{"crumb_type":"repository","label":"hermes-agent","is_root":false,"octicon":"repo-forked","href":"/j32ryc/hermes-agent"}],"localNavigation":[{"id":"code","icon":"code","label":"Code","href":"/j32ryc/hermes-agent","selectedLinks":["repo_source","repo_downloads","repo_commits","repo_releases","repo_tags","repo_branches","repo_packages","repo_deployments","repo_attestations"],"popoverTarget":false,"commandId":"repositories:go-to-code","reactNav":{"appTarget":"code-view","anchor":"code-view-repo-link"},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"pull-requests","icon":"git-pull-request","label":"Pull requests","href":"/j32ryc/hermes-agent/pulls","selectedLinks":["repo_pulls","checks"],"count":0,"popoverTarget":false,"commandId":"repositories:go-to-pull-requests","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"actions","icon":"play","label":"Actions","href":"/j32ryc/hermes-agent/actions","selectedLinks":["repo_actions"],"popoverTarget":false,"commandId":"repositories:go-to-actions","reactNav":{"appTarget":"actions-workflows","anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"projects","icon":"table","label":"Projects","href":"/j32ryc/hermes-agent/projects","selectedLinks":["repo_projects","new_repo_project","repo_project"],"popoverTarget":false,"commandId":"repositories:go-to-projects","reactNav":{"appTarget":"repo","anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"security-and-quality","icon":"shield","label":"Security and quality","href":"/j32ryc/hermes-agent/security","selectedLinks":["security","overview","alerts","policy","token_scanning","code_scanning"],"count":0,"popoverTarget":false,"commandId":"repositories:go-to-security","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"insights","icon":"graph","label":"Insights","href":"/j32ryc/hermes-agent/pulse","selectedLinks":["repo_graphs","repo_contributors","dependency_graph","dependabot_updates","pulse","people","community"],"popoverTarget":false,"commandId":"repositories:go-to-insights","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}}],"localNavigationUpdateChannel":null,"selectedLink":"repo_source"},"owner":null,"headerLogo":{"href":"/","aria-label":"Homepage "},"notifications":{"indicatorMode":"disabled","websocketChannel":null,"fetchIndicatorSrc":"/notifications/indicator","fetchIndicatorEnabled":false},"issues":{"href":"/issues"},"pulls":{"href":"/pulls"},"contributedRepos":{"href":"/repos"},"copilot":{"show":false,"showAgentsButton":false,"showRelaunchAnnouncement":false,"copilotChatUrl":null,"copilotApiUrl":"https://api.githubcopilot.com"},"search":{"show":true,"showCommandPalette":false,"isSearchPage":false,"isJumpToSearch":false,"searchContext":{"scope":"repo:j32ryc/hermes-agent","current_repo_name":"hermes-agent","current_repo_nwo":"j32ryc/hermes-agent","user_id":"j32ryc"}},"commandPalette":null,"enterpriseBar":{"show":false},"globalTransactionalMessage":[],"payloadsUrl":"/_global-navigation/payloads.json?can_toggle_site_admin_and_employee_status=0\u0026is_admin_mode_on=0\u0026is_ui_opted_out=0\u0026show_ui_opt_out=0\u0026v=7","contextRegionUrl":"/_global-navigation/context-region.json"}}</script>
  <div data-target="react-partial.reactRoot"><header aria-label="Global navigation menu" data-component="Stack" class="GlobalNav styles-module__appHeader__YzYWk prc-Stack-Stack-UQ9k6" data-gap="none" data-direction="vertical" data-align="stretch" data-wrap="nowrap" data-justify="start" data-padding="none"><div data-component="Stack" class="prc-Stack-Stack-UQ9k6" data-direction="horizontal" data-align="center" data-wrap="nowrap" data-justify="center" data-padding="none"><div data-testid="top-nav-center" data-component="Stack" class="styles-module__center__R3QRv styles-module__withLocalNavigation__rjTJ_ GlobalNavBar-module__loggedOut__Jv1rk prc-Stack-Stack-UQ9k6" data-gap="condensed" data-direction="horizontal" data-align="stretch" data-wrap="nowrap" data-justify="start" data-padding="normal"><nav class="styles-module__contextRegion__VbSp2 prc-Breadcrumbs-BreadcrumbsBase-3Gb-B" aria-label="Breadcrumbs" data-overflow="menu" data-variant="normal" data-component="Breadcrumbs"><ol class="prc-Breadcrumbs-BreadcrumbsList-BKjpe"><li class="prc-Breadcrumbs-ItemWrapper-k0NLn"><a class="styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ" data-component="Breadcrumbs.Item" href="/j32ryc" data-discover="true"><span class="">j32ryc</span></a></li><li class="prc-Breadcrumbs-ItemWrapper-k0NLn"><a class="styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ" data-component="Breadcrumbs.Item" href="/j32ryc/hermes-agent" data-discover="true"><span class="styles-module__contextCrumbLast__tI2e3">hermes-agent</span><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-repo-forked styles-module__trailingIcon__sCKDh" viewBox="0 0 16 16" width="12" height="12" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path></svg></a></li></ol></nav></div><div data-testid="top-nav-right" data-component="Stack" class="styles-module__right__mlBQg styles-module__withLocalNavigation__rjTJ_ styles-module__rightWithResponsiveCreateButton__SKn2W prc-Stack-Stack-UQ9k6" data-gap="condensed" data-direction="horizontal" data-align="center" data-wrap="nowrap" data-justify="start" data-padding="normal"></div></div><h2 class="prc-src-InternalVisuallyHidden-2YaI6">Repository navigation</h2><nav class="prc-components-UnderlineWrapper-eT-Yj prc-UnderlineNav-UnderlineWrapper-GWONT LocalNavigation-module__LocalNavigation__b0Xc0" aria-label="Repository" data-variant="inset" data-overflow-mode="wrap" data-hide-icons-breakpoint="medium"><ul class="prc-UnderlineNav-ItemsList-oj8gN prc-components-UnderlineItemList-xKlKC" role="list"><li role="presentation" aria-hidden="true" class="prc-UnderlineNav-WrapSpacer--aLgz"></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a aria-current="page" data-tab-item="code" data-react-nav="code-view" data-react-nav-anchor="code-view-repo-link" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/j32ryc/hermes-agent" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><span data-component="text" data-content="Code">Code</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="pull-requests" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/j32ryc/hermes-agent/pulls" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-pull-request" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg></span><span data-component="text" data-content="Pull requests">Pull requests</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="actions" data-react-nav="actions-workflows" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/j32ryc/hermes-agent/actions" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-play" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg></span><span data-component="text" data-content="Actions">Actions</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="projects" data-react-nav="repo" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/j32ryc/hermes-agent/projects" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-table" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path></svg></span><span data-component="text" data-content="Projects">Projects</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="security-and-quality" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/j32ryc/hermes-agent/security" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg></span><span data-component="text" data-content="Security and quality">Security and quality</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="insights" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/j32ryc/hermes-agent/pulse" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-graph" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg></span><span data-component="text" data-content="Insights">Insights</span></a></li></ul><div class="prc-UnderlineNav-MoreButtonContainer-Dnrq6"><div class="prc-UnderlineNav-MoreButtonDivider-dN0a-"></div><button data-component="overflow-menu-button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk prc-UnderlineNav-MoreButton-Y8soj" data-loading="false" data-size="medium" data-variant="invisible" id="_R_2ktp_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3"><span>More<span class="prc-src-InternalVisuallyHidden-2YaI6"> items</span></span></span></span><span data-component="trailingAction" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></button></div></nav><div class="d-none"></div></header></div>
</react-partial>


  



<turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
    <div id="repo-content-pjax-container" class="repository-content " >
    



    
      
    








<react-app
  app-name="code-view"
  initial-path="/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md"
  style="display: block; min-height: calc(100vh - 64px);"
  data-attempted-ssr="true"
  data-ssr="true"
  data-lazy="false"
  data-alternate="false"
  data-data-router-enabled="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-app.embeddedData">{"payload":{"codeViewBlobRoute":{"csv":null,"csvError":null,"headerInfo":{"toc":[{"level":1,"text":"Hermes Agent v0.5.0 (v2026.3.28)","anchor":"hermes-agent-v050-v2026328","htmlText":"Hermes Agent v0.5.0 (v2026.3.28)"},{"level":2,"text":"✨ Highlights","anchor":"-highlights","htmlText":"✨ Highlights"},{"level":2,"text":"🏗️ Core Agent \u0026 Architecture","anchor":"️-core-agent--architecture","htmlText":"🏗️ Core Agent \u0026amp; Architecture"},{"level":3,"text":"New Provider: Hugging Face","anchor":"new-provider-hugging-face","htmlText":"New Provider: Hugging Face"},{"level":3,"text":"Provider \u0026 Model Improvements","anchor":"provider--model-improvements","htmlText":"Provider \u0026amp; Model Improvements"},{"level":3,"text":"Agent Loop \u0026 Conversation","anchor":"agent-loop--conversation","htmlText":"Agent Loop \u0026amp; Conversation"},{"level":3,"text":"Streaming \u0026 Reasoning","anchor":"streaming--reasoning","htmlText":"Streaming \u0026amp; Reasoning"},{"level":3,"text":"Session \u0026 Memory","anchor":"session--memory","htmlText":"Session \u0026amp; Memory"},{"level":3,"text":"Context Compression","anchor":"context-compression","htmlText":"Context Compression"},{"level":3,"text":"Architecture \u0026 Dependencies","anchor":"architecture--dependencies","htmlText":"Architecture \u0026amp; Dependencies"},{"level":2,"text":"📱 Messaging Platforms (Gateway)","anchor":"-messaging-platforms-gateway","htmlText":"📱 Messaging Platforms (Gateway)"},{"level":3,"text":"Telegram","anchor":"telegram","htmlText":"Telegram"},{"level":3,"text":"Discord","anchor":"discord","htmlText":"Discord"},{"level":3,"text":"Slack","anchor":"slack","htmlText":"Slack"},{"level":3,"text":"WhatsApp","anchor":"whatsapp","htmlText":"WhatsApp"},{"level":3,"text":"Matrix","anchor":"matrix","htmlText":"Matrix"},{"level":3,"text":"Signal","anchor":"signal","htmlText":"Signal"},{"level":3,"text":"Email","anchor":"email","htmlText":"Email"},{"level":3,"text":"Gateway Core","anchor":"gateway-core","htmlText":"Gateway Core"},{"level":2,"text":"🖥️ CLI \u0026 User Experience","anchor":"️-cli--user-experience","htmlText":"🖥️ CLI \u0026amp; User Experience"},{"level":3,"text":"Interactive CLI","anchor":"interactive-cli","htmlText":"Interactive CLI"},{"level":3,"text":"Setup \u0026 Configuration","anchor":"setup--configuration","htmlText":"Setup \u0026amp; Configuration"},{"level":2,"text":"🔧 Tool System","anchor":"-tool-system","htmlText":"🔧 Tool System"},{"level":3,"text":"API Server","anchor":"api-server","htmlText":"API Server"},{"level":3,"text":"Terminal \u0026 File Operations","anchor":"terminal--file-operations","htmlText":"Terminal \u0026amp; File Operations"},{"level":3,"text":"Browser \u0026 Vision","anchor":"browser--vision","htmlText":"Browser \u0026amp; Vision"},{"level":3,"text":"MCP","anchor":"mcp","htmlText":"MCP"},{"level":3,"text":"Auxiliary LLM","anchor":"auxiliary-llm","htmlText":"Auxiliary LLM"},{"level":3,"text":"Other Tools","anchor":"other-tools","htmlText":"Other Tools"},{"level":2,"text":"🧩 Skills Ecosystem","anchor":"-skills-ecosystem","htmlText":"🧩 Skills Ecosystem"},{"level":3,"text":"Skills System","anchor":"skills-system","htmlText":"Skills System"},{"level":3,"text":"New Skills","anchor":"new-skills","htmlText":"New Skills"},{"level":2,"text":"🔒 Security \u0026 Reliability","anchor":"-security--reliability","htmlText":"🔒 Security \u0026amp; Reliability"},{"level":3,"text":"Security Hardening","anchor":"security-hardening","htmlText":"Security Hardening"},{"level":3,"text":"Reliability","anchor":"reliability","htmlText":"Reliability"},{"level":2,"text":"⚡ Performance","anchor":"-performance","htmlText":"⚡ Performance"},{"level":2,"text":"🐛 Notable Bug Fixes","anchor":"-notable-bug-fixes","htmlText":"🐛 Notable Bug Fixes"},{"level":2,"text":"🧪 Testing","anchor":"-testing","htmlText":"🧪 Testing"},{"level":2,"text":"📚 Documentation","anchor":"-documentation","htmlText":"📚 Documentation"},{"level":2,"text":"👥 Contributors","anchor":"-contributors","htmlText":"👥 Contributors"},{"level":3,"text":"Core","anchor":"core","htmlText":"Core"},{"level":3,"text":"Community Contributors","anchor":"community-contributors","htmlText":"Community Contributors"},{"level":3,"text":"All Contributors","anchor":"all-contributors","htmlText":"All Contributors"}]},"issueTemplate":null,"discussionTemplate":null,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eHermes Agent v0.5.0 (v2026.3.28)\u003c/h1\u003e\u003ca id=\"user-content-hermes-agent-v050-v2026328\" class=\"anchor\" aria-label=\"Permalink: Hermes Agent v0.5.0 (v2026.3.28)\" href=\"#hermes-agent-v050-v2026328\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eRelease Date:\u003c/strong\u003e March 28, 2026\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003eThe hardening release — Hugging Face provider, /model command overhaul, Telegram Private Chat Topics, native Modal SDK, plugin lifecycle hooks, tool-use enforcement for GPT models, Nix flake, 50+ security and reliability fixes, and a comprehensive supply chain audit.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e✨ Highlights\u003c/h2\u003e\u003ca id=\"user-content--highlights\" class=\"anchor\" aria-label=\"Permalink: ✨ Highlights\" href=\"#-highlights\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eNous Portal now supports 400+ models\u003c/strong\u003e — The Nous Research inference portal has expanded dramatically, giving Hermes Agent users access to over 400 models through a single provider endpoint\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eHugging Face as a first-class inference provider\u003c/strong\u003e — Full integration with HF Inference API including curated agentic model picker that maps to OpenRouter analogues, live \u003ccode\u003e/models\u003c/code\u003e endpoint probe, and setup wizard flow (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3419\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3419/hovercard\"\u003e#3419\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3440\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3440/hovercard\"\u003e#3440\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eTelegram Private Chat Topics\u003c/strong\u003e — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3163\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3163/hovercard\"\u003e#3163\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eNative Modal SDK backend\u003c/strong\u003e — Replaced swe-rex dependency with native Modal SDK (\u003ccode\u003eSandbox.create.aio\u003c/code\u003e + \u003ccode\u003eexec.aio\u003c/code\u003e), eliminating tunnels and simplifying the Modal terminal backend (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3538\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3538/hovercard\"\u003e#3538\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003ePlugin lifecycle hooks activated\u003c/strong\u003e — \u003ccode\u003epre_llm_call\u003c/code\u003e, \u003ccode\u003epost_llm_call\u003c/code\u003e, \u003ccode\u003eon_session_start\u003c/code\u003e, and \u003ccode\u003eon_session_end\u003c/code\u003e hooks now fire in the agent loop and CLI/gateway, completing the plugin hook system (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3542\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3542/hovercard\"\u003e#3542\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eImproved OpenAI Model Reliability\u003c/strong\u003e — Added \u003ccode\u003eGPT_TOOL_USE_GUIDANCE\u003c/code\u003e to prevent GPT models from describing intended actions instead of making tool calls, plus automatic stripping of stale budget warnings from conversation history that caused models to avoid tools across turns (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3528\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3528/hovercard\"\u003e#3528\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eNix flake\u003c/strong\u003e — Full uv2nix build, NixOS module with persistent container mode, auto-generated config keys from Python source, and suffix PATHs for agent-friendliness (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/20\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/20/hovercard\"\u003e#20\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3274\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3274/hovercard\"\u003e#3274\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3061\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3061/hovercard\"\u003e#3061\u003c/a\u003e) by @alt-glitch\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSupply chain hardening\u003c/strong\u003e — Removed compromised \u003ccode\u003elitellm\u003c/code\u003e dependency, pinned all dependency version ranges, regenerated \u003ccode\u003euv.lock\u003c/code\u003e with hashes, added CI workflow scanning PRs for supply chain attack patterns, and bumped deps to fix CVEs (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2796\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2796/hovercard\"\u003e#2796\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2810\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2810/hovercard\"\u003e#2810\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2812\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2812/hovercard\"\u003e#2812\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2816\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2816/hovercard\"\u003e#2816\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3073\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3073/hovercard\"\u003e#3073\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eAnthropic output limits fix\u003c/strong\u003e — Replaced hardcoded 16K \u003ccode\u003emax_tokens\u003c/code\u003e with per-model native output limits (128K for Opus 4.6, 64K for Sonnet 4.6), fixing \"Response truncated\" and thinking-budget exhaustion on direct Anthropic API (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3426\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3426/hovercard\"\u003e#3426\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3444\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3444/hovercard\"\u003e#3444\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e🏗️ Core Agent \u0026amp; Architecture\u003c/h2\u003e\u003ca id=\"user-content-️-core-agent--architecture\" class=\"anchor\" aria-label=\"Permalink: 🏗️ Core Agent \u0026amp; Architecture\" href=\"#️-core-agent--architecture\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNew Provider: Hugging Face\u003c/h3\u003e\u003ca id=\"user-content-new-provider-hugging-face\" class=\"anchor\" aria-label=\"Permalink: New Provider: Hugging Face\" href=\"#new-provider-hugging-face\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eFirst-class Hugging Face Inference API integration with auth, setup wizard, and model picker (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3419\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3419/hovercard\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCurated model list mapping OpenRouter agentic defaults to HF equivalents — providers with 8+ curated models skip live \u003ccode\u003e/models\u003c/code\u003e probe for speed (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3440\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3440/hovercard\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded glm-5-turbo to Z.AI provider model list (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3095\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3095/hovercard\"\u003e#3095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eProvider \u0026amp; Model Improvements\u003c/h3\u003e\u003ca id=\"user-content-provider--model-improvements\" class=\"anchor\" aria-label=\"Permalink: Provider \u0026amp; Model Improvements\" href=\"#provider--model-improvements\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ccode\u003e/model\u003c/code\u003e command overhaul — extracted shared \u003ccode\u003eswitch_model()\u003c/code\u003e pipeline for CLI and gateway, custom endpoint support, provider-aware routing (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2795\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2795/hovercard\"\u003e#2795\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2799\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2799/hovercard\"\u003e#2799\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved \u003ccode\u003e/model\u003c/code\u003e slash command from CLI and gateway in favor of \u003ccode\u003ehermes model\u003c/code\u003e subcommand (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3080\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3080/hovercard\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve \u003ccode\u003ecustom\u003c/code\u003e provider instead of silently remapping to \u003ccode\u003eopenrouter\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2792\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2792/hovercard\"\u003e#2792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead root-level \u003ccode\u003eprovider\u003c/code\u003e and \u003ccode\u003ebase_url\u003c/code\u003e from config.yaml into model config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3112\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3112/hovercard\"\u003e#3112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlign Nous Portal model slugs with OpenRouter naming (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3253\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3253/hovercard\"\u003e#3253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Alibaba provider default endpoint and model list (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3484\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3484/hovercard\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow MiniMax users to override \u003ccode\u003e/v1\u003c/code\u003e → \u003ccode\u003e/anthropic\u003c/code\u003e auto-correction (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3553\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3553/hovercard\"\u003e#3553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrate OAuth token refresh to \u003ccode\u003eplatform.claude.com\u003c/code\u003e with fallback (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3246\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3246/hovercard\"\u003e#3246\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAgent Loop \u0026amp; Conversation\u003c/h3\u003e\u003ca id=\"user-content-agent-loop--conversation\" class=\"anchor\" aria-label=\"Permalink: Agent Loop \u0026amp; Conversation\" href=\"#agent-loop--conversation\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eImproved OpenAI model reliability\u003c/strong\u003e — \u003ccode\u003eGPT_TOOL_USE_GUIDANCE\u003c/code\u003e prevents GPT models from describing actions instead of calling tools + automatic budget warning stripping from history (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3528\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3528/hovercard\"\u003e#3528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSurface lifecycle events\u003c/strong\u003e — All retry, fallback, and compression events now surface to the user as formatted messages (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3153\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3153/hovercard\"\u003e#3153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAnthropic output limits\u003c/strong\u003e — Per-model native output limits instead of hardcoded 16K \u003ccode\u003emax_tokens\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3426\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3426/hovercard\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThinking-budget exhaustion detection\u003c/strong\u003e — Skip useless continuation retries when model uses all output tokens on reasoning (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3444\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3444/hovercard\"\u003e#3444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlways prefer streaming for API calls to prevent hung subagents (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3120\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3120/hovercard\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestore safe non-streaming fallback after stream failures (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3020\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3020/hovercard\"\u003e#3020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGive subagents independent iteration budgets (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3004\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3004/hovercard\"\u003e#3004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eapi_key\u003c/code\u003e in \u003ccode\u003e_try_activate_fallback\u003c/code\u003e for subagent auth (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3103\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3103/hovercard\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGraceful return on max retries instead of crashing thread (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCount compression restarts toward retry limit (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3070\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3070/hovercard\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude tool tokens in preflight estimate, guard context probe persistence (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3164\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3164/hovercard\"\u003e#3164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate context compressor limits after fallback activation (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3305\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3305/hovercard\"\u003e#3305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eValidate empty user messages to prevent Anthropic API 400 errors (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3322\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3322/hovercard\"\u003e#3322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGLM reasoning-only and max-length handling (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3010\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3010/hovercard\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncrease API timeout default from 900s to 1800s for slow-thinking models (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3431\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3431/hovercard\"\u003e#3431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003emax_tokens\u003c/code\u003e for Claude/OpenRouter + retry SSE connection errors (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3497\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3497/hovercard\"\u003e#3497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2701\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2701/hovercard\"\u003e#2701\u003c/a\u003e) by @ctlst\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eStreaming \u0026amp; Reasoning\u003c/h3\u003e\u003ca id=\"user-content-streaming--reasoning\" class=\"anchor\" aria-label=\"Permalink: Streaming \u0026amp; Reasoning\" href=\"#streaming--reasoning\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003ePersist reasoning across gateway session turns\u003c/strong\u003e with new schema v6 columns (\u003ccode\u003ereasoning\u003c/code\u003e, \u003ccode\u003ereasoning_details\u003c/code\u003e, \u003ccode\u003ecodex_reasoning_items\u003c/code\u003e) (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2974\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2974/hovercard\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect and kill stale SSE connections (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stale stream detector race causing spurious \u003ccode\u003eRemoteProtocolError\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip duplicate callback for \u003ccode\u003e\u0026lt;think\u0026gt;\u003c/code\u003e-extracted reasoning during streaming (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3116\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3116/hovercard\"\u003e#3116\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve reasoning fields in \u003ccode\u003erewrite_transcript\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3311\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3311/hovercard\"\u003e#3311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve Gemini thought signatures in streamed tool calls (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2997\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2997/hovercard\"\u003e#2997\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure first delta is fired during reasoning updates (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSession \u0026amp; Memory\u003c/h3\u003e\u003ca id=\"user-content-session--memory\" class=\"anchor\" aria-label=\"Permalink: Session \u0026amp; Memory\" href=\"#session--memory\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eSession search recent sessions mode\u003c/strong\u003e — Omit query to browse recent sessions with titles, previews, and timestamps (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2533\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2533/hovercard\"\u003e#2533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSession config surfacing\u003c/strong\u003e on \u003ccode\u003e/new\u003c/code\u003e, \u003ccode\u003e/reset\u003c/code\u003e, and auto-reset (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3321\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3321/hovercard\"\u003e#3321\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThird-party session isolation\u003c/strong\u003e — \u003ccode\u003e--source\u003c/code\u003e flag for isolating sessions by origin (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3255\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3255/hovercard\"\u003e#3255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e/resume\u003c/code\u003e CLI handler, session log truncation guard, \u003ccode\u003ereopen_session\u003c/code\u003e API (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3315\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3315/hovercard\"\u003e#3315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear compressor summary and turn counter on \u003ccode\u003e/clear\u003c/code\u003e and \u003ccode\u003e/new\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3102\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3102/hovercard\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSurface silent SessionDB failures that cause session data loss (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2999\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2999/hovercard\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSession search fallback preview on summarization failure (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3478\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3478/hovercard\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent stale memory overwrites by flush agent (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2687\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2687/hovercard\"\u003e#2687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContext Compression\u003c/h3\u003e\u003ca id=\"user-content-context-compression\" class=\"anchor\" aria-label=\"Permalink: Context Compression\" href=\"#context-compression\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eReplace dead \u003ccode\u003esummary_target_tokens\u003c/code\u003e with ratio-based scaling (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2554\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2554/hovercard\"\u003e#2554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ecompression.target_ratio\u003c/code\u003e, \u003ccode\u003eprotect_last_n\u003c/code\u003e, and \u003ccode\u003ethreshold\u003c/code\u003e in \u003ccode\u003eDEFAULT_CONFIG\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestore sane defaults and cap summary at 12K tokens (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve transcript on \u003ccode\u003e/compress\u003c/code\u003e and hygiene compression (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3556\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3556/hovercard\"\u003e#3556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate context pressure warnings and token estimates after compaction (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eArchitecture \u0026amp; Dependencies\u003c/h3\u003e\u003ca id=\"user-content-architecture--dependencies\" class=\"anchor\" aria-label=\"Permalink: Architecture \u0026amp; Dependencies\" href=\"#architecture--dependencies\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eRemove mini-swe-agent dependency\u003c/strong\u003e — Inline Docker and Modal backends directly (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2804\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2804/hovercard\"\u003e#2804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eReplace swe-rex with native Modal SDK\u003c/strong\u003e for Modal backend (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3538\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3538/hovercard\"\u003e#3538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePlugin lifecycle hooks\u003c/strong\u003e — \u003ccode\u003epre_llm_call\u003c/code\u003e, \u003ccode\u003epost_llm_call\u003c/code\u003e, \u003ccode\u003eon_session_start\u003c/code\u003e, \u003ccode\u003eon_session_end\u003c/code\u003e now fire in the agent loop (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3542\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3542/hovercard\"\u003e#3542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix plugin toolsets invisible in \u003ccode\u003ehermes tools\u003c/code\u003e and standalone processes (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3457\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3457/hovercard\"\u003e#3457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsolidate \u003ccode\u003eget_hermes_home()\u003c/code\u003e and \u003ccode\u003eparse_reasoning_effort()\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3062\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3062/hovercard\"\u003e#3062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused Hermes-native PKCE OAuth flow (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3107\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3107/hovercard\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove ~100 unused imports across 55 files (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3016\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3016/hovercard\"\u003e#3016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 154 f-strings, simplify getattr/URL patterns, remove dead code (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3119\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3119/hovercard\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e📱 Messaging Platforms (Gateway)\u003c/h2\u003e\u003ca id=\"user-content--messaging-platforms-gateway\" class=\"anchor\" aria-label=\"Permalink: 📱 Messaging Platforms (Gateway)\" href=\"#-messaging-platforms-gateway\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTelegram\u003c/h3\u003e\u003ca id=\"user-content-telegram\" class=\"anchor\" aria-label=\"Permalink: Telegram\" href=\"#telegram\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003ePrivate Chat Topics\u003c/strong\u003e — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3163\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3163/hovercard\"\u003e#3163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAuto-discover fallback IPs via DNS-over-HTTPS\u003c/strong\u003e when \u003ccode\u003eapi.telegram.org\u003c/code\u003e is unreachable (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3376\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3376/hovercard\"\u003e#3376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConfigurable reply threading mode\u003c/strong\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2907\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2907/hovercard\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFall back to no \u003ccode\u003ethread_id\u003c/code\u003e on \"Message thread not found\" BadRequest (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3390\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3390/hovercard\"\u003e#3390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSelf-reschedule reconnect when \u003ccode\u003estart_polling\u003c/code\u003e fails after 502 (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3268\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3268/hovercard\"\u003e#3268\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDiscord\u003c/h3\u003e\u003ca id=\"user-content-discord\" class=\"anchor\" aria-label=\"Permalink: Discord\" href=\"#discord\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eStop phantom typing indicator after agent turn completes (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3003\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3003/hovercard\"\u003e#3003\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSlack\u003c/h3\u003e\u003ca id=\"user-content-slack\" class=\"anchor\" aria-label=\"Permalink: Slack\" href=\"#slack\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSend tool call progress messages to correct Slack thread (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3063\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3063/hovercard\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eScope progress thread fallback to Slack only (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3488\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3488/hovercard\"\u003e#3488\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eWhatsApp\u003c/h3\u003e\u003ca id=\"user-content-whatsapp\" class=\"anchor\" aria-label=\"Permalink: WhatsApp\" href=\"#whatsapp\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eDownload documents, audio, and video media from messages (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2978\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2978/hovercard\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMatrix\u003c/h3\u003e\u003ca id=\"user-content-matrix\" class=\"anchor\" aria-label=\"Permalink: Matrix\" href=\"#matrix\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAdd missing Matrix entry in \u003ccode\u003ePLATFORMS\u003c/code\u003e dict (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3473\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3473/hovercard\"\u003e#3473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHarden e2ee access-token handling (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3562\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3562/hovercard\"\u003e#3562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd backoff for \u003ccode\u003eSyncError\u003c/code\u003e in sync loop (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3280\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3280/hovercard\"\u003e#3280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSignal\u003c/h3\u003e\u003ca id=\"user-content-signal\" class=\"anchor\" aria-label=\"Permalink: Signal\" href=\"#signal\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eTrack SSE keepalive comments as connection activity (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3316\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3316/hovercard\"\u003e#3316\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eEmail\u003c/h3\u003e\u003ca id=\"user-content-email\" class=\"anchor\" aria-label=\"Permalink: Email\" href=\"#email\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ePrevent unbounded growth of \u003ccode\u003e_seen_uids\u003c/code\u003e in EmailAdapter (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3490\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3490/hovercard\"\u003e#3490\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGateway Core\u003c/h3\u003e\u003ca id=\"user-content-gateway-core\" class=\"anchor\" aria-label=\"Permalink: Gateway Core\" href=\"#gateway-core\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eConfig-gated \u003ccode\u003e/verbose\u003c/code\u003e command\u003c/strong\u003e for messaging platforms — toggle tool output verbosity from chat (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3262\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3262/hovercard\"\u003e#3262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBackground review notifications\u003c/strong\u003e delivered to user chat (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3293\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3293/hovercard\"\u003e#3293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRetry transient send failures\u003c/strong\u003e and notify user on exhaustion (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3288\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3288/hovercard\"\u003e#3288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover from hung agents — \u003ccode\u003e/stop\u003c/code\u003e hard-kills session lock (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3104\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3104/hovercard\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eThread-safe \u003ccode\u003eSessionStore\u003c/code\u003e — protect \u003ccode\u003e_entries\u003c/code\u003e with \u003ccode\u003ethreading.Lock\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3052\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3052/hovercard\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix gateway token double-counting with cached agents — use absolute set instead of increment (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3306\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3306/hovercard\"\u003e#3306\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3317\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3317/hovercard\"\u003e#3317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFingerprint full auth token in agent cache signature (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3247\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3247/hovercard\"\u003e#3247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSilence background agent terminal output (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3297\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3297/hovercard\"\u003e#3297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude per-platform \u003ccode\u003eALLOW_ALL\u003c/code\u003e and \u003ccode\u003eSIGNAL_GROUP\u003c/code\u003e in startup allowlist check (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3313\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3313/hovercard\"\u003e#3313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude user-local bin paths in systemd unit PATH (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3527\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3527/hovercard\"\u003e#3527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrack background task references in \u003ccode\u003eGatewayRunner\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3254\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3254/hovercard\"\u003e#3254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd request timeouts to HA, Email, Mattermost, SMS adapters (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3258\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3258/hovercard\"\u003e#3258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd media download retry to Mattermost, Slack, and base cache (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3323\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3323/hovercard\"\u003e#3323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect virtualenv path instead of hardcoding \u003ccode\u003evenv/\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2797\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2797/hovercard\"\u003e#2797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eTERMINAL_CWD\u003c/code\u003e for context file discovery, not process cwd (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop loading hermes repo AGENTS.md into gateway sessions (~10k wasted tokens) (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2891\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2891/hovercard\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e🖥️ CLI \u0026amp; User Experience\u003c/h2\u003e\u003ca id=\"user-content-️-cli--user-experience\" class=\"anchor\" aria-label=\"Permalink: 🖥️ CLI \u0026amp; User Experience\" href=\"#️-cli--user-experience\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInteractive CLI\u003c/h3\u003e\u003ca id=\"user-content-interactive-cli\" class=\"anchor\" aria-label=\"Permalink: Interactive CLI\" href=\"#interactive-cli\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eConfigurable busy input mode\u003c/strong\u003e + fix \u003ccode\u003e/queue\u003c/code\u003e always working (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3298\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3298/hovercard\"\u003e#3298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePreserve user input on multiline paste\u003c/strong\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3065\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3065/hovercard\"\u003e#3065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTool generation callback\u003c/strong\u003e — streaming \"preparing terminal…\" updates during tool argument generation (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow tool progress for substantive tools, not just \"preparing\" (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuffer reasoning preview chunks and fix duplicate display (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3013\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3013/hovercard\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent reasoning box from rendering 3x during tool-calling loops (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3405\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3405/hovercard\"\u003e#3405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEliminate \"Event loop is closed\" / \"Press ENTER to continue\" during idle — three-layer fix with \u003ccode\u003eneuter_async_httpx_del()\u003c/code\u003e, custom exception handler, and stale client cleanup (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3398\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3398/hovercard\"\u003e#3398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix status bar shows 26K instead of 260K for token counts with trailing zeros (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3024\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3024/hovercard\"\u003e#3024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix status bar duplicates and degrades during long sessions (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3291\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3291/hovercard\"\u003e#3291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefresh TUI before background task output to prevent status bar overlap (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3048\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3048/hovercard\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuppress KawaiiSpinner animation under \u003ccode\u003epatch_stdout\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2994\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2994/hovercard\"\u003e#2994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip KawaiiSpinner when TUI handles tool progress (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2973\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2973/hovercard\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGuard \u003ccode\u003eisatty()\u003c/code\u003e against closed streams via \u003ccode\u003e_is_tty\u003c/code\u003e property (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3056\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3056/hovercard\"\u003e#3056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure single closure of streaming boxes during tool generation (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCap context pressure percentage at 100% in display (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3480\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3480/hovercard\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean up HTML error messages in CLI display (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3069\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3069/hovercard\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow HTTP status code and 400 body in API error output (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3096\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3096/hovercard\"\u003e#3096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExtract useful info from HTML error pages, dump debug on max retries (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent TypeError on startup when \u003ccode\u003ebase_url\u003c/code\u003e is None (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3068\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3068/hovercard\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent update crash in non-TTY environments (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3094\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3094/hovercard\"\u003e#3094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle EOFError in sessions delete/prune confirmation prompts (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3101\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3101/hovercard\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCatch KeyboardInterrupt during \u003ccode\u003eflush_memories\u003c/code\u003e on exit and in exit cleanup handlers (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3025\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3025/hovercard\"\u003e#3025\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3257\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3257/hovercard\"\u003e#3257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGuard \u003ccode\u003e.strip()\u003c/code\u003e against None values from YAML config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3552\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3552/hovercard\"\u003e#3552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGuard \u003ccode\u003econfig.get()\u003c/code\u003e against YAML null values to prevent AttributeError (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3377\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3377/hovercard\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStore asyncio task references to prevent GC mid-execution (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3267\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3267/hovercard\"\u003e#3267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSetup \u0026amp; Configuration\u003c/h3\u003e\u003ca id=\"user-content-setup--configuration\" class=\"anchor\" aria-label=\"Permalink: Setup \u0026amp; Configuration\" href=\"#setup--configuration\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eUse explicit key mapping for returning-user menu dispatch instead of positional index (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3083\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3083/hovercard\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003esys.executable\u003c/code\u003e for pip in update commands to fix PEP 668 (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3099\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3099/hovercard\"\u003e#3099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHarden \u003ccode\u003ehermes update\u003c/code\u003e against diverged history, non-main branches, and gateway edge cases (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3492\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3492/hovercard\"\u003e#3492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOpenClaw migration overwrites defaults and setup wizard skips imported sections — fixed (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3282\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3282/hovercard\"\u003e#3282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop recursive AGENTS.md walk, load top-level only (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3110\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3110/hovercard\"\u003e#3110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd macOS Homebrew paths to browser and terminal PATH resolution (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2713\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2713/hovercard\"\u003e#2713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eYAML boolean handling for \u003ccode\u003etool_progress\u003c/code\u003e config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3300\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3300/hovercard\"\u003e#3300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReset default SOUL.md to baseline identity text (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3159\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3159/hovercard\"\u003e#3159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject relative cwd paths for container terminal backends (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd explicit \u003ccode\u003ehermes-api-server\u003c/code\u003e toolset for API server platform (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3304\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3304/hovercard\"\u003e#3304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReorder setup wizard providers — OpenRouter first (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e🔧 Tool System\u003c/h2\u003e\u003ca id=\"user-content--tool-system\" class=\"anchor\" aria-label=\"Permalink: 🔧 Tool System\" href=\"#-tool-system\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAPI Server\u003c/h3\u003e\u003ca id=\"user-content-api-server\" class=\"anchor\" aria-label=\"Permalink: API Server\" href=\"#api-server\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eIdempotency-Key support\u003c/strong\u003e, body size limit, and OpenAI error envelope (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2903\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2903/hovercard\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow Idempotency-Key in CORS headers (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3530\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3530/hovercard\"\u003e#3530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel orphaned agent + true interrupt on SSE disconnect (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3427\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3427/hovercard\"\u003e#3427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix streaming breaks when agent makes tool calls (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2985\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2985/hovercard\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTerminal \u0026amp; File Operations\u003c/h3\u003e\u003ca id=\"user-content-terminal--file-operations\" class=\"anchor\" aria-label=\"Permalink: Terminal \u0026amp; File Operations\" href=\"#terminal--file-operations\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eHandle addition-only hunks in V4A patch parser (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3325\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3325/hovercard\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExponential backoff for persistent shell polling (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2996\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2996/hovercard\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd timeout to subprocess calls in \u003ccode\u003econtext_references\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3469\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3469/hovercard\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBrowser \u0026amp; Vision\u003c/h3\u003e\u003ca id=\"user-content-browser--vision\" class=\"anchor\" aria-label=\"Permalink: Browser \u0026amp; Vision\" href=\"#browser--vision\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eHandle 402 insufficient credits error in vision tool (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2802\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2802/hovercard\"\u003e#2802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ebrowser_vision\u003c/code\u003e ignores \u003ccode\u003eauxiliary.vision.timeout\u003c/code\u003e config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2901\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2901/hovercard\"\u003e#2901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake browser command timeout configurable via config.yaml (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2801\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2801/hovercard\"\u003e#2801\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMCP\u003c/h3\u003e\u003ca id=\"user-content-mcp\" class=\"anchor\" aria-label=\"Permalink: MCP\" href=\"#mcp\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eMCP toolset resolution for runtime and config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3252\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3252/hovercard\"\u003e#3252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd MCP tool name collision protection (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3077\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3077/hovercard\"\u003e#3077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAuxiliary LLM\u003c/h3\u003e\u003ca id=\"user-content-auxiliary-llm\" class=\"anchor\" aria-label=\"Permalink: Auxiliary LLM\" href=\"#auxiliary-llm\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eGuard aux LLM calls against None content + reasoning fallback + retry (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3449\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3449/hovercard\"\u003e#3449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCatch ImportError from \u003ccode\u003ebuild_anthropic_client\u003c/code\u003e in vision auto-detection (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3312\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3312/hovercard\"\u003e#3312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eOther Tools\u003c/h3\u003e\u003ca id=\"user-content-other-tools\" class=\"anchor\" aria-label=\"Permalink: Other Tools\" href=\"#other-tools\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAdd request timeouts to \u003ccode\u003esend_message_tool\u003c/code\u003e HTTP calls (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3162\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3162/hovercard\"\u003e#3162\u003c/a\u003e) by @memosr\u003c/li\u003e\n\u003cli\u003eAuto-repair \u003ccode\u003ejobs.json\u003c/code\u003e with invalid control characters (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3537\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3537/hovercard\"\u003e#3537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable fine-grained tool streaming for Claude/OpenRouter (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3497\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3497/hovercard\"\u003e#3497\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e🧩 Skills Ecosystem\u003c/h2\u003e\u003ca id=\"user-content--skills-ecosystem\" class=\"anchor\" aria-label=\"Permalink: 🧩 Skills Ecosystem\" href=\"#-skills-ecosystem\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSkills System\u003c/h3\u003e\u003ca id=\"user-content-skills-system\" class=\"anchor\" aria-label=\"Permalink: Skills System\" href=\"#skills-system\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eEnv var passthrough\u003c/strong\u003e for skills and user config — skills can declare environment variables to pass through (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2807\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2807/hovercard\"\u003e#2807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache skills prompt with shared \u003ccode\u003eskill_utils\u003c/code\u003e module for faster TTFT (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3421\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3421/hovercard\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid redundant file re-read for skill conditions (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2992\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2992/hovercard\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse Git Trees API to prevent silent subdirectory loss during install (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2995\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2995/hovercard\"\u003e#2995\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix skills-sh install for deeply nested repo structures (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2980\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2980/hovercard\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle null metadata in skill frontmatter (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve trust for skills-sh identifiers + reduce resolution churn (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3251\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3251/hovercard\"\u003e#3251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAgent-created skills were incorrectly treated as untrusted community content — fixed (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNew Skills\u003c/h3\u003e\u003ca id=\"user-content-new-skills\" class=\"anchor\" aria-label=\"Permalink: New Skills\" href=\"#new-skills\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eG0DM0D3 godmode jailbreaking skill\u003c/strong\u003e + docs (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3157\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3157/hovercard\"\u003e#3157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDocker management skill\u003c/strong\u003e added to optional-skills (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3060\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3060/hovercard\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOpenClaw migration v2\u003c/strong\u003e — 17 new modules, terminal recap for migrating from OpenClaw to Hermes (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2906\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2906/hovercard\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e🔒 Security \u0026amp; Reliability\u003c/h2\u003e\u003ca id=\"user-content--security--reliability\" class=\"anchor\" aria-label=\"Permalink: 🔒 Security \u0026amp; Reliability\" href=\"#-security--reliability\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSecurity Hardening\u003c/h3\u003e\u003ca id=\"user-content-security-hardening\" class=\"anchor\" aria-label=\"Permalink: Security Hardening\" href=\"#security-hardening\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eSSRF protection\u003c/strong\u003e added to \u003ccode\u003ebrowser_navigate\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3058\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3058/hovercard\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSSRF protection\u003c/strong\u003e added to \u003ccode\u003evision_tools\u003c/code\u003e and \u003ccode\u003eweb_tools\u003c/code\u003e (hardened) (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2679\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2679/hovercard\"\u003e#2679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRestrict subagent toolsets\u003c/strong\u003e to parent's enabled set (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3269\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3269/hovercard\"\u003e#3269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrevent zip-slip path traversal\u003c/strong\u003e in self-update (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3250\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3250/hovercard\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrevent shell injection\u003c/strong\u003e in \u003ccode\u003e_expand_path\u003c/code\u003e via \u003ccode\u003e~user\u003c/code\u003e path suffix (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2685\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2685/hovercard\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNormalize input\u003c/strong\u003e before dangerous command detection (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3260\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3260/hovercard\"\u003e#3260\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake tirith block verdicts approvable instead of hard-blocking (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3428\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3428/hovercard\"\u003e#3428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove compromised \u003ccode\u003elitellm\u003c/code\u003e/\u003ccode\u003etyper\u003c/code\u003e/\u003ccode\u003eplatformdirs\u003c/code\u003e from deps (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2796\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2796/hovercard\"\u003e#2796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePin all dependency version ranges (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2810\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2810/hovercard\"\u003e#2810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRegenerate \u003ccode\u003euv.lock\u003c/code\u003e with hashes, use lockfile in setup (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2812\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2812/hovercard\"\u003e#2812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump dependencies to fix CVEs + regenerate \u003ccode\u003euv.lock\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3073\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3073/hovercard\"\u003e#3073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupply chain audit CI workflow for PR scanning (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2816\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2816/hovercard\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eReliability\u003c/h3\u003e\u003ca id=\"user-content-reliability\" class=\"anchor\" aria-label=\"Permalink: Reliability\" href=\"#reliability\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eSQLite WAL write-lock contention\u003c/strong\u003e causing 15-20s TUI freeze — fixed (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3385\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3385/hovercard\"\u003e#3385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSQLite concurrency hardening\u003c/strong\u003e + session transcript integrity (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3249\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3249/hovercard\"\u003e#3249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent recurring cron job re-fire on gateway crash/restart loop (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3396\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3396/hovercard\"\u003e#3396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMark cron session as ended after job completes (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2998\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2998/hovercard\"\u003e#2998\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e⚡ Performance\u003c/h2\u003e\u003ca id=\"user-content--performance\" class=\"anchor\" aria-label=\"Permalink: ⚡ Performance\" href=\"#-performance\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003eTTFT startup optimizations\u003c/strong\u003e — salvaged easy-win startup improvements (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3395\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3395/hovercard\"\u003e#3395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache skills prompt with shared \u003ccode\u003eskill_utils\u003c/code\u003e module (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3421\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3421/hovercard\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid redundant file re-read for skill conditions in prompt builder (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2992\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2992/hovercard\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e🐛 Notable Bug Fixes\u003c/h2\u003e\u003ca id=\"user-content--notable-bug-fixes\" class=\"anchor\" aria-label=\"Permalink: 🐛 Notable Bug Fixes\" href=\"#-notable-bug-fixes\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eFix gateway token double-counting with cached agents (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3306\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3306/hovercard\"\u003e#3306\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3317\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3317/hovercard\"\u003e#3317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \"Event loop is closed\" / \"Press ENTER to continue\" during idle sessions (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3398\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3398/hovercard\"\u003e#3398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix reasoning box rendering 3x during tool-calling loops (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3405\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3405/hovercard\"\u003e#3405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix status bar shows 26K instead of 260K for token counts (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3024\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3024/hovercard\"\u003e#3024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e/queue\u003c/code\u003e always working regardless of config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3298\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3298/hovercard\"\u003e#3298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix phantom Discord typing indicator after agent turn (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3003\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3003/hovercard\"\u003e#3003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Slack progress messages appearing in wrong thread (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3063\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3063/hovercard\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix WhatsApp media downloads (documents, audio, video) (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2978\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2978/hovercard\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Telegram \"Message thread not found\" killing progress messages (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3390\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3390/hovercard\"\u003e#3390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OpenClaw migration overwriting defaults (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3282\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3282/hovercard\"\u003e#3282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix returning-user setup menu dispatching wrong section (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3083\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3083/hovercard\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehermes update\u003c/code\u003e PEP 668 \"externally-managed-environment\" error (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3099\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3099/hovercard\"\u003e#3099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix subagents hitting \u003ccode\u003emax_iterations\u003c/code\u003e prematurely via shared budget (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3004\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3004/hovercard\"\u003e#3004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix YAML boolean handling for \u003ccode\u003etool_progress\u003c/code\u003e config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3300\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3300/hovercard\"\u003e#3300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003econfig.get()\u003c/code\u003e crashes on YAML null values (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3377\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3377/hovercard\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e.strip()\u003c/code\u003e crash on None values from YAML config (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3552\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3552/hovercard\"\u003e#3552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix hung agents on gateway — \u003ccode\u003e/stop\u003c/code\u003e now hard-kills session lock (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3104\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3104/hovercard\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_custom\u003c/code\u003e provider silently remapped to \u003ccode\u003eopenrouter\u003c/code\u003e (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2792\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2792/hovercard\"\u003e#2792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Matrix missing from \u003ccode\u003ePLATFORMS\u003c/code\u003e dict (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3473\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3473/hovercard\"\u003e#3473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Email adapter unbounded \u003ccode\u003e_seen_uids\u003c/code\u003e growth (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3490\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3490/hovercard\"\u003e#3490\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e🧪 Testing\u003c/h2\u003e\u003ca id=\"user-content--testing\" class=\"anchor\" aria-label=\"Permalink: 🧪 Testing\" href=\"#-testing\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ePin \u003ccode\u003eagent-client-protocol\u003c/code\u003e \u0026lt; 0.9 to handle breaking upstream release (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3320\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3320/hovercard\"\u003e#3320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCatch anthropic ImportError in vision auto-detection tests (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3312\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3312/hovercard\"\u003e#3312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate retry-exhaust test for new graceful return behavior (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3320\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3320/hovercard\"\u003e#3320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd regression tests for null metadata frontmatter (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e📚 Documentation\u003c/h2\u003e\u003ca id=\"user-content--documentation\" class=\"anchor\" aria-label=\"Permalink: 📚 Documentation\" href=\"#-documentation\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eUpdate all docs for \u003ccode\u003e/model\u003c/code\u003e command overhaul and custom provider support (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2800\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2800/hovercard\"\u003e#2800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stale and incorrect documentation across 18 files (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2805\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2805/hovercard\"\u003e#2805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument 9 previously undocumented features (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2814\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2814/hovercard\"\u003e#2814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing skills, CLI commands, and messaging env vars to docs (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2809\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2809/hovercard\"\u003e#2809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix api-server response storage documentation — SQLite, not in-memory (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2819\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2819/hovercard\"\u003e#2819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eQuote pip install extras to fix zsh glob errors (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2815\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2815/hovercard\"\u003e#2815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnify hooks documentation — add plugin hooks to hooks page, add \u003ccode\u003esession:end\u003c/code\u003e event (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify two-mode behavior in \u003ccode\u003esession_search\u003c/code\u003e schema description (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Discord Public Bot setting for Discord-provided invite link (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3519\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3519/hovercard\"\u003e#3519\u003c/a\u003e) by @mehmoodosman\u003c/li\u003e\n\u003cli\u003eRevise v0.4.0 changelog — fix feature attribution, reorder sections (\u003ca href=\"https://github.com/NousResearch/hermes-agent\"\u003euntagged commit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e👥 Contributors\u003c/h2\u003e\u003ca id=\"user-content--contributors\" class=\"anchor\" aria-label=\"Permalink: 👥 Contributors\" href=\"#-contributors\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCore\u003c/h3\u003e\u003ca id=\"user-content-core\" class=\"anchor\" aria-label=\"Permalink: Core\" href=\"#core\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003e@teknium1\u003c/strong\u003e — 157 PRs covering the full scope of this release\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCommunity Contributors\u003c/h3\u003e\u003ca id=\"user-content-community-contributors\" class=\"anchor\" aria-label=\"Permalink: Community Contributors\" href=\"#community-contributors\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003e@alt-glitch\u003c/strong\u003e (Siddharth Balyan) — 2 PRs: Nix flake with uv2nix build, NixOS module, and persistent container mode (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/20\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/20/hovercard\"\u003e#20\u003c/a\u003e); auto-generated config keys and suffix PATHs for Nix builds (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3061\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3061/hovercard\"\u003e#3061\u003c/a\u003e, \u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3274\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3274/hovercard\"\u003e#3274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e@ctlst\u003c/strong\u003e — 1 PR: Prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/2701\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/2701/hovercard\"\u003e#2701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e@memosr\u003c/strong\u003e (memosr.eth) — 1 PR: Add request timeouts to \u003ccode\u003esend_message_tool\u003c/code\u003e HTTP calls (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3162\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3162/hovercard\"\u003e#3162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e@mehmoodosman\u003c/strong\u003e (Osman Mehmood) — 1 PR: Fix Discord docs for Public Bot setting (\u003ca href=\"https://github.com/NousResearch/hermes-agent/pull/3519\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/NousResearch/hermes-agent/pull/3519/hovercard\"\u003e#3519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAll Contributors\u003c/h3\u003e\u003ca id=\"user-content-all-contributors\" class=\"anchor\" aria-label=\"Permalink: All Contributors\" href=\"#all-contributors\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e@alt-glitch, @ctlst, @mehmoodosman, @memosr, @teknium1\u003c/p\u003e\n\u003chr\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/NousResearch/hermes-agent/compare/v2026.3.23...v2026.3.28\"\u003ev2026.3.23...v2026.3.28\u003c/a\u003e\u003c/p\u003e\n\u003c/article\u003e","richTextTruncated":false,"renderedFileInfo":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"Hermes Agent v0.5.0 (v2026.3.28)","fully_qualified_name":"Hermes Agent v0.5.0 (v2026.3.28)","kind":"section_1","ident_start":2,"ident_end":34,"extent_start":0,"extent_end":32765,"ident_utf16":{"start":{"line_number":0,"utf16_col":2},"end":{"line_number":0,"utf16_col":34}},"extent_utf16":{"start":{"line_number":0,"utf16_col":0},"end":{"line_number":348,"utf16_col":0}}},{"name":"✨ Highlights","fully_qualified_name":"✨ Highlights","kind":"section_2","ident_start":351,"ident_end":365,"extent_start":348,"extent_end":3341,"ident_utf16":{"start":{"line_number":8,"utf16_col":3},"end":{"line_number":8,"utf16_col":15}},"extent_utf16":{"start":{"line_number":8,"utf16_col":0},"end":{"line_number":30,"utf16_col":0}}},{"name":"🏗️ Core Agent \u0026 Architecture","fully_qualified_name":"🏗️ Core Agent \u0026 Architecture","kind":"section_2","ident_start":3344,"ident_end":3377,"extent_start":3341,"extent_end":11655,"ident_utf16":{"start":{"line_number":30,"utf16_col":3},"end":{"line_number":30,"utf16_col":32}},"extent_utf16":{"start":{"line_number":30,"utf16_col":0},"end":{"line_number":104,"utf16_col":0}}},{"name":"New Provider: Hugging Face","fully_qualified_name":"New Provider: Hugging Face","kind":"section_3","ident_start":3383,"ident_end":3409,"extent_start":3379,"extent_end":3900,"ident_utf16":{"start":{"line_number":32,"utf16_col":4},"end":{"line_number":32,"utf16_col":30}},"extent_utf16":{"start":{"line_number":32,"utf16_col":0},"end":{"line_number":37,"utf16_col":0}}},{"name":"Provider \u0026 Model Improvements","fully_qualified_name":"Provider \u0026 Model Improvements","kind":"section_3","ident_start":3904,"ident_end":3933,"extent_start":3900,"extent_end":5170,"ident_utf16":{"start":{"line_number":37,"utf16_col":4},"end":{"line_number":37,"utf16_col":33}},"extent_utf16":{"start":{"line_number":37,"utf16_col":0},"end":{"line_number":47,"utf16_col":0}}},{"name":"Agent Loop \u0026 Conversation","fully_qualified_name":"Agent Loop \u0026 Conversation","kind":"section_3","ident_start":5174,"ident_end":5199,"extent_start":5170,"extent_end":7683,"ident_utf16":{"start":{"line_number":47,"utf16_col":4},"end":{"line_number":47,"utf16_col":29}},"extent_utf16":{"start":{"line_number":47,"utf16_col":0},"end":{"line_number":66,"utf16_col":0}}},{"name":"Streaming \u0026 Reasoning","fully_qualified_name":"Streaming \u0026 Reasoning","kind":"section_3","ident_start":7687,"ident_end":7708,"extent_start":7683,"extent_end":8668,"ident_utf16":{"start":{"line_number":66,"utf16_col":4},"end":{"line_number":66,"utf16_col":25}},"extent_utf16":{"start":{"line_number":66,"utf16_col":0},"end":{"line_number":75,"utf16_col":0}}},{"name":"Session \u0026 Memory","fully_qualified_name":"Session \u0026 Memory","kind":"section_3","ident_start":8672,"ident_end":8688,"extent_start":8668,"extent_end":9815,"ident_utf16":{"start":{"line_number":75,"utf16_col":4},"end":{"line_number":75,"utf16_col":20}},"extent_utf16":{"start":{"line_number":75,"utf16_col":0},"end":{"line_number":85,"utf16_col":0}}},{"name":"Context Compression","fully_qualified_name":"Context Compression","kind":"section_3","ident_start":9819,"ident_end":9838,"extent_start":9815,"extent_end":10512,"ident_utf16":{"start":{"line_number":85,"utf16_col":4},"end":{"line_number":85,"utf16_col":23}},"extent_utf16":{"start":{"line_number":85,"utf16_col":0},"end":{"line_number":92,"utf16_col":0}}},{"name":"Architecture \u0026 Dependencies","fully_qualified_name":"Architecture \u0026 Dependencies","kind":"section_3","ident_start":10516,"ident_end":10543,"extent_start":10512,"extent_end":11655,"ident_utf16":{"start":{"line_number":92,"utf16_col":4},"end":{"line_number":92,"utf16_col":31}},"extent_utf16":{"start":{"line_number":92,"utf16_col":0},"end":{"line_number":104,"utf16_col":0}}},{"name":"📱 Messaging Platforms (Gateway)","fully_qualified_name":"📱 Messaging Platforms (Gateway)","kind":"section_2","ident_start":11658,"ident_end":11692,"extent_start":11655,"extent_end":15813,"ident_utf16":{"start":{"line_number":104,"utf16_col":3},"end":{"line_number":104,"utf16_col":35}},"extent_utf16":{"start":{"line_number":104,"utf16_col":0},"end":{"line_number":154,"utf16_col":0}}},{"name":"Telegram","fully_qualified_name":"Telegram","kind":"section_3","ident_start":11698,"ident_end":11706,"extent_start":11694,"extent_end":12462,"ident_utf16":{"start":{"line_number":106,"utf16_col":4},"end":{"line_number":106,"utf16_col":12}},"extent_utf16":{"start":{"line_number":106,"utf16_col":0},"end":{"line_number":113,"utf16_col":0}}},{"name":"Discord","fully_qualified_name":"Discord","kind":"section_3","ident_start":12466,"ident_end":12473,"extent_start":12462,"extent_end":12600,"ident_utf16":{"start":{"line_number":113,"utf16_col":4},"end":{"line_number":113,"utf16_col":11}},"extent_utf16":{"start":{"line_number":113,"utf16_col":0},"end":{"line_number":116,"utf16_col":0}}},{"name":"Slack","fully_qualified_name":"Slack","kind":"section_3","ident_start":12604,"ident_end":12609,"extent_start":12600,"extent_end":12849,"ident_utf16":{"start":{"line_number":116,"utf16_col":4},"end":{"line_number":116,"utf16_col":9}},"extent_utf16":{"start":{"line_number":116,"utf16_col":0},"end":{"line_number":120,"utf16_col":0}}},{"name":"WhatsApp","fully_qualified_name":"WhatsApp","kind":"section_3","ident_start":12853,"ident_end":12861,"extent_start":12849,"extent_end":12988,"ident_utf16":{"start":{"line_number":120,"utf16_col":4},"end":{"line_number":120,"utf16_col":12}},"extent_utf16":{"start":{"line_number":120,"utf16_col":0},"end":{"line_number":123,"utf16_col":0}}},{"name":"Matrix","fully_qualified_name":"Matrix","kind":"section_3","ident_start":12992,"ident_end":12998,"extent_start":12988,"extent_end":13324,"ident_utf16":{"start":{"line_number":123,"utf16_col":4},"end":{"line_number":123,"utf16_col":10}},"extent_utf16":{"start":{"line_number":123,"utf16_col":0},"end":{"line_number":128,"utf16_col":0}}},{"name":"Signal","fully_qualified_name":"Signal","kind":"section_3","ident_start":13328,"ident_end":13334,"extent_start":13324,"extent_end":13456,"ident_utf16":{"start":{"line_number":128,"utf16_col":4},"end":{"line_number":128,"utf16_col":10}},"extent_utf16":{"start":{"line_number":128,"utf16_col":0},"end":{"line_number":131,"utf16_col":0}}},{"name":"Email","fully_qualified_name":"Email","kind":"section_3","ident_start":13460,"ident_end":13465,"extent_start":13456,"extent_end":13592,"ident_utf16":{"start":{"line_number":131,"utf16_col":4},"end":{"line_number":131,"utf16_col":9}},"extent_utf16":{"start":{"line_number":131,"utf16_col":0},"end":{"line_number":134,"utf16_col":0}}},{"name":"Gateway Core","fully_qualified_name":"Gateway Core","kind":"section_3","ident_start":13596,"ident_end":13608,"extent_start":13592,"extent_end":15813,"ident_utf16":{"start":{"line_number":134,"utf16_col":4},"end":{"line_number":134,"utf16_col":16}},"extent_utf16":{"start":{"line_number":134,"utf16_col":0},"end":{"line_number":154,"utf16_col":0}}},{"name":"🖥️ CLI \u0026 User Experience","fully_qualified_name":"🖥️ CLI \u0026 User Experience","kind":"section_2","ident_start":15816,"ident_end":15845,"extent_start":15813,"extent_end":20797,"ident_utf16":{"start":{"line_number":154,"utf16_col":3},"end":{"line_number":154,"utf16_col":28}},"extent_utf16":{"start":{"line_number":154,"utf16_col":0},"end":{"line_number":198,"utf16_col":0}}},{"name":"Interactive CLI","fully_qualified_name":"Interactive CLI","kind":"section_3","ident_start":15851,"ident_end":15866,"extent_start":15847,"extent_end":19299,"ident_utf16":{"start":{"line_number":156,"utf16_col":4},"end":{"line_number":156,"utf16_col":19}},"extent_utf16":{"start":{"line_number":156,"utf16_col":0},"end":{"line_number":183,"utf16_col":0}}},{"name":"Setup \u0026 Configuration","fully_qualified_name":"Setup \u0026 Configuration","kind":"section_3","ident_start":19303,"ident_end":19324,"extent_start":19299,"extent_end":20797,"ident_utf16":{"start":{"line_number":183,"utf16_col":4},"end":{"line_number":183,"utf16_col":25}},"extent_utf16":{"start":{"line_number":183,"utf16_col":0},"end":{"line_number":198,"utf16_col":0}}},{"name":"🔧 Tool System","fully_qualified_name":"🔧 Tool System","kind":"section_2","ident_start":20800,"ident_end":20816,"extent_start":20797,"extent_end":23043,"ident_utf16":{"start":{"line_number":198,"utf16_col":3},"end":{"line_number":198,"utf16_col":17}},"extent_utf16":{"start":{"line_number":198,"utf16_col":0},"end":{"line_number":231,"utf16_col":0}}},{"name":"API Server","fully_qualified_name":"API Server","kind":"section_3","ident_start":20822,"ident_end":20832,"extent_start":20818,"extent_end":21322,"ident_utf16":{"start":{"line_number":200,"utf16_col":4},"end":{"line_number":200,"utf16_col":14}},"extent_utf16":{"start":{"line_number":200,"utf16_col":0},"end":{"line_number":206,"utf16_col":0}}},{"name":"Terminal \u0026 File Operations","fully_qualified_name":"Terminal \u0026 File Operations","kind":"section_3","ident_start":21326,"ident_end":21352,"extent_start":21322,"extent_end":21710,"ident_utf16":{"start":{"line_number":206,"utf16_col":4},"end":{"line_number":206,"utf16_col":30}},"extent_utf16":{"start":{"line_number":206,"utf16_col":0},"end":{"line_number":211,"utf16_col":0}}},{"name":"Browser \u0026 Vision","fully_qualified_name":"Browser \u0026 Vision","kind":"section_3","ident_start":21714,"ident_end":21730,"extent_start":21710,"extent_end":22110,"ident_utf16":{"start":{"line_number":211,"utf16_col":4},"end":{"line_number":211,"utf16_col":20}},"extent_utf16":{"start":{"line_number":211,"utf16_col":0},"end":{"line_number":216,"utf16_col":0}}},{"name":"MCP","fully_qualified_name":"MCP","kind":"section_3","ident_start":22114,"ident_end":22117,"extent_start":22110,"extent_end":22340,"ident_utf16":{"start":{"line_number":216,"utf16_col":4},"end":{"line_number":216,"utf16_col":7}},"extent_utf16":{"start":{"line_number":216,"utf16_col":0},"end":{"line_number":220,"utf16_col":0}}},{"name":"Auxiliary LLM","fully_qualified_name":"Auxiliary LLM","kind":"section_3","ident_start":22344,"ident_end":22357,"extent_start":22340,"extent_end":22638,"ident_utf16":{"start":{"line_number":220,"utf16_col":4},"end":{"line_number":220,"utf16_col":17}},"extent_utf16":{"start":{"line_number":220,"utf16_col":0},"end":{"line_number":224,"utf16_col":0}}},{"name":"Other Tools","fully_qualified_name":"Other Tools","kind":"section_3","ident_start":22642,"ident_end":22653,"extent_start":22638,"extent_end":23043,"ident_utf16":{"start":{"line_number":224,"utf16_col":4},"end":{"line_number":224,"utf16_col":15}},"extent_utf16":{"start":{"line_number":224,"utf16_col":0},"end":{"line_number":231,"utf16_col":0}}},{"name":"🧩 Skills Ecosystem","fully_qualified_name":"🧩 Skills Ecosystem","kind":"section_2","ident_start":23046,"ident_end":23067,"extent_start":23043,"extent_end":24607,"ident_utf16":{"start":{"line_number":231,"utf16_col":3},"end":{"line_number":231,"utf16_col":22}},"extent_utf16":{"start":{"line_number":231,"utf16_col":0},"end":{"line_number":250,"utf16_col":0}}},{"name":"Skills System","fully_qualified_name":"Skills System","kind":"section_3","ident_start":23073,"ident_end":23086,"extent_start":23069,"extent_end":24184,"ident_utf16":{"start":{"line_number":233,"utf16_col":4},"end":{"line_number":233,"utf16_col":17}},"extent_utf16":{"start":{"line_number":233,"utf16_col":0},"end":{"line_number":243,"utf16_col":0}}},{"name":"New Skills","fully_qualified_name":"New Skills","kind":"section_3","ident_start":24188,"ident_end":24198,"extent_start":24184,"extent_end":24607,"ident_utf16":{"start":{"line_number":243,"utf16_col":4},"end":{"line_number":243,"utf16_col":14}},"extent_utf16":{"start":{"line_number":243,"utf16_col":0},"end":{"line_number":250,"utf16_col":0}}},{"name":"🔒 Security \u0026 Reliability","fully_qualified_name":"🔒 Security \u0026 Reliability","kind":"section_2","ident_start":24610,"ident_end":24637,"extent_start":24607,"extent_end":26687,"ident_utf16":{"start":{"line_number":250,"utf16_col":3},"end":{"line_number":250,"utf16_col":28}},"extent_utf16":{"start":{"line_number":250,"utf16_col":0},"end":{"line_number":274,"utf16_col":0}}},{"name":"Security Hardening","fully_qualified_name":"Security Hardening","kind":"section_3","ident_start":24643,"ident_end":24661,"extent_start":24639,"extent_end":26144,"ident_utf16":{"start":{"line_number":252,"utf16_col":4},"end":{"line_number":252,"utf16_col":22}},"extent_utf16":{"start":{"line_number":252,"utf16_col":0},"end":{"line_number":266,"utf16_col":0}}},{"name":"Reliability","fully_qualified_name":"Reliability","kind":"section_3","ident_start":26148,"ident_end":26159,"extent_start":26144,"extent_end":26687,"ident_utf16":{"start":{"line_number":266,"utf16_col":4},"end":{"line_number":266,"utf16_col":15}},"extent_utf16":{"start":{"line_number":266,"utf16_col":0},"end":{"line_number":274,"utf16_col":0}}},{"name":"⚡ Performance","fully_qualified_name":"⚡ Performance","kind":"section_2","ident_start":26690,"ident_end":26705,"extent_start":26687,"extent_end":27112,"ident_utf16":{"start":{"line_number":274,"utf16_col":3},"end":{"line_number":274,"utf16_col":16}},"extent_utf16":{"start":{"line_number":274,"utf16_col":0},"end":{"line_number":282,"utf16_col":0}}},{"name":"🐛 Notable Bug Fixes","fully_qualified_name":"🐛 Notable Bug Fixes","kind":"section_2","ident_start":27115,"ident_end":27137,"extent_start":27112,"extent_end":29694,"ident_utf16":{"start":{"line_number":282,"utf16_col":3},"end":{"line_number":282,"utf16_col":23}},"extent_utf16":{"start":{"line_number":282,"utf16_col":0},"end":{"line_number":307,"utf16_col":0}}},{"name":"🧪 Testing","fully_qualified_name":"🧪 Testing","kind":"section_2","ident_start":29697,"ident_end":29709,"extent_start":29694,"extent_end":30228,"ident_utf16":{"start":{"line_number":307,"utf16_col":3},"end":{"line_number":307,"utf16_col":13}},"extent_utf16":{"start":{"line_number":307,"utf16_col":0},"end":{"line_number":316,"utf16_col":0}}},{"name":"📚 Documentation","fully_qualified_name":"📚 Documentation","kind":"section_2","ident_start":30231,"ident_end":30249,"extent_start":30228,"extent_end":31596,"ident_utf16":{"start":{"line_number":316,"utf16_col":3},"end":{"line_number":316,"utf16_col":19}},"extent_utf16":{"start":{"line_number":316,"utf16_col":0},"end":{"line_number":331,"utf16_col":0}}},{"name":"👥 Contributors","fully_qualified_name":"👥 Contributors","kind":"section_2","ident_start":31599,"ident_end":31616,"extent_start":31596,"extent_end":32765,"ident_utf16":{"start":{"line_number":331,"utf16_col":3},"end":{"line_number":331,"utf16_col":18}},"extent_utf16":{"start":{"line_number":331,"utf16_col":0},"end":{"line_number":348,"utf16_col":0}}},{"name":"Core","fully_qualified_name":"Core","kind":"section_3","ident_start":31622,"ident_end":31626,"extent_start":31618,"extent_end":31696,"ident_utf16":{"start":{"line_number":333,"utf16_col":4},"end":{"line_number":333,"utf16_col":8}},"extent_utf16":{"start":{"line_number":333,"utf16_col":0},"end":{"line_number":336,"utf16_col":0}}},{"name":"Community Contributors","fully_qualified_name":"Community Contributors","kind":"section_3","ident_start":31700,"ident_end":31722,"extent_start":31696,"extent_end":32559,"ident_utf16":{"start":{"line_number":336,"utf16_col":4},"end":{"line_number":336,"utf16_col":26}},"extent_utf16":{"start":{"line_number":336,"utf16_col":0},"end":{"line_number":342,"utf16_col":0}}},{"name":"All Contributors","fully_qualified_name":"All Contributors","kind":"section_3","ident_start":32563,"ident_end":32579,"extent_start":32559,"extent_end":32765,"ident_utf16":{"start":{"line_number":342,"utf16_col":4},"end":{"line_number":342,"utf16_col":20}},"extent_utf16":{"start":{"line_number":342,"utf16_col":0},"end":{"line_number":348,"utf16_col":0}}}]}},"codeViewLayoutRoute":{"repo":{"id":1207920400,"defaultBranch":"main","name":"hermes-agent","ownerLogin":"j32ryc","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2026-04-11T15:27:16.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8653014?v=4","public":true,"private":false,"isOrgOwned":false,"isArchived":false},"currentUser":null,"uploadToken":"kKpWL6Qbp1dhTVT84CaG53pcPX6dBLaqPMT2OLV3hDSe7S4V8pgQZbhGwcp5WZ8fuHLobv2JVt_-Q8hzHSkeqA","allShortcutsEnabled":false,"treeExpanded":true,"path":"RELEASE_v0.5.0.md","symbolsExpanded":false,"refInfo":{"name":"main","listCacheKey":"v0:1775921244.9886239","canEdit":false,"currentOid":"af9caec44fdab7a1b883dede16fe1ce8c2d60fb9"},"helpUrl":"https://docs.github.com","githubDevUrl":null},"codeViewFileTreeLayoutRoute":{"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":".plans","path":".plans","contentType":"directory"},{"name":"acp_adapter","path":"acp_adapter","contentType":"directory"},{"name":"acp_registry","path":"acp_registry","contentType":"directory"},{"name":"agent","path":"agent","contentType":"directory"},{"name":"assets","path":"assets","contentType":"directory"},{"name":"cron","path":"cron","contentType":"directory"},{"name":"datagen-config-examples","path":"datagen-config-examples","contentType":"directory"},{"name":"docker","path":"docker","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"environments","path":"environments","contentType":"directory"},{"name":"gateway","path":"gateway","contentType":"directory"},{"name":"hermes_cli","path":"hermes_cli","contentType":"directory"},{"name":"landingpage","path":"landingpage","contentType":"directory"},{"name":"nix","path":"nix","contentType":"directory"},{"name":"optional-skills","path":"optional-skills","contentType":"directory"},{"name":"packaging","path":"packaging","contentType":"directory"},{"name":"plans","path":"plans","contentType":"directory"},{"name":"plugins","path":"plugins","contentType":"directory"},{"name":"scripts","path":"scripts","contentType":"directory"},{"name":"skills","path":"skills","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":"tinker-atropos","path":"tinker-atropos","contentType":"submodule","submoduleUrl":"/nousresearch/tinker-atropos/tree/65f084ee8054a5d02aeac76e24ed60388511c82b","submoduleDisplayName":"tinker-atropos @ 65f084e"},{"name":"tools","path":"tools","contentType":"directory"},{"name":"website","path":"website","contentType":"directory"},{"name":".dockerignore","path":".dockerignore","contentType":"file"},{"name":".env.example","path":".env.example","contentType":"file"},{"name":".envrc","path":".envrc","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".gitmodules","path":".gitmodules","contentType":"file"},{"name":"AGENTS.md","path":"AGENTS.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"Dockerfile","path":"Dockerfile","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"MANIFEST.in","path":"MANIFEST.in","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"RELEASE_v0.2.0.md","path":"RELEASE_v0.2.0.md","contentType":"file"},{"name":"RELEASE_v0.3.0.md","path":"RELEASE_v0.3.0.md","contentType":"file"},{"name":"RELEASE_v0.4.0.md","path":"RELEASE_v0.4.0.md","contentType":"file"},{"name":"RELEASE_v0.5.0.md","path":"RELEASE_v0.5.0.md","contentType":"file"},{"name":"RELEASE_v0.6.0.md","path":"RELEASE_v0.6.0.md","contentType":"file"},{"name":"RELEASE_v0.7.0.md","path":"RELEASE_v0.7.0.md","contentType":"file"},{"name":"RELEASE_v0.8.0.md","path":"RELEASE_v0.8.0.md","contentType":"file"},{"name":"batch_runner.py","path":"batch_runner.py","contentType":"file"},{"name":"cli-config.yaml.example","path":"cli-config.yaml.example","contentType":"file"},{"name":"cli.py","path":"cli.py","contentType":"file"},{"name":"constraints-termux.txt","path":"constraints-termux.txt","contentType":"file"},{"name":"flake.lock","path":"flake.lock","contentType":"file"},{"name":"flake.nix","path":"flake.nix","contentType":"file"},{"name":"hermes","path":"hermes","contentType":"file"},{"name":"hermes_constants.py","path":"hermes_constants.py","contentType":"file"},{"name":"hermes_logging.py","path":"hermes_logging.py","contentType":"file"},{"name":"hermes_state.py","path":"hermes_state.py","contentType":"file"},{"name":"hermes_time.py","path":"hermes_time.py","contentType":"file"},{"name":"mcp_serve.py","path":"mcp_serve.py","contentType":"file"},{"name":"mini_swe_runner.py","path":"mini_swe_runner.py","contentType":"file"},{"name":"model_tools.py","path":"model_tools.py","contentType":"file"},{"name":"package-lock.json","path":"package-lock.json","contentType":"file"},{"name":"package.json","path":"package.json","contentType":"file"},{"name":"pyproject.toml","path":"pyproject.toml","contentType":"file"},{"name":"requirements.txt","path":"requirements.txt","contentType":"file"},{"name":"rl_cli.py","path":"rl_cli.py","contentType":"file"},{"name":"run_agent.py","path":"run_agent.py","contentType":"file"},{"name":"setup-hermes.sh","path":"setup-hermes.sh","contentType":"file"},{"name":"toolset_distributions.py","path":"toolset_distributions.py","contentType":"file"},{"name":"toolsets.py","path":"toolsets.py","contentType":"file"},{"name":"trajectory_compressor.py","path":"trajectory_compressor.py","contentType":"file"},{"name":"utils.py","path":"utils.py","contentType":"file"},{"name":"uv.lock","path":"uv.lock","contentType":"file"}],"totalCount":69}},"fileTreeProcessingTime":89.535818,"foldersToFetch":[]},"codeViewBlobLayoutRoute":{"codeLineWrapEnabled":false,"refInfo":{"name":"main","listCacheKey":"v0:1775921244.9886239","canEdit":false,"refType":"branch","currentOid":"af9caec44fdab7a1b883dede16fe1ce8c2d60fb9","canEditOnDefaultBranch":false,"fileExistsOnDefault":true},"path":"RELEASE_v0.5.0.md","blob":{"copilotSWEAgentEnabled":false,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/j32ryc/hermes-agent/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"RELEASE_v0.5.0.md","displayUrl":"https://github.com/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md?raw=true","headerInfo":{"blobSize":"32 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"1f8ce98","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fj32ryc%2Fhermes-agent%2Fblob%2Fmain%2FRELEASE_v0.5.0.md","isCSV":false,"isRichtext":true,"lineInfo":{"truncatedLoc":"348","truncatedSloc":"277"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"isIssueTemplate":false,"isDiscussionTemplate":false,"language":"Markdown","languageID":222,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/j32ryc/hermes-agent/blob/main/RELEASE_v0.5.0.md","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/j32ryc/hermes-agent/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/j32ryc/hermes-agent/raw/refs/heads/main/RELEASE_v0.5.0.md","renderImageOrRaw":false,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null},"copilotInfo":null,"copilotAccessAllowed":false,"copilotSpacesEnabled":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"isMarketplaceEnabled":true},"codeViewBlobLayoutRoute.StyledBlob":{"rawLines":["# Hermes Agent v0.5.0 (v2026.3.28)","","**Release Date:** March 28, 2026","","\u003e The hardening release — Hugging Face provider, /model command overhaul, Telegram Private Chat Topics, native Modal SDK, plugin lifecycle hooks, tool-use enforcement for GPT models, Nix flake, 50+ security and reliability fixes, and a comprehensive supply chain audit.","","---","","## ✨ Highlights","","- **Nous Portal now supports 400+ models** — The Nous Research inference portal has expanded dramatically, giving Hermes Agent users access to over 400 models through a single provider endpoint","","- **Hugging Face as a first-class inference provider** — Full integration with HF Inference API including curated agentic model picker that maps to OpenRouter analogues, live `/models` endpoint probe, and setup wizard flow ([#3419](https://github.com/NousResearch/hermes-agent/pull/3419), [#3440](https://github.com/NousResearch/hermes-agent/pull/3440))","","- **Telegram Private Chat Topics** — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat ([#3163](https://github.com/NousResearch/hermes-agent/pull/3163))","","- **Native Modal SDK backend** — Replaced swe-rex dependency with native Modal SDK (`Sandbox.create.aio` + `exec.aio`), eliminating tunnels and simplifying the Modal terminal backend ([#3538](https://github.com/NousResearch/hermes-agent/pull/3538))","","- **Plugin lifecycle hooks activated** — `pre_llm_call`, `post_llm_call`, `on_session_start`, and `on_session_end` hooks now fire in the agent loop and CLI/gateway, completing the plugin hook system ([#3542](https://github.com/NousResearch/hermes-agent/pull/3542))","","- **Improved OpenAI Model Reliability** — Added `GPT_TOOL_USE_GUIDANCE` to prevent GPT models from describing intended actions instead of making tool calls, plus automatic stripping of stale budget warnings from conversation history that caused models to avoid tools across turns ([#3528](https://github.com/NousResearch/hermes-agent/pull/3528))","","- **Nix flake** — Full uv2nix build, NixOS module with persistent container mode, auto-generated config keys from Python source, and suffix PATHs for agent-friendliness ([#20](https://github.com/NousResearch/hermes-agent/pull/20), [#3274](https://github.com/NousResearch/hermes-agent/pull/3274), [#3061](https://github.com/NousResearch/hermes-agent/pull/3061)) by @alt-glitch","","- **Supply chain hardening** — Removed compromised `litellm` dependency, pinned all dependency version ranges, regenerated `uv.lock` with hashes, added CI workflow scanning PRs for supply chain attack patterns, and bumped deps to fix CVEs ([#2796](https://github.com/NousResearch/hermes-agent/pull/2796), [#2810](https://github.com/NousResearch/hermes-agent/pull/2810), [#2812](https://github.com/NousResearch/hermes-agent/pull/2812), [#2816](https://github.com/NousResearch/hermes-agent/pull/2816), [#3073](https://github.com/NousResearch/hermes-agent/pull/3073))","","- **Anthropic output limits fix** — Replaced hardcoded 16K `max_tokens` with per-model native output limits (128K for Opus 4.6, 64K for Sonnet 4.6), fixing \"Response truncated\" and thinking-budget exhaustion on direct Anthropic API ([#3426](https://github.com/NousResearch/hermes-agent/pull/3426), [#3444](https://github.com/NousResearch/hermes-agent/pull/3444))","","---","","## 🏗️ Core Agent \u0026 Architecture","","### New Provider: Hugging Face","- First-class Hugging Face Inference API integration with auth, setup wizard, and model picker ([#3419](https://github.com/NousResearch/hermes-agent/pull/3419))","- Curated model list mapping OpenRouter agentic defaults to HF equivalents — providers with 8+ curated models skip live `/models` probe for speed ([#3440](https://github.com/NousResearch/hermes-agent/pull/3440))","- Added glm-5-turbo to Z.AI provider model list ([#3095](https://github.com/NousResearch/hermes-agent/pull/3095))","","### Provider \u0026 Model Improvements","- `/model` command overhaul — extracted shared `switch_model()` pipeline for CLI and gateway, custom endpoint support, provider-aware routing ([#2795](https://github.com/NousResearch/hermes-agent/pull/2795), [#2799](https://github.com/NousResearch/hermes-agent/pull/2799))","- Removed `/model` slash command from CLI and gateway in favor of `hermes model` subcommand ([#3080](https://github.com/NousResearch/hermes-agent/pull/3080))","- Preserve `custom` provider instead of silently remapping to `openrouter` ([#2792](https://github.com/NousResearch/hermes-agent/pull/2792))","- Read root-level `provider` and `base_url` from config.yaml into model config ([#3112](https://github.com/NousResearch/hermes-agent/pull/3112))","- Align Nous Portal model slugs with OpenRouter naming ([#3253](https://github.com/NousResearch/hermes-agent/pull/3253))","- Fix Alibaba provider default endpoint and model list ([#3484](https://github.com/NousResearch/hermes-agent/pull/3484))","- Allow MiniMax users to override `/v1` → `/anthropic` auto-correction ([#3553](https://github.com/NousResearch/hermes-agent/pull/3553))","- Migrate OAuth token refresh to `platform.claude.com` with fallback ([#3246](https://github.com/NousResearch/hermes-agent/pull/3246))","","### Agent Loop \u0026 Conversation","- **Improved OpenAI model reliability** — `GPT_TOOL_USE_GUIDANCE` prevents GPT models from describing actions instead of calling tools + automatic budget warning stripping from history ([#3528](https://github.com/NousResearch/hermes-agent/pull/3528))","- **Surface lifecycle events** — All retry, fallback, and compression events now surface to the user as formatted messages ([#3153](https://github.com/NousResearch/hermes-agent/pull/3153))","- **Anthropic output limits** — Per-model native output limits instead of hardcoded 16K `max_tokens` ([#3426](https://github.com/NousResearch/hermes-agent/pull/3426))","- **Thinking-budget exhaustion detection** — Skip useless continuation retries when model uses all output tokens on reasoning ([#3444](https://github.com/NousResearch/hermes-agent/pull/3444))","- Always prefer streaming for API calls to prevent hung subagents ([#3120](https://github.com/NousResearch/hermes-agent/pull/3120))","- Restore safe non-streaming fallback after stream failures ([#3020](https://github.com/NousResearch/hermes-agent/pull/3020))","- Give subagents independent iteration budgets ([#3004](https://github.com/NousResearch/hermes-agent/pull/3004))","- Update `api_key` in `_try_activate_fallback` for subagent auth ([#3103](https://github.com/NousResearch/hermes-agent/pull/3103))","- Graceful return on max retries instead of crashing thread ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Count compression restarts toward retry limit ([#3070](https://github.com/NousResearch/hermes-agent/pull/3070))","- Include tool tokens in preflight estimate, guard context probe persistence ([#3164](https://github.com/NousResearch/hermes-agent/pull/3164))","- Update context compressor limits after fallback activation ([#3305](https://github.com/NousResearch/hermes-agent/pull/3305))","- Validate empty user messages to prevent Anthropic API 400 errors ([#3322](https://github.com/NousResearch/hermes-agent/pull/3322))","- GLM reasoning-only and max-length handling ([#3010](https://github.com/NousResearch/hermes-agent/pull/3010))","- Increase API timeout default from 900s to 1800s for slow-thinking models ([#3431](https://github.com/NousResearch/hermes-agent/pull/3431))","- Send `max_tokens` for Claude/OpenRouter + retry SSE connection errors ([#3497](https://github.com/NousResearch/hermes-agent/pull/3497))","- Prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode ([#2701](https://github.com/NousResearch/hermes-agent/pull/2701)) by @ctlst","","### Streaming \u0026 Reasoning","- **Persist reasoning across gateway session turns** with new schema v6 columns (`reasoning`, `reasoning_details`, `codex_reasoning_items`) ([#2974](https://github.com/NousResearch/hermes-agent/pull/2974))","- Detect and kill stale SSE connections ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Fix stale stream detector race causing spurious `RemoteProtocolError` ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Skip duplicate callback for `\u003cthink\u003e`-extracted reasoning during streaming ([#3116](https://github.com/NousResearch/hermes-agent/pull/3116))","- Preserve reasoning fields in `rewrite_transcript` ([#3311](https://github.com/NousResearch/hermes-agent/pull/3311))","- Preserve Gemini thought signatures in streamed tool calls ([#2997](https://github.com/NousResearch/hermes-agent/pull/2997))","- Ensure first delta is fired during reasoning updates ([untagged commit](https://github.com/NousResearch/hermes-agent))","","### Session \u0026 Memory","- **Session search recent sessions mode** — Omit query to browse recent sessions with titles, previews, and timestamps ([#2533](https://github.com/NousResearch/hermes-agent/pull/2533))","- **Session config surfacing** on `/new`, `/reset`, and auto-reset ([#3321](https://github.com/NousResearch/hermes-agent/pull/3321))","- **Third-party session isolation** — `--source` flag for isolating sessions by origin ([#3255](https://github.com/NousResearch/hermes-agent/pull/3255))","- Add `/resume` CLI handler, session log truncation guard, `reopen_session` API ([#3315](https://github.com/NousResearch/hermes-agent/pull/3315))","- Clear compressor summary and turn counter on `/clear` and `/new` ([#3102](https://github.com/NousResearch/hermes-agent/pull/3102))","- Surface silent SessionDB failures that cause session data loss ([#2999](https://github.com/NousResearch/hermes-agent/pull/2999))","- Session search fallback preview on summarization failure ([#3478](https://github.com/NousResearch/hermes-agent/pull/3478))","- Prevent stale memory overwrites by flush agent ([#2687](https://github.com/NousResearch/hermes-agent/pull/2687))","","### Context Compression","- Replace dead `summary_target_tokens` with ratio-based scaling ([#2554](https://github.com/NousResearch/hermes-agent/pull/2554))","- Expose `compression.target_ratio`, `protect_last_n`, and `threshold` in `DEFAULT_CONFIG` ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Restore sane defaults and cap summary at 12K tokens ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Preserve transcript on `/compress` and hygiene compression ([#3556](https://github.com/NousResearch/hermes-agent/pull/3556))","- Update context pressure warnings and token estimates after compaction ([untagged commit](https://github.com/NousResearch/hermes-agent))","","### Architecture \u0026 Dependencies","- **Remove mini-swe-agent dependency** — Inline Docker and Modal backends directly ([#2804](https://github.com/NousResearch/hermes-agent/pull/2804))","- **Replace swe-rex with native Modal SDK** for Modal backend ([#3538](https://github.com/NousResearch/hermes-agent/pull/3538))","- **Plugin lifecycle hooks** — `pre_llm_call`, `post_llm_call`, `on_session_start`, `on_session_end` now fire in the agent loop ([#3542](https://github.com/NousResearch/hermes-agent/pull/3542))","- Fix plugin toolsets invisible in `hermes tools` and standalone processes ([#3457](https://github.com/NousResearch/hermes-agent/pull/3457))","- Consolidate `get_hermes_home()` and `parse_reasoning_effort()` ([#3062](https://github.com/NousResearch/hermes-agent/pull/3062))","- Remove unused Hermes-native PKCE OAuth flow ([#3107](https://github.com/NousResearch/hermes-agent/pull/3107))","- Remove ~100 unused imports across 55 files ([#3016](https://github.com/NousResearch/hermes-agent/pull/3016))","- Fix 154 f-strings, simplify getattr/URL patterns, remove dead code ([#3119](https://github.com/NousResearch/hermes-agent/pull/3119))","","---","","## 📱 Messaging Platforms (Gateway)","","### Telegram","- **Private Chat Topics** — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat ([#3163](https://github.com/NousResearch/hermes-agent/pull/3163))","- **Auto-discover fallback IPs via DNS-over-HTTPS** when `api.telegram.org` is unreachable ([#3376](https://github.com/NousResearch/hermes-agent/pull/3376))","- **Configurable reply threading mode** ([#2907](https://github.com/NousResearch/hermes-agent/pull/2907))","- Fall back to no `thread_id` on \"Message thread not found\" BadRequest ([#3390](https://github.com/NousResearch/hermes-agent/pull/3390))","- Self-reschedule reconnect when `start_polling` fails after 502 ([#3268](https://github.com/NousResearch/hermes-agent/pull/3268))","","### Discord","- Stop phantom typing indicator after agent turn completes ([#3003](https://github.com/NousResearch/hermes-agent/pull/3003))","","### Slack","- Send tool call progress messages to correct Slack thread ([#3063](https://github.com/NousResearch/hermes-agent/pull/3063))","- Scope progress thread fallback to Slack only ([#3488](https://github.com/NousResearch/hermes-agent/pull/3488))","","### WhatsApp","- Download documents, audio, and video media from messages ([#2978](https://github.com/NousResearch/hermes-agent/pull/2978))","","### Matrix","- Add missing Matrix entry in `PLATFORMS` dict ([#3473](https://github.com/NousResearch/hermes-agent/pull/3473))","- Harden e2ee access-token handling ([#3562](https://github.com/NousResearch/hermes-agent/pull/3562))","- Add backoff for `SyncError` in sync loop ([#3280](https://github.com/NousResearch/hermes-agent/pull/3280))","","### Signal","- Track SSE keepalive comments as connection activity ([#3316](https://github.com/NousResearch/hermes-agent/pull/3316))","","### Email","- Prevent unbounded growth of `_seen_uids` in EmailAdapter ([#3490](https://github.com/NousResearch/hermes-agent/pull/3490))","","### Gateway Core","- **Config-gated `/verbose` command** for messaging platforms — toggle tool output verbosity from chat ([#3262](https://github.com/NousResearch/hermes-agent/pull/3262))","- **Background review notifications** delivered to user chat ([#3293](https://github.com/NousResearch/hermes-agent/pull/3293))","- **Retry transient send failures** and notify user on exhaustion ([#3288](https://github.com/NousResearch/hermes-agent/pull/3288))","- Recover from hung agents — `/stop` hard-kills session lock ([#3104](https://github.com/NousResearch/hermes-agent/pull/3104))","- Thread-safe `SessionStore` — protect `_entries` with `threading.Lock` ([#3052](https://github.com/NousResearch/hermes-agent/pull/3052))","- Fix gateway token double-counting with cached agents — use absolute set instead of increment ([#3306](https://github.com/NousResearch/hermes-agent/pull/3306), [#3317](https://github.com/NousResearch/hermes-agent/pull/3317))","- Fingerprint full auth token in agent cache signature ([#3247](https://github.com/NousResearch/hermes-agent/pull/3247))","- Silence background agent terminal output ([#3297](https://github.com/NousResearch/hermes-agent/pull/3297))","- Include per-platform `ALLOW_ALL` and `SIGNAL_GROUP` in startup allowlist check ([#3313](https://github.com/NousResearch/hermes-agent/pull/3313))","- Include user-local bin paths in systemd unit PATH ([#3527](https://github.com/NousResearch/hermes-agent/pull/3527))","- Track background task references in `GatewayRunner` ([#3254](https://github.com/NousResearch/hermes-agent/pull/3254))","- Add request timeouts to HA, Email, Mattermost, SMS adapters ([#3258](https://github.com/NousResearch/hermes-agent/pull/3258))","- Add media download retry to Mattermost, Slack, and base cache ([#3323](https://github.com/NousResearch/hermes-agent/pull/3323))","- Detect virtualenv path instead of hardcoding `venv/` ([#2797](https://github.com/NousResearch/hermes-agent/pull/2797))","- Use `TERMINAL_CWD` for context file discovery, not process cwd ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Stop loading hermes repo AGENTS.md into gateway sessions (~10k wasted tokens) ([#2891](https://github.com/NousResearch/hermes-agent/pull/2891))","","---","","## 🖥️ CLI \u0026 User Experience","","### Interactive CLI","- **Configurable busy input mode** + fix `/queue` always working ([#3298](https://github.com/NousResearch/hermes-agent/pull/3298))","- **Preserve user input on multiline paste** ([#3065](https://github.com/NousResearch/hermes-agent/pull/3065))","- **Tool generation callback** — streaming \"preparing terminal…\" updates during tool argument generation ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Show tool progress for substantive tools, not just \"preparing\" ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Buffer reasoning preview chunks and fix duplicate display ([#3013](https://github.com/NousResearch/hermes-agent/pull/3013))","- Prevent reasoning box from rendering 3x during tool-calling loops ([#3405](https://github.com/NousResearch/hermes-agent/pull/3405))","- Eliminate \"Event loop is closed\" / \"Press ENTER to continue\" during idle — three-layer fix with `neuter_async_httpx_del()`, custom exception handler, and stale client cleanup ([#3398](https://github.com/NousResearch/hermes-agent/pull/3398))","- Fix status bar shows 26K instead of 260K for token counts with trailing zeros ([#3024](https://github.com/NousResearch/hermes-agent/pull/3024))","- Fix status bar duplicates and degrades during long sessions ([#3291](https://github.com/NousResearch/hermes-agent/pull/3291))","- Refresh TUI before background task output to prevent status bar overlap ([#3048](https://github.com/NousResearch/hermes-agent/pull/3048))","- Suppress KawaiiSpinner animation under `patch_stdout` ([#2994](https://github.com/NousResearch/hermes-agent/pull/2994))","- Skip KawaiiSpinner when TUI handles tool progress ([#2973](https://github.com/NousResearch/hermes-agent/pull/2973))","- Guard `isatty()` against closed streams via `_is_tty` property ([#3056](https://github.com/NousResearch/hermes-agent/pull/3056))","- Ensure single closure of streaming boxes during tool generation ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Cap context pressure percentage at 100% in display ([#3480](https://github.com/NousResearch/hermes-agent/pull/3480))","- Clean up HTML error messages in CLI display ([#3069](https://github.com/NousResearch/hermes-agent/pull/3069))","- Show HTTP status code and 400 body in API error output ([#3096](https://github.com/NousResearch/hermes-agent/pull/3096))","- Extract useful info from HTML error pages, dump debug on max retries ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Prevent TypeError on startup when `base_url` is None ([#3068](https://github.com/NousResearch/hermes-agent/pull/3068))","- Prevent update crash in non-TTY environments ([#3094](https://github.com/NousResearch/hermes-agent/pull/3094))","- Handle EOFError in sessions delete/prune confirmation prompts ([#3101](https://github.com/NousResearch/hermes-agent/pull/3101))","- Catch KeyboardInterrupt during `flush_memories` on exit and in exit cleanup handlers ([#3025](https://github.com/NousResearch/hermes-agent/pull/3025), [#3257](https://github.com/NousResearch/hermes-agent/pull/3257))","- Guard `.strip()` against None values from YAML config ([#3552](https://github.com/NousResearch/hermes-agent/pull/3552))","- Guard `config.get()` against YAML null values to prevent AttributeError ([#3377](https://github.com/NousResearch/hermes-agent/pull/3377))","- Store asyncio task references to prevent GC mid-execution ([#3267](https://github.com/NousResearch/hermes-agent/pull/3267))","","### Setup \u0026 Configuration","- Use explicit key mapping for returning-user menu dispatch instead of positional index ([#3083](https://github.com/NousResearch/hermes-agent/pull/3083))","- Use `sys.executable` for pip in update commands to fix PEP 668 ([#3099](https://github.com/NousResearch/hermes-agent/pull/3099))","- Harden `hermes update` against diverged history, non-main branches, and gateway edge cases ([#3492](https://github.com/NousResearch/hermes-agent/pull/3492))","- OpenClaw migration overwrites defaults and setup wizard skips imported sections — fixed ([#3282](https://github.com/NousResearch/hermes-agent/pull/3282))","- Stop recursive AGENTS.md walk, load top-level only ([#3110](https://github.com/NousResearch/hermes-agent/pull/3110))","- Add macOS Homebrew paths to browser and terminal PATH resolution ([#2713](https://github.com/NousResearch/hermes-agent/pull/2713))","- YAML boolean handling for `tool_progress` config ([#3300](https://github.com/NousResearch/hermes-agent/pull/3300))","- Reset default SOUL.md to baseline identity text ([#3159](https://github.com/NousResearch/hermes-agent/pull/3159))","- Reject relative cwd paths for container terminal backends ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Add explicit `hermes-api-server` toolset for API server platform ([#3304](https://github.com/NousResearch/hermes-agent/pull/3304))","- Reorder setup wizard providers — OpenRouter first ([untagged commit](https://github.com/NousResearch/hermes-agent))","","---","","## 🔧 Tool System","","### API Server","- **Idempotency-Key support**, body size limit, and OpenAI error envelope ([#2903](https://github.com/NousResearch/hermes-agent/pull/2903))","- Allow Idempotency-Key in CORS headers ([#3530](https://github.com/NousResearch/hermes-agent/pull/3530))","- Cancel orphaned agent + true interrupt on SSE disconnect ([#3427](https://github.com/NousResearch/hermes-agent/pull/3427))","- Fix streaming breaks when agent makes tool calls ([#2985](https://github.com/NousResearch/hermes-agent/pull/2985))","","### Terminal \u0026 File Operations","- Handle addition-only hunks in V4A patch parser ([#3325](https://github.com/NousResearch/hermes-agent/pull/3325))","- Exponential backoff for persistent shell polling ([#2996](https://github.com/NousResearch/hermes-agent/pull/2996))","- Add timeout to subprocess calls in `context_references` ([#3469](https://github.com/NousResearch/hermes-agent/pull/3469))","","### Browser \u0026 Vision","- Handle 402 insufficient credits error in vision tool ([#2802](https://github.com/NousResearch/hermes-agent/pull/2802))","- Fix `browser_vision` ignores `auxiliary.vision.timeout` config ([#2901](https://github.com/NousResearch/hermes-agent/pull/2901))","- Make browser command timeout configurable via config.yaml ([#2801](https://github.com/NousResearch/hermes-agent/pull/2801))","","### MCP","- MCP toolset resolution for runtime and config ([#3252](https://github.com/NousResearch/hermes-agent/pull/3252))","- Add MCP tool name collision protection ([#3077](https://github.com/NousResearch/hermes-agent/pull/3077))","","### Auxiliary LLM","- Guard aux LLM calls against None content + reasoning fallback + retry ([#3449](https://github.com/NousResearch/hermes-agent/pull/3449))","- Catch ImportError from `build_anthropic_client` in vision auto-detection ([#3312](https://github.com/NousResearch/hermes-agent/pull/3312))","","### Other Tools","- Add request timeouts to `send_message_tool` HTTP calls ([#3162](https://github.com/NousResearch/hermes-agent/pull/3162)) by @memosr","- Auto-repair `jobs.json` with invalid control characters ([#3537](https://github.com/NousResearch/hermes-agent/pull/3537))","- Enable fine-grained tool streaming for Claude/OpenRouter ([#3497](https://github.com/NousResearch/hermes-agent/pull/3497))","","---","","## 🧩 Skills Ecosystem","","### Skills System","- **Env var passthrough** for skills and user config — skills can declare environment variables to pass through ([#2807](https://github.com/NousResearch/hermes-agent/pull/2807))","- Cache skills prompt with shared `skill_utils` module for faster TTFT ([#3421](https://github.com/NousResearch/hermes-agent/pull/3421))","- Avoid redundant file re-read for skill conditions ([#2992](https://github.com/NousResearch/hermes-agent/pull/2992))","- Use Git Trees API to prevent silent subdirectory loss during install ([#2995](https://github.com/NousResearch/hermes-agent/pull/2995))","- Fix skills-sh install for deeply nested repo structures ([#2980](https://github.com/NousResearch/hermes-agent/pull/2980))","- Handle null metadata in skill frontmatter ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Preserve trust for skills-sh identifiers + reduce resolution churn ([#3251](https://github.com/NousResearch/hermes-agent/pull/3251))","- Agent-created skills were incorrectly treated as untrusted community content — fixed ([untagged commit](https://github.com/NousResearch/hermes-agent))","","### New Skills","- **G0DM0D3 godmode jailbreaking skill** + docs ([#3157](https://github.com/NousResearch/hermes-agent/pull/3157))","- **Docker management skill** added to optional-skills ([#3060](https://github.com/NousResearch/hermes-agent/pull/3060))","- **OpenClaw migration v2** — 17 new modules, terminal recap for migrating from OpenClaw to Hermes ([#2906](https://github.com/NousResearch/hermes-agent/pull/2906))","","---","","## 🔒 Security \u0026 Reliability","","### Security Hardening","- **SSRF protection** added to `browser_navigate` ([#3058](https://github.com/NousResearch/hermes-agent/pull/3058))","- **SSRF protection** added to `vision_tools` and `web_tools` (hardened) ([#2679](https://github.com/NousResearch/hermes-agent/pull/2679))","- **Restrict subagent toolsets** to parent's enabled set ([#3269](https://github.com/NousResearch/hermes-agent/pull/3269))","- **Prevent zip-slip path traversal** in self-update ([#3250](https://github.com/NousResearch/hermes-agent/pull/3250))","- **Prevent shell injection** in `_expand_path` via `~user` path suffix ([#2685](https://github.com/NousResearch/hermes-agent/pull/2685))","- **Normalize input** before dangerous command detection ([#3260](https://github.com/NousResearch/hermes-agent/pull/3260))","- Make tirith block verdicts approvable instead of hard-blocking ([#3428](https://github.com/NousResearch/hermes-agent/pull/3428))","- Remove compromised `litellm`/`typer`/`platformdirs` from deps ([#2796](https://github.com/NousResearch/hermes-agent/pull/2796))","- Pin all dependency version ranges ([#2810](https://github.com/NousResearch/hermes-agent/pull/2810))","- Regenerate `uv.lock` with hashes, use lockfile in setup ([#2812](https://github.com/NousResearch/hermes-agent/pull/2812))","- Bump dependencies to fix CVEs + regenerate `uv.lock` ([#3073](https://github.com/NousResearch/hermes-agent/pull/3073))","- Supply chain audit CI workflow for PR scanning ([#2816](https://github.com/NousResearch/hermes-agent/pull/2816))","","### Reliability","- **SQLite WAL write-lock contention** causing 15-20s TUI freeze — fixed ([#3385](https://github.com/NousResearch/hermes-agent/pull/3385))","- **SQLite concurrency hardening** + session transcript integrity ([#3249](https://github.com/NousResearch/hermes-agent/pull/3249))","- Prevent recurring cron job re-fire on gateway crash/restart loop ([#3396](https://github.com/NousResearch/hermes-agent/pull/3396))","- Mark cron session as ended after job completes ([#2998](https://github.com/NousResearch/hermes-agent/pull/2998))","","---","","## ⚡ Performance","","- **TTFT startup optimizations** — salvaged easy-win startup improvements ([#3395](https://github.com/NousResearch/hermes-agent/pull/3395))","- Cache skills prompt with shared `skill_utils` module ([#3421](https://github.com/NousResearch/hermes-agent/pull/3421))","- Avoid redundant file re-read for skill conditions in prompt builder ([#2992](https://github.com/NousResearch/hermes-agent/pull/2992))","","---","","## 🐛 Notable Bug Fixes","","- Fix gateway token double-counting with cached agents ([#3306](https://github.com/NousResearch/hermes-agent/pull/3306), [#3317](https://github.com/NousResearch/hermes-agent/pull/3317))","- Fix \"Event loop is closed\" / \"Press ENTER to continue\" during idle sessions ([#3398](https://github.com/NousResearch/hermes-agent/pull/3398))","- Fix reasoning box rendering 3x during tool-calling loops ([#3405](https://github.com/NousResearch/hermes-agent/pull/3405))","- Fix status bar shows 26K instead of 260K for token counts ([#3024](https://github.com/NousResearch/hermes-agent/pull/3024))","- Fix `/queue` always working regardless of config ([#3298](https://github.com/NousResearch/hermes-agent/pull/3298))","- Fix phantom Discord typing indicator after agent turn ([#3003](https://github.com/NousResearch/hermes-agent/pull/3003))","- Fix Slack progress messages appearing in wrong thread ([#3063](https://github.com/NousResearch/hermes-agent/pull/3063))","- Fix WhatsApp media downloads (documents, audio, video) ([#2978](https://github.com/NousResearch/hermes-agent/pull/2978))","- Fix Telegram \"Message thread not found\" killing progress messages ([#3390](https://github.com/NousResearch/hermes-agent/pull/3390))","- Fix OpenClaw migration overwriting defaults ([#3282](https://github.com/NousResearch/hermes-agent/pull/3282))","- Fix returning-user setup menu dispatching wrong section ([#3083](https://github.com/NousResearch/hermes-agent/pull/3083))","- Fix `hermes update` PEP 668 \"externally-managed-environment\" error ([#3099](https://github.com/NousResearch/hermes-agent/pull/3099))","- Fix subagents hitting `max_iterations` prematurely via shared budget ([#3004](https://github.com/NousResearch/hermes-agent/pull/3004))","- Fix YAML boolean handling for `tool_progress` config ([#3300](https://github.com/NousResearch/hermes-agent/pull/3300))","- Fix `config.get()` crashes on YAML null values ([#3377](https://github.com/NousResearch/hermes-agent/pull/3377))","- Fix `.strip()` crash on None values from YAML config ([#3552](https://github.com/NousResearch/hermes-agent/pull/3552))","- Fix hung agents on gateway — `/stop` now hard-kills session lock ([#3104](https://github.com/NousResearch/hermes-agent/pull/3104))","- Fix `_custom` provider silently remapped to `openrouter` ([#2792](https://github.com/NousResearch/hermes-agent/pull/2792))","- Fix Matrix missing from `PLATFORMS` dict ([#3473](https://github.com/NousResearch/hermes-agent/pull/3473))","- Fix Email adapter unbounded `_seen_uids` growth ([#3490](https://github.com/NousResearch/hermes-agent/pull/3490))","","---","","## 🧪 Testing","","- Pin `agent-client-protocol` \u003c 0.9 to handle breaking upstream release ([#3320](https://github.com/NousResearch/hermes-agent/pull/3320))","- Catch anthropic ImportError in vision auto-detection tests ([#3312](https://github.com/NousResearch/hermes-agent/pull/3312))","- Update retry-exhaust test for new graceful return behavior ([#3320](https://github.com/NousResearch/hermes-agent/pull/3320))","- Add regression tests for null metadata frontmatter ([untagged commit](https://github.com/NousResearch/hermes-agent))","","---","","## 📚 Documentation","","- Update all docs for `/model` command overhaul and custom provider support ([#2800](https://github.com/NousResearch/hermes-agent/pull/2800))","- Fix stale and incorrect documentation across 18 files ([#2805](https://github.com/NousResearch/hermes-agent/pull/2805))","- Document 9 previously undocumented features ([#2814](https://github.com/NousResearch/hermes-agent/pull/2814))","- Add missing skills, CLI commands, and messaging env vars to docs ([#2809](https://github.com/NousResearch/hermes-agent/pull/2809))","- Fix api-server response storage documentation — SQLite, not in-memory ([#2819](https://github.com/NousResearch/hermes-agent/pull/2819))","- Quote pip install extras to fix zsh glob errors ([#2815](https://github.com/NousResearch/hermes-agent/pull/2815))","- Unify hooks documentation — add plugin hooks to hooks page, add `session:end` event ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Clarify two-mode behavior in `session_search` schema description ([untagged commit](https://github.com/NousResearch/hermes-agent))","- Fix Discord Public Bot setting for Discord-provided invite link ([#3519](https://github.com/NousResearch/hermes-agent/pull/3519)) by @mehmoodosman","- Revise v0.4.0 changelog — fix feature attribution, reorder sections ([untagged commit](https://github.com/NousResearch/hermes-agent))","","---","","## 👥 Contributors","","### Core","- **@teknium1** — 157 PRs covering the full scope of this release","","### Community Contributors","- **@alt-glitch** (Siddharth Balyan) — 2 PRs: Nix flake with uv2nix build, NixOS module, and persistent container mode ([#20](https://github.com/NousResearch/hermes-agent/pull/20)); auto-generated config keys and suffix PATHs for Nix builds ([#3061](https://github.com/NousResearch/hermes-agent/pull/3061), [#3274](https://github.com/NousResearch/hermes-agent/pull/3274))","- **@ctlst** — 1 PR: Prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode ([#2701](https://github.com/NousResearch/hermes-agent/pull/2701))","- **@memosr** (memosr.eth) — 1 PR: Add request timeouts to `send_message_tool` HTTP calls ([#3162](https://github.com/NousResearch/hermes-agent/pull/3162))","- **@mehmoodosman** (Osman Mehmood) — 1 PR: Fix Discord docs for Public Bot setting ([#3519](https://github.com/NousResearch/hermes-agent/pull/3519))","","### All Contributors","@alt-glitch, @ctlst, @mehmoodosman, @memosr, @teknium1","","---","","**Full Changelog**: [v2026.3.23...v2026.3.28](https://github.com/NousResearch/hermes-agent/compare/v2026.3.23...v2026.3.28)"],"stylingDirectives":[[[0,34,"pl-mh"],[2,34,"pl-en"]],[],[[0,2,"pl-s"],[15,17,"pl-s"]],[],[[0,269,"pl-ent"],[0,2,"pl-ent"]],[[0,0,"pl-ent"]],[[0,3,"pl-ms"]],[],[[0,15,"pl-mh"],[3,15,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[40,42,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[52,54,"pl-s"],[175,176,"pl-s"],[176,183,"pl-c1"],[183,184,"pl-s"],[224,225,"pl-s"],[225,230,"pl-s"],[226,230,"pl-corl"],[230,231,"pl-s"],[231,232,"pl-s"],[232,286,"pl-corl"],[286,287,"pl-s"],[289,290,"pl-s"],[290,295,"pl-s"],[291,295,"pl-corl"],[295,296,"pl-s"],[296,297,"pl-s"],[297,351,"pl-corl"],[351,352,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[32,34,"pl-s"],[165,166,"pl-s"],[166,171,"pl-s"],[167,171,"pl-corl"],[171,172,"pl-s"],[172,173,"pl-s"],[173,227,"pl-corl"],[227,228,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[28,30,"pl-s"],[84,85,"pl-s"],[85,103,"pl-c1"],[103,104,"pl-s"],[107,108,"pl-s"],[108,116,"pl-c1"],[116,117,"pl-s"],[184,185,"pl-s"],[185,190,"pl-s"],[186,190,"pl-corl"],[190,191,"pl-s"],[191,192,"pl-s"],[192,246,"pl-corl"],[246,247,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[36,38,"pl-s"],[41,42,"pl-s"],[42,54,"pl-c1"],[54,55,"pl-s"],[57,58,"pl-s"],[58,71,"pl-c1"],[71,72,"pl-s"],[74,75,"pl-s"],[75,91,"pl-c1"],[91,92,"pl-s"],[98,99,"pl-s"],[99,113,"pl-c1"],[113,114,"pl-s"],[200,201,"pl-s"],[201,206,"pl-s"],[202,206,"pl-corl"],[206,207,"pl-s"],[207,208,"pl-s"],[208,262,"pl-corl"],[262,263,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[37,39,"pl-s"],[48,49,"pl-s"],[49,70,"pl-c1"],[70,71,"pl-s"],[281,282,"pl-s"],[282,287,"pl-s"],[283,287,"pl-corl"],[287,288,"pl-s"],[288,289,"pl-s"],[289,343,"pl-corl"],[343,344,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[13,15,"pl-s"],[170,171,"pl-s"],[171,174,"pl-s"],[172,174,"pl-corl"],[174,175,"pl-s"],[175,176,"pl-s"],[176,228,"pl-corl"],[228,229,"pl-s"],[231,232,"pl-s"],[232,237,"pl-s"],[233,237,"pl-corl"],[237,238,"pl-s"],[238,239,"pl-s"],[239,293,"pl-corl"],[293,294,"pl-s"],[296,297,"pl-s"],[297,302,"pl-s"],[298,302,"pl-corl"],[302,303,"pl-s"],[303,304,"pl-s"],[304,358,"pl-corl"],[358,359,"pl-s"],[364,375,"pl-s"],[365,375,"pl-corl"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[26,28,"pl-s"],[51,52,"pl-s"],[52,59,"pl-c1"],[59,60,"pl-s"],[123,124,"pl-s"],[124,131,"pl-c1"],[131,132,"pl-s"],[240,241,"pl-s"],[241,246,"pl-s"],[242,246,"pl-corl"],[246,247,"pl-s"],[247,248,"pl-s"],[248,302,"pl-corl"],[302,303,"pl-s"],[305,306,"pl-s"],[306,311,"pl-s"],[307,311,"pl-corl"],[311,312,"pl-s"],[312,313,"pl-s"],[313,367,"pl-corl"],[367,368,"pl-s"],[370,371,"pl-s"],[371,376,"pl-s"],[372,376,"pl-corl"],[376,377,"pl-s"],[377,378,"pl-s"],[378,432,"pl-corl"],[432,433,"pl-s"],[435,436,"pl-s"],[436,441,"pl-s"],[437,441,"pl-corl"],[441,442,"pl-s"],[442,443,"pl-s"],[443,497,"pl-corl"],[497,498,"pl-s"],[500,501,"pl-s"],[501,506,"pl-s"],[502,506,"pl-corl"],[506,507,"pl-s"],[507,508,"pl-s"],[508,562,"pl-corl"],[562,563,"pl-s"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[31,33,"pl-s"],[59,60,"pl-s"],[60,70,"pl-c1"],[70,71,"pl-s"],[233,234,"pl-s"],[234,239,"pl-s"],[235,239,"pl-corl"],[239,240,"pl-s"],[240,241,"pl-s"],[241,295,"pl-corl"],[295,296,"pl-s"],[298,299,"pl-s"],[299,304,"pl-s"],[300,304,"pl-corl"],[304,305,"pl-s"],[305,306,"pl-s"],[306,360,"pl-corl"],[360,361,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,32,"pl-mh"],[3,32,"pl-en"]],[],[[0,30,"pl-mh"],[4,30,"pl-en"]],[[0,1,"pl-v"],[96,97,"pl-s"],[97,102,"pl-s"],[98,102,"pl-corl"],[102,103,"pl-s"],[103,104,"pl-s"],[104,158,"pl-corl"],[158,159,"pl-s"]],[[0,1,"pl-v"],[120,121,"pl-s"],[121,128,"pl-c1"],[128,129,"pl-s"],[147,148,"pl-s"],[148,153,"pl-s"],[149,153,"pl-corl"],[153,154,"pl-s"],[154,155,"pl-s"],[155,209,"pl-corl"],[209,210,"pl-s"]],[[0,1,"pl-v"],[49,50,"pl-s"],[50,55,"pl-s"],[51,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,111,"pl-corl"],[111,112,"pl-s"]],[],[[0,33,"pl-mh"],[4,33,"pl-en"]],[[0,1,"pl-v"],[2,3,"pl-s"],[3,9,"pl-c1"],[9,10,"pl-s"],[47,48,"pl-s"],[48,62,"pl-c1"],[62,63,"pl-s"],[143,144,"pl-s"],[144,149,"pl-s"],[145,149,"pl-corl"],[149,150,"pl-s"],[150,151,"pl-s"],[151,205,"pl-corl"],[205,206,"pl-s"],[208,209,"pl-s"],[209,214,"pl-s"],[210,214,"pl-corl"],[214,215,"pl-s"],[215,216,"pl-s"],[216,270,"pl-corl"],[270,271,"pl-s"]],[[0,1,"pl-v"],[10,11,"pl-s"],[11,17,"pl-c1"],[17,18,"pl-s"],[66,67,"pl-s"],[67,79,"pl-c1"],[79,80,"pl-s"],[93,94,"pl-s"],[94,99,"pl-s"],[95,99,"pl-corl"],[99,100,"pl-s"],[100,101,"pl-s"],[101,155,"pl-corl"],[155,156,"pl-s"]],[[0,1,"pl-v"],[11,12,"pl-s"],[12,18,"pl-c1"],[18,19,"pl-s"],[62,63,"pl-s"],[63,73,"pl-c1"],[73,74,"pl-s"],[76,77,"pl-s"],[77,82,"pl-s"],[78,82,"pl-corl"],[82,83,"pl-s"],[83,84,"pl-s"],[84,138,"pl-corl"],[138,139,"pl-s"]],[[0,1,"pl-v"],[18,19,"pl-s"],[19,27,"pl-c1"],[27,28,"pl-s"],[33,34,"pl-s"],[34,42,"pl-c1"],[42,43,"pl-s"],[80,81,"pl-s"],[81,86,"pl-s"],[82,86,"pl-corl"],[86,87,"pl-s"],[87,88,"pl-s"],[88,142,"pl-corl"],[142,143,"pl-s"]],[[0,1,"pl-v"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[34,35,"pl-s"],[35,38,"pl-c1"],[38,39,"pl-s"],[42,43,"pl-s"],[43,53,"pl-c1"],[53,54,"pl-s"],[72,73,"pl-s"],[73,78,"pl-s"],[74,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[33,34,"pl-s"],[34,53,"pl-c1"],[53,54,"pl-s"],[70,71,"pl-s"],[71,76,"pl-s"],[72,76,"pl-corl"],[76,77,"pl-s"],[77,78,"pl-s"],[78,132,"pl-corl"],[132,133,"pl-s"]],[],[[0,29,"pl-mh"],[4,29,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[37,39,"pl-s"],[42,43,"pl-s"],[43,64,"pl-c1"],[64,65,"pl-s"],[186,187,"pl-s"],[187,192,"pl-s"],[188,192,"pl-corl"],[192,193,"pl-s"],[193,194,"pl-s"],[194,248,"pl-corl"],[248,249,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[28,30,"pl-s"],[124,125,"pl-s"],[125,130,"pl-s"],[126,130,"pl-corl"],[130,131,"pl-s"],[131,132,"pl-s"],[132,186,"pl-corl"],[186,187,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[27,29,"pl-s"],[88,89,"pl-s"],[89,99,"pl-c1"],[99,100,"pl-s"],[102,103,"pl-s"],[103,108,"pl-s"],[104,108,"pl-corl"],[108,109,"pl-s"],[109,110,"pl-s"],[110,164,"pl-corl"],[164,165,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[40,42,"pl-s"],[127,128,"pl-s"],[128,133,"pl-s"],[129,133,"pl-corl"],[133,134,"pl-s"],[134,135,"pl-s"],[135,189,"pl-corl"],[189,190,"pl-s"]],[[0,1,"pl-v"],[67,68,"pl-s"],[68,73,"pl-s"],[69,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,129,"pl-corl"],[129,130,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,67,"pl-s"],[63,67,"pl-corl"],[67,68,"pl-s"],[68,69,"pl-s"],[69,123,"pl-corl"],[123,124,"pl-s"]],[[0,1,"pl-v"],[48,49,"pl-s"],[49,54,"pl-s"],[50,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,110,"pl-corl"],[110,111,"pl-s"]],[[0,1,"pl-v"],[9,10,"pl-s"],[10,17,"pl-c1"],[17,18,"pl-s"],[22,23,"pl-s"],[23,45,"pl-c1"],[45,46,"pl-s"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[77,78,"pl-s"],[78,79,"pl-s"],[79,123,"pl-corl"],[123,124,"pl-s"]],[[0,1,"pl-v"],[49,50,"pl-s"],[50,55,"pl-s"],[51,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,111,"pl-corl"],[111,112,"pl-s"]],[[0,1,"pl-v"],[78,79,"pl-s"],[79,84,"pl-s"],[80,84,"pl-corl"],[84,85,"pl-s"],[85,86,"pl-s"],[86,140,"pl-corl"],[140,141,"pl-s"]],[[0,1,"pl-v"],[62,63,"pl-s"],[63,68,"pl-s"],[64,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,124,"pl-corl"],[124,125,"pl-s"]],[[0,1,"pl-v"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[46,47,"pl-s"],[47,52,"pl-s"],[48,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,108,"pl-corl"],[108,109,"pl-s"]],[[0,1,"pl-v"],[76,77,"pl-s"],[77,82,"pl-s"],[78,82,"pl-corl"],[82,83,"pl-s"],[83,84,"pl-s"],[84,138,"pl-corl"],[138,139,"pl-s"]],[[0,1,"pl-v"],[7,8,"pl-s"],[8,18,"pl-c1"],[18,19,"pl-s"],[73,74,"pl-s"],[74,79,"pl-s"],[75,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,135,"pl-corl"],[135,136,"pl-s"]],[[0,1,"pl-v"],[65,66,"pl-s"],[66,71,"pl-s"],[67,71,"pl-corl"],[71,72,"pl-s"],[72,73,"pl-s"],[73,127,"pl-corl"],[127,128,"pl-s"],[133,139,"pl-s"],[134,139,"pl-corl"]],[],[[0,25,"pl-mh"],[4,25,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[50,52,"pl-s"],[81,82,"pl-s"],[82,91,"pl-c1"],[91,92,"pl-s"],[94,95,"pl-s"],[95,112,"pl-c1"],[112,113,"pl-s"],[115,116,"pl-s"],[116,137,"pl-c1"],[137,138,"pl-s"],[141,142,"pl-s"],[142,147,"pl-s"],[143,147,"pl-corl"],[147,148,"pl-s"],[148,149,"pl-s"],[149,203,"pl-corl"],[203,204,"pl-s"]],[[0,1,"pl-v"],[41,42,"pl-s"],[57,58,"pl-s"],[58,59,"pl-s"],[59,103,"pl-corl"],[103,104,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,70,"pl-c1"],[70,71,"pl-s"],[73,74,"pl-s"],[89,90,"pl-s"],[90,91,"pl-s"],[91,135,"pl-corl"],[135,136,"pl-s"]],[[0,1,"pl-v"],[30,31,"pl-s"],[31,38,"pl-c1"],[38,39,"pl-s"],[78,79,"pl-s"],[79,84,"pl-s"],[80,84,"pl-corl"],[84,85,"pl-s"],[85,86,"pl-s"],[86,140,"pl-corl"],[140,141,"pl-s"]],[[0,1,"pl-v"],[31,32,"pl-s"],[32,50,"pl-c1"],[50,51,"pl-s"],[53,54,"pl-s"],[54,59,"pl-s"],[55,59,"pl-corl"],[59,60,"pl-s"],[60,61,"pl-s"],[61,115,"pl-corl"],[115,116,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,67,"pl-s"],[63,67,"pl-corl"],[67,68,"pl-s"],[68,69,"pl-s"],[69,123,"pl-corl"],[123,124,"pl-s"]],[[0,1,"pl-v"],[56,57,"pl-s"],[72,73,"pl-s"],[73,74,"pl-s"],[74,118,"pl-corl"],[118,119,"pl-s"]],[],[[0,20,"pl-mh"],[4,20,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[39,41,"pl-s"],[120,121,"pl-s"],[121,126,"pl-s"],[122,126,"pl-corl"],[126,127,"pl-s"],[127,128,"pl-s"],[128,182,"pl-corl"],[182,183,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[28,30,"pl-s"],[34,35,"pl-s"],[35,39,"pl-c1"],[39,40,"pl-s"],[42,43,"pl-s"],[43,49,"pl-c1"],[49,50,"pl-s"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[33,35,"pl-s"],[38,39,"pl-s"],[39,47,"pl-c1"],[47,48,"pl-s"],[88,89,"pl-s"],[89,94,"pl-s"],[90,94,"pl-corl"],[94,95,"pl-s"],[95,96,"pl-s"],[96,150,"pl-corl"],[150,151,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,14,"pl-c1"],[14,15,"pl-s"],[59,60,"pl-s"],[60,74,"pl-c1"],[74,75,"pl-s"],[81,82,"pl-s"],[82,87,"pl-s"],[83,87,"pl-corl"],[87,88,"pl-s"],[88,89,"pl-s"],[89,143,"pl-corl"],[143,144,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,54,"pl-c1"],[54,55,"pl-s"],[60,61,"pl-s"],[61,65,"pl-c1"],[65,66,"pl-s"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,56,"pl-s"],[52,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,112,"pl-corl"],[112,113,"pl-s"]],[],[[0,23,"pl-mh"],[4,23,"pl-en"]],[[0,1,"pl-v"],[15,16,"pl-s"],[16,37,"pl-c1"],[37,38,"pl-s"],[65,66,"pl-s"],[66,71,"pl-s"],[67,71,"pl-corl"],[71,72,"pl-s"],[72,73,"pl-s"],[73,127,"pl-corl"],[127,128,"pl-s"]],[[0,1,"pl-v"],[9,10,"pl-s"],[10,34,"pl-c1"],[34,35,"pl-s"],[37,38,"pl-s"],[38,52,"pl-c1"],[52,53,"pl-s"],[59,60,"pl-s"],[60,69,"pl-c1"],[69,70,"pl-s"],[74,75,"pl-s"],[75,89,"pl-c1"],[89,90,"pl-s"],[92,93,"pl-s"],[108,109,"pl-s"],[109,110,"pl-s"],[110,154,"pl-corl"],[154,155,"pl-s"]],[[0,1,"pl-v"],[55,56,"pl-s"],[71,72,"pl-s"],[72,73,"pl-s"],[73,117,"pl-corl"],[117,118,"pl-s"]],[[0,1,"pl-v"],[25,26,"pl-s"],[26,35,"pl-c1"],[35,36,"pl-s"],[62,63,"pl-s"],[63,68,"pl-s"],[64,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,124,"pl-corl"],[124,125,"pl-s"]],[[0,1,"pl-v"],[73,74,"pl-s"],[89,90,"pl-s"],[90,91,"pl-s"],[91,135,"pl-corl"],[135,136,"pl-s"]],[],[[0,31,"pl-mh"],[4,31,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[36,38,"pl-s"],[84,85,"pl-s"],[85,90,"pl-s"],[86,90,"pl-corl"],[90,91,"pl-s"],[91,92,"pl-s"],[92,146,"pl-corl"],[146,147,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[41,43,"pl-s"],[63,64,"pl-s"],[64,69,"pl-s"],[65,69,"pl-corl"],[69,70,"pl-s"],[70,71,"pl-s"],[71,125,"pl-corl"],[125,126,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[26,28,"pl-s"],[31,32,"pl-s"],[32,44,"pl-c1"],[44,45,"pl-s"],[47,48,"pl-s"],[48,61,"pl-c1"],[61,62,"pl-s"],[64,65,"pl-s"],[65,81,"pl-c1"],[81,82,"pl-s"],[84,85,"pl-s"],[85,99,"pl-c1"],[99,100,"pl-s"],[129,130,"pl-s"],[130,135,"pl-s"],[131,135,"pl-corl"],[135,136,"pl-s"],[136,137,"pl-s"],[137,191,"pl-corl"],[191,192,"pl-s"]],[[0,1,"pl-v"],[35,36,"pl-s"],[36,48,"pl-c1"],[48,49,"pl-s"],[76,77,"pl-s"],[77,82,"pl-s"],[78,82,"pl-corl"],[82,83,"pl-s"],[83,84,"pl-s"],[84,138,"pl-corl"],[138,139,"pl-s"]],[[0,1,"pl-v"],[14,15,"pl-s"],[15,32,"pl-c1"],[32,33,"pl-s"],[38,39,"pl-s"],[39,63,"pl-c1"],[63,64,"pl-s"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,53,"pl-s"],[49,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,109,"pl-corl"],[109,110,"pl-s"]],[[0,1,"pl-v"],[9,10,"pl-s"],[46,47,"pl-s"],[47,52,"pl-s"],[48,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,108,"pl-corl"],[108,109,"pl-s"]],[[0,1,"pl-v"],[70,71,"pl-s"],[71,76,"pl-s"],[72,76,"pl-corl"],[76,77,"pl-s"],[77,78,"pl-s"],[78,132,"pl-corl"],[132,133,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,35,"pl-mh"],[3,35,"pl-en"]],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[23,25,"pl-s"],[156,157,"pl-s"],[157,162,"pl-s"],[158,162,"pl-corl"],[162,163,"pl-s"],[163,164,"pl-s"],[164,218,"pl-corl"],[218,219,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[49,51,"pl-s"],[57,58,"pl-s"],[58,74,"pl-c1"],[74,75,"pl-s"],[92,93,"pl-s"],[93,98,"pl-s"],[94,98,"pl-corl"],[98,99,"pl-s"],[99,100,"pl-s"],[100,154,"pl-corl"],[154,155,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[37,39,"pl-s"],[41,42,"pl-s"],[42,47,"pl-s"],[43,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,103,"pl-corl"],[103,104,"pl-s"]],[[0,1,"pl-v"],[18,19,"pl-s"],[19,28,"pl-c1"],[28,29,"pl-s"],[72,73,"pl-s"],[73,78,"pl-s"],[74,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[33,34,"pl-s"],[34,47,"pl-c1"],[47,48,"pl-s"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[],[[0,11,"pl-mh"],[4,11,"pl-en"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[],[[0,9,"pl-mh"],[4,9,"pl-en"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[[0,1,"pl-v"],[48,49,"pl-s"],[49,54,"pl-s"],[50,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,110,"pl-corl"],[110,111,"pl-s"]],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[],[[0,10,"pl-mh"],[4,10,"pl-en"]],[[0,1,"pl-v"],[30,31,"pl-s"],[31,40,"pl-c1"],[40,41,"pl-s"],[48,49,"pl-s"],[49,54,"pl-s"],[50,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,110,"pl-corl"],[110,111,"pl-s"]],[[0,1,"pl-v"],[37,38,"pl-s"],[38,43,"pl-s"],[39,43,"pl-corl"],[43,44,"pl-s"],[44,45,"pl-s"],[45,99,"pl-corl"],[99,100,"pl-s"]],[[0,1,"pl-v"],[18,19,"pl-s"],[19,28,"pl-c1"],[28,29,"pl-s"],[44,45,"pl-s"],[45,50,"pl-s"],[46,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,106,"pl-corl"],[106,107,"pl-s"]],[],[[0,10,"pl-mh"],[4,10,"pl-en"]],[[0,1,"pl-v"],[55,56,"pl-s"],[56,61,"pl-s"],[57,61,"pl-corl"],[61,62,"pl-s"],[62,63,"pl-s"],[63,117,"pl-corl"],[117,118,"pl-s"]],[],[[0,9,"pl-mh"],[4,9,"pl-en"]],[[0,1,"pl-v"],[30,31,"pl-s"],[31,41,"pl-c1"],[41,42,"pl-s"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[],[[0,16,"pl-mh"],[4,16,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[17,18,"pl-s"],[18,26,"pl-c1"],[26,27,"pl-s"],[35,37,"pl-s"],[104,105,"pl-s"],[105,110,"pl-s"],[106,110,"pl-corl"],[110,111,"pl-s"],[111,112,"pl-s"],[112,166,"pl-corl"],[166,167,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[35,37,"pl-s"],[62,63,"pl-s"],[63,68,"pl-s"],[64,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,124,"pl-corl"],[124,125,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[33,35,"pl-s"],[67,68,"pl-s"],[68,73,"pl-s"],[69,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,129,"pl-corl"],[129,130,"pl-s"]],[[0,1,"pl-v"],[29,30,"pl-s"],[30,35,"pl-c1"],[35,36,"pl-s"],[62,63,"pl-s"],[63,68,"pl-s"],[64,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,124,"pl-corl"],[124,125,"pl-s"]],[[0,1,"pl-v"],[14,15,"pl-s"],[15,27,"pl-c1"],[27,28,"pl-s"],[39,40,"pl-s"],[40,48,"pl-c1"],[48,49,"pl-s"],[55,56,"pl-s"],[56,70,"pl-c1"],[70,71,"pl-s"],[73,74,"pl-s"],[74,79,"pl-s"],[75,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,135,"pl-corl"],[135,136,"pl-s"]],[[0,1,"pl-v"],[96,97,"pl-s"],[97,102,"pl-s"],[98,102,"pl-corl"],[102,103,"pl-s"],[103,104,"pl-s"],[104,158,"pl-corl"],[158,159,"pl-s"],[161,162,"pl-s"],[162,167,"pl-s"],[163,167,"pl-corl"],[167,168,"pl-s"],[168,169,"pl-s"],[169,223,"pl-corl"],[223,224,"pl-s"]],[[0,1,"pl-v"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[44,45,"pl-s"],[45,50,"pl-s"],[46,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,106,"pl-corl"],[106,107,"pl-s"]],[[0,1,"pl-v"],[23,24,"pl-s"],[24,33,"pl-c1"],[33,34,"pl-s"],[39,40,"pl-s"],[40,52,"pl-c1"],[52,53,"pl-s"],[82,83,"pl-s"],[83,88,"pl-s"],[84,88,"pl-corl"],[88,89,"pl-s"],[89,90,"pl-s"],[90,144,"pl-corl"],[144,145,"pl-s"]],[[0,1,"pl-v"],[53,54,"pl-s"],[54,59,"pl-s"],[55,59,"pl-corl"],[59,60,"pl-s"],[60,61,"pl-s"],[61,115,"pl-corl"],[115,116,"pl-s"]],[[0,1,"pl-v"],[38,39,"pl-s"],[39,52,"pl-c1"],[52,53,"pl-s"],[55,56,"pl-s"],[56,61,"pl-s"],[57,61,"pl-corl"],[61,62,"pl-s"],[62,63,"pl-s"],[63,117,"pl-corl"],[117,118,"pl-s"]],[[0,1,"pl-v"],[63,64,"pl-s"],[64,69,"pl-s"],[65,69,"pl-corl"],[69,70,"pl-s"],[70,71,"pl-s"],[71,125,"pl-corl"],[125,126,"pl-s"]],[[0,1,"pl-v"],[65,66,"pl-s"],[66,71,"pl-s"],[67,71,"pl-corl"],[71,72,"pl-s"],[72,73,"pl-s"],[73,127,"pl-corl"],[127,128,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,53,"pl-c1"],[53,54,"pl-s"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,19,"pl-c1"],[19,20,"pl-s"],[66,67,"pl-s"],[82,83,"pl-s"],[83,84,"pl-s"],[84,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[81,82,"pl-s"],[82,87,"pl-s"],[83,87,"pl-corl"],[87,88,"pl-s"],[88,89,"pl-s"],[89,143,"pl-corl"],[143,144,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,28,"pl-mh"],[3,28,"pl-en"]],[],[[0,19,"pl-mh"],[4,19,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[32,34,"pl-s"],[41,42,"pl-s"],[42,48,"pl-c1"],[48,49,"pl-s"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[42,44,"pl-s"],[46,47,"pl-s"],[47,52,"pl-s"],[48,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,108,"pl-corl"],[108,109,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[28,30,"pl-s"],[106,107,"pl-s"],[122,123,"pl-s"],[123,124,"pl-s"],[124,168,"pl-corl"],[168,169,"pl-s"]],[[0,1,"pl-v"],[66,67,"pl-s"],[82,83,"pl-s"],[83,84,"pl-s"],[84,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,67,"pl-s"],[63,67,"pl-corl"],[67,68,"pl-s"],[68,69,"pl-s"],[69,123,"pl-corl"],[123,124,"pl-s"]],[[0,1,"pl-v"],[69,70,"pl-s"],[70,75,"pl-s"],[71,75,"pl-corl"],[75,76,"pl-s"],[76,77,"pl-s"],[77,131,"pl-corl"],[131,132,"pl-s"]],[[0,1,"pl-v"],[98,99,"pl-s"],[99,123,"pl-c1"],[123,124,"pl-s"],[178,179,"pl-s"],[179,184,"pl-s"],[180,184,"pl-corl"],[184,185,"pl-s"],[185,186,"pl-s"],[186,240,"pl-corl"],[240,241,"pl-s"]],[[0,1,"pl-v"],[81,82,"pl-s"],[82,87,"pl-s"],[83,87,"pl-corl"],[87,88,"pl-s"],[88,89,"pl-s"],[89,143,"pl-corl"],[143,144,"pl-s"]],[[0,1,"pl-v"],[63,64,"pl-s"],[64,69,"pl-s"],[65,69,"pl-corl"],[69,70,"pl-s"],[70,71,"pl-s"],[71,125,"pl-corl"],[125,126,"pl-s"]],[[0,1,"pl-v"],[75,76,"pl-s"],[76,81,"pl-s"],[77,81,"pl-corl"],[81,82,"pl-s"],[82,83,"pl-s"],[83,137,"pl-corl"],[137,138,"pl-s"]],[[0,1,"pl-v"],[41,42,"pl-s"],[42,54,"pl-c1"],[54,55,"pl-s"],[57,58,"pl-s"],[58,63,"pl-s"],[59,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,119,"pl-corl"],[119,120,"pl-s"]],[[0,1,"pl-v"],[53,54,"pl-s"],[54,59,"pl-s"],[55,59,"pl-corl"],[59,60,"pl-s"],[60,61,"pl-s"],[61,115,"pl-corl"],[115,116,"pl-s"]],[[0,1,"pl-v"],[8,9,"pl-s"],[9,17,"pl-c1"],[17,18,"pl-s"],[46,47,"pl-s"],[47,54,"pl-c1"],[54,55,"pl-s"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[67,68,"pl-s"],[83,84,"pl-s"],[84,85,"pl-s"],[85,129,"pl-corl"],[129,130,"pl-s"]],[[0,1,"pl-v"],[54,55,"pl-s"],[55,60,"pl-s"],[56,60,"pl-corl"],[60,61,"pl-s"],[61,62,"pl-s"],[62,116,"pl-corl"],[116,117,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,53,"pl-s"],[49,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,109,"pl-corl"],[109,110,"pl-s"]],[[0,1,"pl-v"],[58,59,"pl-s"],[59,64,"pl-s"],[60,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,120,"pl-corl"],[120,121,"pl-s"]],[[0,1,"pl-v"],[72,73,"pl-s"],[88,89,"pl-s"],[89,90,"pl-s"],[90,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[36,37,"pl-s"],[37,45,"pl-c1"],[45,46,"pl-s"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[48,49,"pl-s"],[49,54,"pl-s"],[50,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,110,"pl-corl"],[110,111,"pl-s"]],[[0,1,"pl-v"],[65,66,"pl-s"],[66,71,"pl-s"],[67,71,"pl-corl"],[71,72,"pl-s"],[72,73,"pl-s"],[73,127,"pl-corl"],[127,128,"pl-s"]],[[0,1,"pl-v"],[33,34,"pl-s"],[34,48,"pl-c1"],[48,49,"pl-s"],[88,89,"pl-s"],[89,94,"pl-s"],[90,94,"pl-corl"],[94,95,"pl-s"],[95,96,"pl-s"],[96,150,"pl-corl"],[150,151,"pl-s"],[153,154,"pl-s"],[154,159,"pl-s"],[155,159,"pl-corl"],[159,160,"pl-s"],[160,161,"pl-s"],[161,215,"pl-corl"],[215,216,"pl-s"]],[[0,1,"pl-v"],[8,9,"pl-s"],[9,17,"pl-c1"],[17,18,"pl-s"],[57,58,"pl-s"],[58,63,"pl-s"],[59,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,119,"pl-corl"],[119,120,"pl-s"]],[[0,1,"pl-v"],[8,9,"pl-s"],[9,21,"pl-c1"],[21,22,"pl-s"],[75,76,"pl-s"],[76,81,"pl-s"],[77,81,"pl-corl"],[81,82,"pl-s"],[82,83,"pl-s"],[83,137,"pl-corl"],[137,138,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,67,"pl-s"],[63,67,"pl-corl"],[67,68,"pl-s"],[68,69,"pl-s"],[69,123,"pl-corl"],[123,124,"pl-s"]],[],[[0,25,"pl-mh"],[4,25,"pl-en"]],[[0,1,"pl-v"],[89,90,"pl-s"],[90,95,"pl-s"],[91,95,"pl-corl"],[95,96,"pl-s"],[96,97,"pl-s"],[97,151,"pl-corl"],[151,152,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,21,"pl-c1"],[21,22,"pl-s"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[9,10,"pl-s"],[10,23,"pl-c1"],[23,24,"pl-s"],[94,95,"pl-s"],[95,100,"pl-s"],[96,100,"pl-corl"],[100,101,"pl-s"],[101,102,"pl-s"],[102,156,"pl-corl"],[156,157,"pl-s"]],[[0,1,"pl-v"],[91,92,"pl-s"],[92,97,"pl-s"],[93,97,"pl-corl"],[97,98,"pl-s"],[98,99,"pl-s"],[99,153,"pl-corl"],[153,154,"pl-s"]],[[0,1,"pl-v"],[54,55,"pl-s"],[55,60,"pl-s"],[56,60,"pl-corl"],[60,61,"pl-s"],[61,62,"pl-s"],[62,116,"pl-corl"],[116,117,"pl-s"]],[[0,1,"pl-v"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[28,29,"pl-s"],[29,42,"pl-c1"],[42,43,"pl-s"],[52,53,"pl-s"],[53,58,"pl-s"],[54,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,114,"pl-corl"],[114,115,"pl-s"]],[[0,1,"pl-v"],[51,52,"pl-s"],[52,57,"pl-s"],[53,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,113,"pl-corl"],[113,114,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[77,78,"pl-s"],[78,79,"pl-s"],[79,123,"pl-corl"],[123,124,"pl-s"]],[[0,1,"pl-v"],[15,16,"pl-s"],[16,33,"pl-c1"],[33,34,"pl-s"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[53,54,"pl-s"],[69,70,"pl-s"],[70,71,"pl-s"],[71,115,"pl-corl"],[115,116,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,17,"pl-mh"],[3,17,"pl-en"]],[],[[0,14,"pl-mh"],[4,14,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[27,29,"pl-s"],[75,76,"pl-s"],[76,81,"pl-s"],[77,81,"pl-corl"],[81,82,"pl-s"],[82,83,"pl-s"],[83,137,"pl-corl"],[137,138,"pl-s"]],[[0,1,"pl-v"],[41,42,"pl-s"],[42,47,"pl-s"],[43,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,103,"pl-corl"],[103,104,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[[0,1,"pl-v"],[52,53,"pl-s"],[53,58,"pl-s"],[54,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,114,"pl-corl"],[114,115,"pl-s"]],[],[[0,30,"pl-mh"],[4,30,"pl-en"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,56,"pl-s"],[52,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,112,"pl-corl"],[112,113,"pl-s"]],[[0,1,"pl-v"],[52,53,"pl-s"],[53,58,"pl-s"],[54,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,114,"pl-corl"],[114,115,"pl-s"]],[[0,1,"pl-v"],[37,38,"pl-s"],[38,56,"pl-c1"],[56,57,"pl-s"],[59,60,"pl-s"],[60,65,"pl-s"],[61,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,121,"pl-corl"],[121,122,"pl-s"]],[],[[0,20,"pl-mh"],[4,20,"pl-en"]],[[0,1,"pl-v"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,21,"pl-c1"],[21,22,"pl-s"],[31,32,"pl-s"],[32,56,"pl-c1"],[56,57,"pl-s"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,67,"pl-s"],[63,67,"pl-corl"],[67,68,"pl-s"],[68,69,"pl-s"],[69,123,"pl-corl"],[123,124,"pl-s"]],[],[[0,7,"pl-mh"],[4,7,"pl-en"]],[[0,1,"pl-v"],[49,50,"pl-s"],[50,55,"pl-s"],[51,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,111,"pl-corl"],[111,112,"pl-s"]],[[0,1,"pl-v"],[42,43,"pl-s"],[43,48,"pl-s"],[44,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,104,"pl-corl"],[104,105,"pl-s"]],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[[0,1,"pl-v"],[73,74,"pl-s"],[74,79,"pl-s"],[75,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,135,"pl-corl"],[135,136,"pl-s"]],[[0,1,"pl-v"],[25,26,"pl-s"],[26,48,"pl-c1"],[48,49,"pl-s"],[76,77,"pl-s"],[77,82,"pl-s"],[78,82,"pl-corl"],[82,83,"pl-s"],[83,84,"pl-s"],[84,138,"pl-corl"],[138,139,"pl-s"]],[],[[0,15,"pl-mh"],[4,15,"pl-en"]],[[0,1,"pl-v"],[26,27,"pl-s"],[27,44,"pl-c1"],[44,45,"pl-s"],[58,59,"pl-s"],[59,64,"pl-s"],[60,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,120,"pl-corl"],[120,121,"pl-s"],[126,133,"pl-s"],[127,133,"pl-corl"]],[[0,1,"pl-v"],[14,15,"pl-s"],[15,24,"pl-c1"],[24,25,"pl-s"],[59,60,"pl-s"],[60,65,"pl-s"],[61,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,121,"pl-corl"],[121,122,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,22,"pl-mh"],[3,22,"pl-en"]],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[23,25,"pl-s"],[113,114,"pl-s"],[114,119,"pl-s"],[115,119,"pl-corl"],[119,120,"pl-s"],[120,121,"pl-s"],[121,175,"pl-corl"],[175,176,"pl-s"]],[[0,1,"pl-v"],[34,35,"pl-s"],[35,46,"pl-c1"],[46,47,"pl-s"],[72,73,"pl-s"],[73,78,"pl-s"],[74,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[53,54,"pl-s"],[54,59,"pl-s"],[55,59,"pl-corl"],[59,60,"pl-s"],[60,61,"pl-s"],[61,115,"pl-corl"],[115,116,"pl-s"]],[[0,1,"pl-v"],[72,73,"pl-s"],[73,78,"pl-s"],[74,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[59,60,"pl-s"],[60,65,"pl-s"],[61,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,121,"pl-corl"],[121,122,"pl-s"]],[[0,1,"pl-v"],[45,46,"pl-s"],[61,62,"pl-s"],[62,63,"pl-s"],[63,107,"pl-corl"],[107,108,"pl-s"]],[[0,1,"pl-v"],[70,71,"pl-s"],[71,76,"pl-s"],[72,76,"pl-corl"],[76,77,"pl-s"],[77,78,"pl-s"],[78,132,"pl-corl"],[132,133,"pl-s"]],[[0,1,"pl-v"],[88,89,"pl-s"],[104,105,"pl-s"],[105,106,"pl-s"],[106,150,"pl-corl"],[150,151,"pl-s"]],[],[[0,14,"pl-mh"],[4,14,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[38,40,"pl-s"],[49,50,"pl-s"],[50,55,"pl-s"],[51,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,111,"pl-corl"],[111,112,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[27,29,"pl-s"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[25,27,"pl-s"],[100,101,"pl-s"],[101,106,"pl-s"],[102,106,"pl-corl"],[106,107,"pl-s"],[107,108,"pl-s"],[108,162,"pl-corl"],[162,163,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,28,"pl-mh"],[3,28,"pl-en"]],[],[[0,22,"pl-mh"],[4,22,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[19,21,"pl-s"],[31,32,"pl-s"],[32,48,"pl-c1"],[48,49,"pl-s"],[51,52,"pl-s"],[52,57,"pl-s"],[53,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,113,"pl-corl"],[113,114,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[19,21,"pl-s"],[31,32,"pl-s"],[32,44,"pl-c1"],[44,45,"pl-s"],[50,51,"pl-s"],[51,60,"pl-c1"],[60,61,"pl-s"],[74,75,"pl-s"],[75,80,"pl-s"],[76,80,"pl-corl"],[80,81,"pl-s"],[81,82,"pl-s"],[82,136,"pl-corl"],[136,137,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[30,32,"pl-s"],[58,59,"pl-s"],[59,64,"pl-s"],[60,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,120,"pl-corl"],[120,121,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[35,37,"pl-s"],[54,55,"pl-s"],[55,60,"pl-s"],[56,60,"pl-corl"],[60,61,"pl-s"],[61,62,"pl-s"],[62,116,"pl-corl"],[116,117,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[27,29,"pl-s"],[33,34,"pl-s"],[34,46,"pl-c1"],[46,47,"pl-s"],[52,53,"pl-s"],[53,58,"pl-c1"],[58,59,"pl-s"],[73,74,"pl-s"],[74,79,"pl-s"],[75,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,135,"pl-corl"],[135,136,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[19,21,"pl-s"],[58,59,"pl-s"],[59,64,"pl-s"],[60,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,120,"pl-corl"],[120,121,"pl-s"]],[[0,1,"pl-v"],[66,67,"pl-s"],[67,72,"pl-s"],[68,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[21,22,"pl-s"],[22,29,"pl-c1"],[29,30,"pl-s"],[31,32,"pl-s"],[32,37,"pl-c1"],[37,38,"pl-s"],[39,40,"pl-s"],[40,52,"pl-c1"],[52,53,"pl-s"],[65,66,"pl-s"],[66,71,"pl-s"],[67,71,"pl-corl"],[71,72,"pl-s"],[72,73,"pl-s"],[73,127,"pl-corl"],[127,128,"pl-s"]],[[0,1,"pl-v"],[37,38,"pl-s"],[38,43,"pl-s"],[39,43,"pl-corl"],[43,44,"pl-s"],[44,45,"pl-s"],[45,99,"pl-corl"],[99,100,"pl-s"]],[[0,1,"pl-v"],[13,14,"pl-s"],[14,21,"pl-c1"],[21,22,"pl-s"],[59,60,"pl-s"],[60,65,"pl-s"],[61,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,121,"pl-corl"],[121,122,"pl-s"]],[[0,1,"pl-v"],[45,46,"pl-s"],[46,53,"pl-c1"],[53,54,"pl-s"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,56,"pl-s"],[52,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,112,"pl-corl"],[112,113,"pl-s"]],[],[[0,15,"pl-mh"],[4,15,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[36,38,"pl-s"],[74,75,"pl-s"],[75,80,"pl-s"],[76,80,"pl-corl"],[80,81,"pl-s"],[81,82,"pl-s"],[82,136,"pl-corl"],[136,137,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[32,34,"pl-s"],[67,68,"pl-s"],[68,73,"pl-s"],[69,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,129,"pl-corl"],[129,130,"pl-s"]],[[0,1,"pl-v"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,56,"pl-s"],[52,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,112,"pl-corl"],[112,113,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,16,"pl-mh"],[3,16,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[30,32,"pl-s"],[75,76,"pl-s"],[76,81,"pl-s"],[77,81,"pl-corl"],[81,82,"pl-s"],[82,83,"pl-s"],[83,137,"pl-corl"],[137,138,"pl-s"]],[[0,1,"pl-v"],[34,35,"pl-s"],[35,46,"pl-c1"],[46,47,"pl-s"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[71,72,"pl-s"],[72,77,"pl-s"],[73,77,"pl-corl"],[77,78,"pl-s"],[78,79,"pl-s"],[79,133,"pl-corl"],[133,134,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,23,"pl-mh"],[3,23,"pl-en"]],[],[[0,1,"pl-v"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"],[121,122,"pl-s"],[122,127,"pl-s"],[123,127,"pl-corl"],[127,128,"pl-s"],[128,129,"pl-s"],[129,183,"pl-corl"],[183,184,"pl-s"]],[[0,1,"pl-v"],[79,80,"pl-s"],[80,85,"pl-s"],[81,85,"pl-corl"],[85,86,"pl-s"],[86,87,"pl-s"],[87,141,"pl-corl"],[141,142,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,67,"pl-s"],[63,67,"pl-corl"],[67,68,"pl-s"],[68,69,"pl-s"],[69,123,"pl-corl"],[123,124,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,13,"pl-c1"],[13,14,"pl-s"],[52,53,"pl-s"],[53,58,"pl-s"],[54,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,114,"pl-corl"],[114,115,"pl-s"]],[[0,1,"pl-v"],[57,58,"pl-s"],[58,63,"pl-s"],[59,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,119,"pl-corl"],[119,120,"pl-s"]],[[0,1,"pl-v"],[57,58,"pl-s"],[58,63,"pl-s"],[59,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,119,"pl-corl"],[119,120,"pl-s"]],[[0,1,"pl-v"],[58,59,"pl-s"],[59,64,"pl-s"],[60,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,120,"pl-corl"],[120,121,"pl-s"]],[[0,1,"pl-v"],[69,70,"pl-s"],[70,75,"pl-s"],[71,75,"pl-corl"],[75,76,"pl-s"],[76,77,"pl-s"],[77,131,"pl-corl"],[131,132,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,53,"pl-s"],[49,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,109,"pl-corl"],[109,110,"pl-s"]],[[0,1,"pl-v"],[59,60,"pl-s"],[60,65,"pl-s"],[61,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,121,"pl-corl"],[121,122,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,20,"pl-c1"],[20,21,"pl-s"],[70,71,"pl-s"],[71,76,"pl-s"],[72,76,"pl-corl"],[76,77,"pl-s"],[77,78,"pl-s"],[78,132,"pl-corl"],[132,133,"pl-s"]],[[0,1,"pl-v"],[24,25,"pl-s"],[25,39,"pl-c1"],[39,40,"pl-s"],[72,73,"pl-s"],[73,78,"pl-s"],[74,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[32,33,"pl-s"],[33,46,"pl-c1"],[46,47,"pl-s"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,19,"pl-c1"],[19,20,"pl-s"],[50,51,"pl-s"],[51,56,"pl-s"],[52,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,112,"pl-corl"],[112,113,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,15,"pl-c1"],[15,16,"pl-s"],[56,57,"pl-s"],[57,62,"pl-s"],[58,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,118,"pl-corl"],[118,119,"pl-s"]],[[0,1,"pl-v"],[31,32,"pl-s"],[32,37,"pl-c1"],[37,38,"pl-s"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,14,"pl-c1"],[14,15,"pl-s"],[46,47,"pl-s"],[47,57,"pl-c1"],[57,58,"pl-s"],[60,61,"pl-s"],[61,66,"pl-s"],[62,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,122,"pl-corl"],[122,123,"pl-s"]],[[0,1,"pl-v"],[26,27,"pl-s"],[27,36,"pl-c1"],[36,37,"pl-s"],[44,45,"pl-s"],[45,50,"pl-s"],[46,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,106,"pl-corl"],[106,107,"pl-s"]],[[0,1,"pl-v"],[30,31,"pl-s"],[31,41,"pl-c1"],[41,42,"pl-s"],[51,52,"pl-s"],[52,57,"pl-s"],[53,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,113,"pl-corl"],[113,114,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,13,"pl-mh"],[3,13,"pl-en"]],[],[[0,1,"pl-v"],[6,7,"pl-s"],[7,28,"pl-c1"],[28,29,"pl-s"],[73,74,"pl-s"],[74,79,"pl-s"],[75,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,135,"pl-corl"],[135,136,"pl-s"]],[[0,1,"pl-v"],[62,63,"pl-s"],[63,68,"pl-s"],[64,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,124,"pl-corl"],[124,125,"pl-s"]],[[0,1,"pl-v"],[62,63,"pl-s"],[63,68,"pl-s"],[64,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,124,"pl-corl"],[124,125,"pl-s"]],[[0,1,"pl-v"],[54,55,"pl-s"],[70,71,"pl-s"],[71,72,"pl-s"],[72,116,"pl-corl"],[116,117,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,19,"pl-mh"],[3,19,"pl-en"]],[],[[0,1,"pl-v"],[22,23,"pl-s"],[23,29,"pl-c1"],[29,30,"pl-s"],[77,78,"pl-s"],[78,83,"pl-s"],[79,83,"pl-corl"],[83,84,"pl-s"],[84,85,"pl-s"],[85,139,"pl-corl"],[139,140,"pl-s"]],[[0,1,"pl-v"],[57,58,"pl-s"],[58,63,"pl-s"],[59,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,119,"pl-corl"],[119,120,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,53,"pl-s"],[49,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,109,"pl-corl"],[109,110,"pl-s"]],[[0,1,"pl-v"],[68,69,"pl-s"],[69,74,"pl-s"],[70,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[73,74,"pl-s"],[74,79,"pl-s"],[75,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,135,"pl-corl"],[135,136,"pl-s"]],[[0,1,"pl-v"],[51,52,"pl-s"],[52,57,"pl-s"],[53,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,113,"pl-corl"],[113,114,"pl-s"]],[[0,1,"pl-v"],[66,67,"pl-s"],[67,78,"pl-c1"],[78,79,"pl-s"],[87,88,"pl-s"],[103,104,"pl-s"],[104,105,"pl-s"],[105,149,"pl-corl"],[149,150,"pl-s"]],[[0,1,"pl-v"],[31,32,"pl-s"],[32,46,"pl-c1"],[46,47,"pl-s"],[68,69,"pl-s"],[84,85,"pl-s"],[85,86,"pl-s"],[86,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[67,68,"pl-s"],[68,73,"pl-s"],[69,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,129,"pl-corl"],[129,130,"pl-s"],[135,148,"pl-s"],[136,148,"pl-corl"]],[[0,1,"pl-v"],[71,72,"pl-s"],[87,88,"pl-s"],[88,89,"pl-s"],[89,133,"pl-corl"],[133,134,"pl-s"]],[],[[0,3,"pl-ms"]],[],[[0,18,"pl-mh"],[3,18,"pl-en"]],[],[[0,8,"pl-mh"],[4,8,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[4,13,"pl-s"],[5,13,"pl-corl"],[13,15,"pl-s"]],[],[[0,26,"pl-mh"],[4,26,"pl-en"]],[[0,1,"pl-v"],[2,4,"pl-s"],[4,15,"pl-s"],[5,15,"pl-corl"],[15,17,"pl-s"],[120,121,"pl-s"],[121,124,"pl-s"],[122,124,"pl-corl"],[124,125,"pl-s"],[125,126,"pl-s"],[126,178,"pl-corl"],[178,179,"pl-s"],[242,243,"pl-s"],[243,248,"pl-s"],[244,248,"pl-corl"],[248,249,"pl-s"],[249,250,"pl-s"],[250,304,"pl-corl"],[304,305,"pl-s"],[307,308,"pl-s"],[308,313,"pl-s"],[309,313,"pl-corl"],[313,314,"pl-s"],[314,315,"pl-s"],[315,369,"pl-corl"],[369,370,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[4,10,"pl-s"],[5,10,"pl-corl"],[10,12,"pl-s"],[84,85,"pl-s"],[85,90,"pl-s"],[86,90,"pl-corl"],[90,91,"pl-s"],[91,92,"pl-s"],[92,146,"pl-corl"],[146,147,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[4,11,"pl-s"],[5,11,"pl-corl"],[11,13,"pl-s"],[59,60,"pl-s"],[60,77,"pl-c1"],[77,78,"pl-s"],[91,92,"pl-s"],[92,97,"pl-s"],[93,97,"pl-corl"],[97,98,"pl-s"],[98,99,"pl-s"],[99,153,"pl-corl"],[153,154,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[4,17,"pl-s"],[5,17,"pl-corl"],[17,19,"pl-s"],[85,86,"pl-s"],[86,91,"pl-s"],[87,91,"pl-corl"],[91,92,"pl-s"],[92,93,"pl-s"],[93,147,"pl-corl"],[147,148,"pl-s"]],[],[[0,20,"pl-mh"],[4,20,"pl-en"]],[[0,11,"pl-s"],[1,11,"pl-corl"],[13,19,"pl-s"],[14,19,"pl-corl"],[21,34,"pl-s"],[22,34,"pl-corl"],[36,43,"pl-s"],[37,43,"pl-corl"],[45,54,"pl-s"],[46,54,"pl-corl"]],[],[[0,3,"pl-ms"]],[],[[0,2,"pl-s"],[16,18,"pl-s"],[20,21,"pl-s"],[44,45,"pl-s"],[45,46,"pl-s"],[46,122,"pl-corl"],[122,123,"pl-s"]]],"colorizedLines":null}},"title":"hermes-agent/RELEASE_v0.5.0.md at main · j32ryc/hermes-agent","appPayload":{},"meta":{"title":"hermes-agent/RELEASE_v0.5.0.md at main · j32ryc/hermes-agent"}}</script>
  <div data-target="react-app.reactRoot"><meta name="github-code-view-meta-stats" id="github-code-view-meta-stats" data-hydrostats="publish"/> <!-- --> <a hidden="" id="code-view-repo-link" href="/j32ryc/hermes-agent" data-discover="true"></a> <div class="d-none"></div><div><div style="--spacing:var(--spacing-none)" class="prc-PageLayout-PageLayoutRoot--KH-d" data-component="SplitPageLayout" data-has-sidebar="true"><div class="prc-PageLayout-SidebarWrapper-kLG4B CopilotSidePanelSidebar-module__SidePanel__L3O0C CopilotSidePanelSidebar-module__HiddenSidePanel__TBRGn" style="--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="end" data-sticky="true" data-responsive-variant="fullscreen"><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-SidebarVerticalDivider-0Rl0V" data-component="PageLayout.VerticalDivider" data-variant="line" data-position="end" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="450" aria-valuemax="768" aria-valuenow="544" aria-valuetext="Pane width 544 pixels" tabindex="0"></div></div><div class="prc-PageLayout-Sidebar-iciWg" data-component="SplitPageLayout.Sidebar" data-resizable="true" style="--spacing:var(--spacing-normal);--pane-min-width:450px;--pane-max-width:768px;--pane-width-custom:544px;--pane-width-size:var(--pane-width-custom);--pane-width:544px"><div class="height-full" data-testid="copilot-code-view-side-panel"><div id="copilot-side-panel-content" class="height-full"></div></div></div></div><div class="prc-PageLayout-PageLayoutWrapper-2BhU2" data-width="full"><div class="prc-PageLayout-PageLayoutContent-BneH9"><div id="repos-file-tree-sidebar" class="CodeViewFileTreeLayout-module__sidebar__n_Aau" tabindex="0"><div class="prc-PageLayout-PaneWrapper-pHPop ReposFileTreePane-module__Pane__rBZpI ReposFileTreePane-module__HideTree__AYZnm ReposFileTreePane-module__HidePane__VHAVt" style="--offset-header:0px;--spacing-row:var(--spacing-none);--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="start" data-sticky="true"><div class="prc-PageLayout-HorizontalDivider-JLVqp prc-PageLayout-PaneHorizontalDivider-9tbnE" data-component="PageLayout.HorizontalDivider" data-variant-regular="none" data-variant-narrow="none" data-position="start" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div><div class="prc-PageLayout-Pane-AyzHK" data-component="SplitPageLayout.Pane" data-resizable="true" style="--spacing:var(--spacing-none);--pane-min-width:256px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));--pane-width-size:var(--pane-width-large);--pane-width:320px"></div><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-PaneVerticalDivider-le57g" data-component="PageLayout.VerticalDivider" data-variant-narrow="none" data-variant-regular="line" data-variant-wide="line" data-position="start" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="256" aria-valuemax="600" aria-valuenow="320" aria-valuetext="Pane width 320 pixels" tabindex="0"></div></div></div></div><div data-component="SplitPageLayout.Content" class="prc-PageLayout-ContentWrapper-gR9eG"><div class="prc-PageLayout-Content-xWL-A" data-width="full" style="--spacing:var(--spacing-none)"><div class="SharedPageLayout-module__content__IwGAp" data-selector="repos-split-pane-content" id="repos-split-pane-content" tabindex="0"> <!-- --> <div class="container CodeViewHeader-module__Box__JkPOb"><div class="CodeViewHeader-module__StickyHeader__Qn7UN" id="StickyHeader"><div class="CodeViewHeader-module__Box_1__SbNDV"><div class="CodeViewHeader-module__Box_2__TB46f"><div class="react-code-view-header-wrap--narrow CodeViewHeader-module__Box_3__q1zUL"><div class="CodeViewHeader-module__treeToggleWrapper__RQ__9"><h2 class="use-tree-pane-module__Heading__s4QbZ prc-Heading-Heading-MtWFE" data-component="Heading"><button data-component="Button" type="button" aria-label="Expand file tree" data-testid="expand-file-tree-button-mobile" class="prc-Button-ButtonBase-9n-Xk ExpandFileTreeButton-module__Button_1__Svs95" data-loading="false" data-size="medium" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-left" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Files</span></span></button><button data-component="IconButton" type="button" data-testid="expand-file-tree-button" aria-controls="repos-file-tree" class="prc-Button-ButtonBase-9n-Xk position-relative ExpandFileTreeButton-module__expandButton__hDOcv ExpandFileTreeButton-module__filesButtonBreakpoint__zEvz3 fgColor-muted prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-labelledby="_R_4lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sidebar-collapse" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"></path><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25ZM11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="se" data-component="Tooltip" aria-hidden="true" id="_R_4lla9lik5_">Expand file tree</span><div class="d-none"></div></h2></div><div class="react-code-view-header-mb--narrow mr-2"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="main branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector-wide"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">main</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="react-code-view-header-mb--narrow CodeViewHeader-module__Box_5__MQ0hL"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__lg__Rjz0A"><nav data-testid="breadcrumbs" aria-labelledby="repos-header-breadcrumb-heading" id="repos-header-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="repos-header-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/j32ryc/hermes-agent/tree/main" data-discover="true">hermes-agent</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__lg__Rjz0A" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__lg__Rjz0A prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="file-name-id">RELEASE_v0.5.0.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lla9lik5_">Copy path</span></div></div></div><div class="react-code-view-header-element--wide"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><div><div class="CodeViewHeader-module__FileResultsList__JDzUy"><span class="d-flex FileResultsList-module__FilesSearchBox__ivVkc TextInput-wrapper prc-components-TextInputWrapper-Hpdqi prc-components-TextInputBaseWrapper-wY-n0" data-no-trailing-action="true" data-component="TextInput" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id="_R_1cpla9lik5_" aria-hidden="true" data-component="TextInput.LeadingVisual"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellCheck="false" placeholder="Go to file" aria-describedby="_R_1cpla9lik5_ _R_1cpla9lik5H1_" data-component="input" class="prc-components-Input-IwWrt" value=""/><span class="TextInput-icon" id="_R_1cpla9lik5H1_" aria-hidden="true" data-component="TextInput.TrailingVisual"></span></span></div><div class="d-none"></div></div><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-wide" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_7p9la9lik5_" id="_R_99la9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_7p9la9lik5_">More file actions</span></div></div></div><div class="react-code-view-header-element--narrow"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-narrow" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_7pdla9lik5_" id="_R_9dla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_7pdla9lik5_">More file actions</span></div></div></div></div></div></div></div><div class="CodeView-module__contentWrapper__cG2JH"><div class="react-code-view-bottom-padding"><div class="BlobTopBanners-module__Box__v_nvx"></div></div> <div class="d-none"></div><div class="d-flex flex-column border rounded-2 tmp-mb-3 pl-1"><div class="LatestCommit-module__Box__B25ZT"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">History</h2><a data-component="LinkButton" href="/j32ryc/hermes-agent/commits/main/RELEASE_v0.5.0.md" class="prc-Button-ButtonBase-9n-Xk d-none d-lg-flex LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><span class="fgColor-default">History</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><a data-component="LinkButton" aria-label="View commit history for this file." href="/j32ryc/hermes-agent/commits/main/RELEASE_v0.5.0.md" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby="_R_4mlala9lik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" role="tooltip" aria-hidden="true" id="_R_4mlala9lik5_">History</span></div></div></div></div></div><div class="d-flex flex-row"><div class="container BlobViewContent-module__blobContainer__DtH2d"><div class="react-code-size-details-banner BlobViewContent-module__codeSizeDetails__e5sUw"><div class="react-code-size-details-banner CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="32 KB" style="--truncate-max-width:100%"><span>348 lines (277 loc) · 32 KB</span></div></div></div></div><div class="react-blob-view-header-sticky BlobViewContent-module__stickyHeader__VwxB5" id="repos-sticky-header"><div class="BlobViewHeader-module__Box__yhm9u"><div class="react-blob-sticky-header"><div class="FileNameStickyHeader-module__outerWrapper__ZL4Xc FileNameStickyHeader-module__outerWrapperHidden__Zpynk"><div class="FileNameStickyHeader-module__Box_1__Hazu5"><div class="FileNameStickyHeader-module__Box_2__hoolP"><div class="FileNameStickyHeader-module__Box_3__MVKsk"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="main branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">main</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="FileNameStickyHeader-module__Box_4__FLhtt"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__md__Wb1Gs"><nav data-testid="breadcrumbs" aria-labelledby="sticky-breadcrumb-heading" id="sticky-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="sticky-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/j32ryc/hermes-agent/tree/main" data-discover="true">hermes-agent</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__md__Wb1Gs" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__md__Wb1Gs prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="sticky-file-name-id">RELEASE_v0.5.0.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lcpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lcpala9lik5_">Copy path</span></div></div></div><button data-component="Button" type="button" class="prc-Button-ButtonBase-9n-Xk FileNameStickyHeader-module__Button__LSEU_ FileNameStickyHeader-module__GoToTopButton__nxAFn" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018L9 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Top</span></span></button></div></div></div><div class="BlobViewHeader-module__Box_1__VEmuQ"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">File metadata and controls</h2><div class="BlobViewHeader-module__Box_2__icUs2"><ul aria-label="File view" class="prc-SegmentedControl-SegmentedControl-lqIXp BlobTabButtons-module__SegmentedControl__jen2u" data-variant="default" data-size="small" data-component="SegmentedControl"><li class="prc-SegmentedControl-Item-tSCQh" data-selected="" data-component="SegmentedControl.Button"><button aria-pressed="true" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:transparent"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Preview">Preview</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Code">Code</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Blame">Blame</div></span></button></li></ul><div class="d-none"></div><div class="react-code-size-details-in-header CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="32 KB" style="--truncate-max-width:100%"><span>348 lines (277 loc) · 32 KB</span></div></div></div></div><div class="BlobViewHeader-module__Box_3__ng6v2"><div class="d-none"></div><div class="react-blob-header-edit-and-raw-actions BlobViewHeader-module__Box_4__J4Y4W"><div class="d-none"></div><div class="prc-ButtonGroup-ButtonGroup-vFUrY" data-component="ButtonGroup"><div class="prc-ButtonGroup-Item-PqvDl"><a data-component="LinkButton" href="https://github.com/j32ryc/hermes-agent/raw/refs/heads/main/RELEASE_v0.5.0.md" data-testid="raw-button" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov BlobViewHeader-module__LinkButton__X9kx2" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Raw</span></span></a></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="copy-raw-button" class="prc-Button-ButtonBase-9n-Xk prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_qaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_qaucpala9lik5_">Copy raw file</span></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="download-raw-button" class="prc-Button-ButtonBase-9n-Xk BlobViewHeader-module__downloadButton__ef459 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_eaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-download" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_eaucpala9lik5_">Download raw file</span></div></div></div><button data-component="IconButton" type="button" aria-pressed="false" class="prc-Button-ButtonBase-9n-Xk tmp-mr-2 TableOfContents-module__IconButton__jrlNM prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_3ucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_3ucpala9lik5_">Outline</span><div class="react-blob-header-edit-and-raw-actions-combined"><button data-component="IconButton" type="button" title="More file actions" data-testid="more-file-actions-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click BlobViewHeader-module__IconButton__XrMQY prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_fkecpala9lik5_" id="_R_kecpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_fkecpala9lik5_">Edit and raw actions</span></div></div></div></div><div></div></div><div class="BlobViewContent-module__blobContentWrapper__JS0W6"><section aria-labelledby="file-name-id-wide file-name-id-mobile" class="BlobContent-module__blobContentSection__VOgZq BlobContent-module__blobContentSectionMarkdown__mPLOK" style="margin-top:46px"><div class="js-snippet-clipboard-copy-unpositioned BlobContent-module__markdownBlob__T8jpG" data-hpc="true" containertiming="hpc"><article class="markdown-body entry-content container-lg" itemprop="text"><div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">Hermes Agent v0.5.0 (v2026.3.28)</h1><a id="user-content-hermes-agent-v050-v2026328" class="anchor" aria-label="Permalink: Hermes Agent v0.5.0 (v2026.3.28)" href="#hermes-agent-v050-v2026328"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><strong>Release Date:</strong> March 28, 2026</p>
<blockquote>
<p dir="auto">The hardening release — Hugging Face provider, /model command overhaul, Telegram Private Chat Topics, native Modal SDK, plugin lifecycle hooks, tool-use enforcement for GPT models, Nix flake, 50+ security and reliability fixes, and a comprehensive supply chain audit.</p>
</blockquote>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">✨ Highlights</h2><a id="user-content--highlights" class="anchor" aria-label="Permalink: ✨ Highlights" href="#-highlights"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>
<p dir="auto"><strong>Nous Portal now supports 400+ models</strong> — The Nous Research inference portal has expanded dramatically, giving Hermes Agent users access to over 400 models through a single provider endpoint</p>
</li>
<li>
<p dir="auto"><strong>Hugging Face as a first-class inference provider</strong> — Full integration with HF Inference API including curated agentic model picker that maps to OpenRouter analogues, live <code>/models</code> endpoint probe, and setup wizard flow (<a href="https://github.com/NousResearch/hermes-agent/pull/3419" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3419/hovercard">#3419</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3440" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3440/hovercard">#3440</a>)</p>
</li>
<li>
<p dir="auto"><strong>Telegram Private Chat Topics</strong> — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat (<a href="https://github.com/NousResearch/hermes-agent/pull/3163" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3163/hovercard">#3163</a>)</p>
</li>
<li>
<p dir="auto"><strong>Native Modal SDK backend</strong> — Replaced swe-rex dependency with native Modal SDK (<code>Sandbox.create.aio</code> + <code>exec.aio</code>), eliminating tunnels and simplifying the Modal terminal backend (<a href="https://github.com/NousResearch/hermes-agent/pull/3538" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3538/hovercard">#3538</a>)</p>
</li>
<li>
<p dir="auto"><strong>Plugin lifecycle hooks activated</strong> — <code>pre_llm_call</code>, <code>post_llm_call</code>, <code>on_session_start</code>, and <code>on_session_end</code> hooks now fire in the agent loop and CLI/gateway, completing the plugin hook system (<a href="https://github.com/NousResearch/hermes-agent/pull/3542" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3542/hovercard">#3542</a>)</p>
</li>
<li>
<p dir="auto"><strong>Improved OpenAI Model Reliability</strong> — Added <code>GPT_TOOL_USE_GUIDANCE</code> to prevent GPT models from describing intended actions instead of making tool calls, plus automatic stripping of stale budget warnings from conversation history that caused models to avoid tools across turns (<a href="https://github.com/NousResearch/hermes-agent/pull/3528" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3528/hovercard">#3528</a>)</p>
</li>
<li>
<p dir="auto"><strong>Nix flake</strong> — Full uv2nix build, NixOS module with persistent container mode, auto-generated config keys from Python source, and suffix PATHs for agent-friendliness (<a href="https://github.com/NousResearch/hermes-agent/pull/20" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/20/hovercard">#20</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3274" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3274/hovercard">#3274</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3061" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3061/hovercard">#3061</a>) by @alt-glitch</p>
</li>
<li>
<p dir="auto"><strong>Supply chain hardening</strong> — Removed compromised <code>litellm</code> dependency, pinned all dependency version ranges, regenerated <code>uv.lock</code> with hashes, added CI workflow scanning PRs for supply chain attack patterns, and bumped deps to fix CVEs (<a href="https://github.com/NousResearch/hermes-agent/pull/2796" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2796/hovercard">#2796</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/2810" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2810/hovercard">#2810</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/2812" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2812/hovercard">#2812</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/2816" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2816/hovercard">#2816</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3073" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3073/hovercard">#3073</a>)</p>
</li>
<li>
<p dir="auto"><strong>Anthropic output limits fix</strong> — Replaced hardcoded 16K <code>max_tokens</code> with per-model native output limits (128K for Opus 4.6, 64K for Sonnet 4.6), fixing "Response truncated" and thinking-budget exhaustion on direct Anthropic API (<a href="https://github.com/NousResearch/hermes-agent/pull/3426" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3426/hovercard">#3426</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3444" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3444/hovercard">#3444</a>)</p>
</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">🏗️ Core Agent &amp; Architecture</h2><a id="user-content-️-core-agent--architecture" class="anchor" aria-label="Permalink: 🏗️ Core Agent &amp; Architecture" href="#️-core-agent--architecture"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">New Provider: Hugging Face</h3><a id="user-content-new-provider-hugging-face" class="anchor" aria-label="Permalink: New Provider: Hugging Face" href="#new-provider-hugging-face"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>First-class Hugging Face Inference API integration with auth, setup wizard, and model picker (<a href="https://github.com/NousResearch/hermes-agent/pull/3419" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3419/hovercard">#3419</a>)</li>
<li>Curated model list mapping OpenRouter agentic defaults to HF equivalents — providers with 8+ curated models skip live <code>/models</code> probe for speed (<a href="https://github.com/NousResearch/hermes-agent/pull/3440" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3440/hovercard">#3440</a>)</li>
<li>Added glm-5-turbo to Z.AI provider model list (<a href="https://github.com/NousResearch/hermes-agent/pull/3095" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3095/hovercard">#3095</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Provider &amp; Model Improvements</h3><a id="user-content-provider--model-improvements" class="anchor" aria-label="Permalink: Provider &amp; Model Improvements" href="#provider--model-improvements"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><code>/model</code> command overhaul — extracted shared <code>switch_model()</code> pipeline for CLI and gateway, custom endpoint support, provider-aware routing (<a href="https://github.com/NousResearch/hermes-agent/pull/2795" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2795/hovercard">#2795</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/2799" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2799/hovercard">#2799</a>)</li>
<li>Removed <code>/model</code> slash command from CLI and gateway in favor of <code>hermes model</code> subcommand (<a href="https://github.com/NousResearch/hermes-agent/pull/3080" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3080/hovercard">#3080</a>)</li>
<li>Preserve <code>custom</code> provider instead of silently remapping to <code>openrouter</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/2792" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2792/hovercard">#2792</a>)</li>
<li>Read root-level <code>provider</code> and <code>base_url</code> from config.yaml into model config (<a href="https://github.com/NousResearch/hermes-agent/pull/3112" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3112/hovercard">#3112</a>)</li>
<li>Align Nous Portal model slugs with OpenRouter naming (<a href="https://github.com/NousResearch/hermes-agent/pull/3253" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3253/hovercard">#3253</a>)</li>
<li>Fix Alibaba provider default endpoint and model list (<a href="https://github.com/NousResearch/hermes-agent/pull/3484" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3484/hovercard">#3484</a>)</li>
<li>Allow MiniMax users to override <code>/v1</code> → <code>/anthropic</code> auto-correction (<a href="https://github.com/NousResearch/hermes-agent/pull/3553" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3553/hovercard">#3553</a>)</li>
<li>Migrate OAuth token refresh to <code>platform.claude.com</code> with fallback (<a href="https://github.com/NousResearch/hermes-agent/pull/3246" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3246/hovercard">#3246</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Agent Loop &amp; Conversation</h3><a id="user-content-agent-loop--conversation" class="anchor" aria-label="Permalink: Agent Loop &amp; Conversation" href="#agent-loop--conversation"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Improved OpenAI model reliability</strong> — <code>GPT_TOOL_USE_GUIDANCE</code> prevents GPT models from describing actions instead of calling tools + automatic budget warning stripping from history (<a href="https://github.com/NousResearch/hermes-agent/pull/3528" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3528/hovercard">#3528</a>)</li>
<li><strong>Surface lifecycle events</strong> — All retry, fallback, and compression events now surface to the user as formatted messages (<a href="https://github.com/NousResearch/hermes-agent/pull/3153" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3153/hovercard">#3153</a>)</li>
<li><strong>Anthropic output limits</strong> — Per-model native output limits instead of hardcoded 16K <code>max_tokens</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3426" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3426/hovercard">#3426</a>)</li>
<li><strong>Thinking-budget exhaustion detection</strong> — Skip useless continuation retries when model uses all output tokens on reasoning (<a href="https://github.com/NousResearch/hermes-agent/pull/3444" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3444/hovercard">#3444</a>)</li>
<li>Always prefer streaming for API calls to prevent hung subagents (<a href="https://github.com/NousResearch/hermes-agent/pull/3120" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3120/hovercard">#3120</a>)</li>
<li>Restore safe non-streaming fallback after stream failures (<a href="https://github.com/NousResearch/hermes-agent/pull/3020" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3020/hovercard">#3020</a>)</li>
<li>Give subagents independent iteration budgets (<a href="https://github.com/NousResearch/hermes-agent/pull/3004" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3004/hovercard">#3004</a>)</li>
<li>Update <code>api_key</code> in <code>_try_activate_fallback</code> for subagent auth (<a href="https://github.com/NousResearch/hermes-agent/pull/3103" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3103/hovercard">#3103</a>)</li>
<li>Graceful return on max retries instead of crashing thread (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Count compression restarts toward retry limit (<a href="https://github.com/NousResearch/hermes-agent/pull/3070" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3070/hovercard">#3070</a>)</li>
<li>Include tool tokens in preflight estimate, guard context probe persistence (<a href="https://github.com/NousResearch/hermes-agent/pull/3164" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3164/hovercard">#3164</a>)</li>
<li>Update context compressor limits after fallback activation (<a href="https://github.com/NousResearch/hermes-agent/pull/3305" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3305/hovercard">#3305</a>)</li>
<li>Validate empty user messages to prevent Anthropic API 400 errors (<a href="https://github.com/NousResearch/hermes-agent/pull/3322" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3322/hovercard">#3322</a>)</li>
<li>GLM reasoning-only and max-length handling (<a href="https://github.com/NousResearch/hermes-agent/pull/3010" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3010/hovercard">#3010</a>)</li>
<li>Increase API timeout default from 900s to 1800s for slow-thinking models (<a href="https://github.com/NousResearch/hermes-agent/pull/3431" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3431/hovercard">#3431</a>)</li>
<li>Send <code>max_tokens</code> for Claude/OpenRouter + retry SSE connection errors (<a href="https://github.com/NousResearch/hermes-agent/pull/3497" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3497/hovercard">#3497</a>)</li>
<li>Prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode (<a href="https://github.com/NousResearch/hermes-agent/pull/2701" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2701/hovercard">#2701</a>) by @ctlst</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Streaming &amp; Reasoning</h3><a id="user-content-streaming--reasoning" class="anchor" aria-label="Permalink: Streaming &amp; Reasoning" href="#streaming--reasoning"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Persist reasoning across gateway session turns</strong> with new schema v6 columns (<code>reasoning</code>, <code>reasoning_details</code>, <code>codex_reasoning_items</code>) (<a href="https://github.com/NousResearch/hermes-agent/pull/2974" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2974/hovercard">#2974</a>)</li>
<li>Detect and kill stale SSE connections (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Fix stale stream detector race causing spurious <code>RemoteProtocolError</code> (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Skip duplicate callback for <code>&lt;think&gt;</code>-extracted reasoning during streaming (<a href="https://github.com/NousResearch/hermes-agent/pull/3116" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3116/hovercard">#3116</a>)</li>
<li>Preserve reasoning fields in <code>rewrite_transcript</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3311" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3311/hovercard">#3311</a>)</li>
<li>Preserve Gemini thought signatures in streamed tool calls (<a href="https://github.com/NousResearch/hermes-agent/pull/2997" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2997/hovercard">#2997</a>)</li>
<li>Ensure first delta is fired during reasoning updates (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Session &amp; Memory</h3><a id="user-content-session--memory" class="anchor" aria-label="Permalink: Session &amp; Memory" href="#session--memory"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Session search recent sessions mode</strong> — Omit query to browse recent sessions with titles, previews, and timestamps (<a href="https://github.com/NousResearch/hermes-agent/pull/2533" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2533/hovercard">#2533</a>)</li>
<li><strong>Session config surfacing</strong> on <code>/new</code>, <code>/reset</code>, and auto-reset (<a href="https://github.com/NousResearch/hermes-agent/pull/3321" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3321/hovercard">#3321</a>)</li>
<li><strong>Third-party session isolation</strong> — <code>--source</code> flag for isolating sessions by origin (<a href="https://github.com/NousResearch/hermes-agent/pull/3255" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3255/hovercard">#3255</a>)</li>
<li>Add <code>/resume</code> CLI handler, session log truncation guard, <code>reopen_session</code> API (<a href="https://github.com/NousResearch/hermes-agent/pull/3315" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3315/hovercard">#3315</a>)</li>
<li>Clear compressor summary and turn counter on <code>/clear</code> and <code>/new</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3102" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3102/hovercard">#3102</a>)</li>
<li>Surface silent SessionDB failures that cause session data loss (<a href="https://github.com/NousResearch/hermes-agent/pull/2999" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2999/hovercard">#2999</a>)</li>
<li>Session search fallback preview on summarization failure (<a href="https://github.com/NousResearch/hermes-agent/pull/3478" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3478/hovercard">#3478</a>)</li>
<li>Prevent stale memory overwrites by flush agent (<a href="https://github.com/NousResearch/hermes-agent/pull/2687" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2687/hovercard">#2687</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Context Compression</h3><a id="user-content-context-compression" class="anchor" aria-label="Permalink: Context Compression" href="#context-compression"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Replace dead <code>summary_target_tokens</code> with ratio-based scaling (<a href="https://github.com/NousResearch/hermes-agent/pull/2554" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2554/hovercard">#2554</a>)</li>
<li>Expose <code>compression.target_ratio</code>, <code>protect_last_n</code>, and <code>threshold</code> in <code>DEFAULT_CONFIG</code> (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Restore sane defaults and cap summary at 12K tokens (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Preserve transcript on <code>/compress</code> and hygiene compression (<a href="https://github.com/NousResearch/hermes-agent/pull/3556" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3556/hovercard">#3556</a>)</li>
<li>Update context pressure warnings and token estimates after compaction (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Architecture &amp; Dependencies</h3><a id="user-content-architecture--dependencies" class="anchor" aria-label="Permalink: Architecture &amp; Dependencies" href="#architecture--dependencies"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Remove mini-swe-agent dependency</strong> — Inline Docker and Modal backends directly (<a href="https://github.com/NousResearch/hermes-agent/pull/2804" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2804/hovercard">#2804</a>)</li>
<li><strong>Replace swe-rex with native Modal SDK</strong> for Modal backend (<a href="https://github.com/NousResearch/hermes-agent/pull/3538" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3538/hovercard">#3538</a>)</li>
<li><strong>Plugin lifecycle hooks</strong> — <code>pre_llm_call</code>, <code>post_llm_call</code>, <code>on_session_start</code>, <code>on_session_end</code> now fire in the agent loop (<a href="https://github.com/NousResearch/hermes-agent/pull/3542" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3542/hovercard">#3542</a>)</li>
<li>Fix plugin toolsets invisible in <code>hermes tools</code> and standalone processes (<a href="https://github.com/NousResearch/hermes-agent/pull/3457" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3457/hovercard">#3457</a>)</li>
<li>Consolidate <code>get_hermes_home()</code> and <code>parse_reasoning_effort()</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3062" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3062/hovercard">#3062</a>)</li>
<li>Remove unused Hermes-native PKCE OAuth flow (<a href="https://github.com/NousResearch/hermes-agent/pull/3107" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3107/hovercard">#3107</a>)</li>
<li>Remove ~100 unused imports across 55 files (<a href="https://github.com/NousResearch/hermes-agent/pull/3016" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3016/hovercard">#3016</a>)</li>
<li>Fix 154 f-strings, simplify getattr/URL patterns, remove dead code (<a href="https://github.com/NousResearch/hermes-agent/pull/3119" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3119/hovercard">#3119</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">📱 Messaging Platforms (Gateway)</h2><a id="user-content--messaging-platforms-gateway" class="anchor" aria-label="Permalink: 📱 Messaging Platforms (Gateway)" href="#-messaging-platforms-gateway"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Telegram</h3><a id="user-content-telegram" class="anchor" aria-label="Permalink: Telegram" href="#telegram"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Private Chat Topics</strong> — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat (<a href="https://github.com/NousResearch/hermes-agent/pull/3163" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3163/hovercard">#3163</a>)</li>
<li><strong>Auto-discover fallback IPs via DNS-over-HTTPS</strong> when <code>api.telegram.org</code> is unreachable (<a href="https://github.com/NousResearch/hermes-agent/pull/3376" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3376/hovercard">#3376</a>)</li>
<li><strong>Configurable reply threading mode</strong> (<a href="https://github.com/NousResearch/hermes-agent/pull/2907" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2907/hovercard">#2907</a>)</li>
<li>Fall back to no <code>thread_id</code> on "Message thread not found" BadRequest (<a href="https://github.com/NousResearch/hermes-agent/pull/3390" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3390/hovercard">#3390</a>)</li>
<li>Self-reschedule reconnect when <code>start_polling</code> fails after 502 (<a href="https://github.com/NousResearch/hermes-agent/pull/3268" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3268/hovercard">#3268</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Discord</h3><a id="user-content-discord" class="anchor" aria-label="Permalink: Discord" href="#discord"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Stop phantom typing indicator after agent turn completes (<a href="https://github.com/NousResearch/hermes-agent/pull/3003" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3003/hovercard">#3003</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Slack</h3><a id="user-content-slack" class="anchor" aria-label="Permalink: Slack" href="#slack"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Send tool call progress messages to correct Slack thread (<a href="https://github.com/NousResearch/hermes-agent/pull/3063" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3063/hovercard">#3063</a>)</li>
<li>Scope progress thread fallback to Slack only (<a href="https://github.com/NousResearch/hermes-agent/pull/3488" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3488/hovercard">#3488</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">WhatsApp</h3><a id="user-content-whatsapp" class="anchor" aria-label="Permalink: WhatsApp" href="#whatsapp"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Download documents, audio, and video media from messages (<a href="https://github.com/NousResearch/hermes-agent/pull/2978" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2978/hovercard">#2978</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Matrix</h3><a id="user-content-matrix" class="anchor" aria-label="Permalink: Matrix" href="#matrix"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Add missing Matrix entry in <code>PLATFORMS</code> dict (<a href="https://github.com/NousResearch/hermes-agent/pull/3473" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3473/hovercard">#3473</a>)</li>
<li>Harden e2ee access-token handling (<a href="https://github.com/NousResearch/hermes-agent/pull/3562" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3562/hovercard">#3562</a>)</li>
<li>Add backoff for <code>SyncError</code> in sync loop (<a href="https://github.com/NousResearch/hermes-agent/pull/3280" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3280/hovercard">#3280</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Signal</h3><a id="user-content-signal" class="anchor" aria-label="Permalink: Signal" href="#signal"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Track SSE keepalive comments as connection activity (<a href="https://github.com/NousResearch/hermes-agent/pull/3316" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3316/hovercard">#3316</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Email</h3><a id="user-content-email" class="anchor" aria-label="Permalink: Email" href="#email"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Prevent unbounded growth of <code>_seen_uids</code> in EmailAdapter (<a href="https://github.com/NousResearch/hermes-agent/pull/3490" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3490/hovercard">#3490</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Gateway Core</h3><a id="user-content-gateway-core" class="anchor" aria-label="Permalink: Gateway Core" href="#gateway-core"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Config-gated <code>/verbose</code> command</strong> for messaging platforms — toggle tool output verbosity from chat (<a href="https://github.com/NousResearch/hermes-agent/pull/3262" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3262/hovercard">#3262</a>)</li>
<li><strong>Background review notifications</strong> delivered to user chat (<a href="https://github.com/NousResearch/hermes-agent/pull/3293" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3293/hovercard">#3293</a>)</li>
<li><strong>Retry transient send failures</strong> and notify user on exhaustion (<a href="https://github.com/NousResearch/hermes-agent/pull/3288" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3288/hovercard">#3288</a>)</li>
<li>Recover from hung agents — <code>/stop</code> hard-kills session lock (<a href="https://github.com/NousResearch/hermes-agent/pull/3104" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3104/hovercard">#3104</a>)</li>
<li>Thread-safe <code>SessionStore</code> — protect <code>_entries</code> with <code>threading.Lock</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3052" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3052/hovercard">#3052</a>)</li>
<li>Fix gateway token double-counting with cached agents — use absolute set instead of increment (<a href="https://github.com/NousResearch/hermes-agent/pull/3306" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3306/hovercard">#3306</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3317" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3317/hovercard">#3317</a>)</li>
<li>Fingerprint full auth token in agent cache signature (<a href="https://github.com/NousResearch/hermes-agent/pull/3247" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3247/hovercard">#3247</a>)</li>
<li>Silence background agent terminal output (<a href="https://github.com/NousResearch/hermes-agent/pull/3297" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3297/hovercard">#3297</a>)</li>
<li>Include per-platform <code>ALLOW_ALL</code> and <code>SIGNAL_GROUP</code> in startup allowlist check (<a href="https://github.com/NousResearch/hermes-agent/pull/3313" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3313/hovercard">#3313</a>)</li>
<li>Include user-local bin paths in systemd unit PATH (<a href="https://github.com/NousResearch/hermes-agent/pull/3527" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3527/hovercard">#3527</a>)</li>
<li>Track background task references in <code>GatewayRunner</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3254" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3254/hovercard">#3254</a>)</li>
<li>Add request timeouts to HA, Email, Mattermost, SMS adapters (<a href="https://github.com/NousResearch/hermes-agent/pull/3258" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3258/hovercard">#3258</a>)</li>
<li>Add media download retry to Mattermost, Slack, and base cache (<a href="https://github.com/NousResearch/hermes-agent/pull/3323" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3323/hovercard">#3323</a>)</li>
<li>Detect virtualenv path instead of hardcoding <code>venv/</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/2797" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2797/hovercard">#2797</a>)</li>
<li>Use <code>TERMINAL_CWD</code> for context file discovery, not process cwd (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Stop loading hermes repo AGENTS.md into gateway sessions (~10k wasted tokens) (<a href="https://github.com/NousResearch/hermes-agent/pull/2891" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2891/hovercard">#2891</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">🖥️ CLI &amp; User Experience</h2><a id="user-content-️-cli--user-experience" class="anchor" aria-label="Permalink: 🖥️ CLI &amp; User Experience" href="#️-cli--user-experience"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Interactive CLI</h3><a id="user-content-interactive-cli" class="anchor" aria-label="Permalink: Interactive CLI" href="#interactive-cli"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Configurable busy input mode</strong> + fix <code>/queue</code> always working (<a href="https://github.com/NousResearch/hermes-agent/pull/3298" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3298/hovercard">#3298</a>)</li>
<li><strong>Preserve user input on multiline paste</strong> (<a href="https://github.com/NousResearch/hermes-agent/pull/3065" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3065/hovercard">#3065</a>)</li>
<li><strong>Tool generation callback</strong> — streaming "preparing terminal…" updates during tool argument generation (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Show tool progress for substantive tools, not just "preparing" (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Buffer reasoning preview chunks and fix duplicate display (<a href="https://github.com/NousResearch/hermes-agent/pull/3013" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3013/hovercard">#3013</a>)</li>
<li>Prevent reasoning box from rendering 3x during tool-calling loops (<a href="https://github.com/NousResearch/hermes-agent/pull/3405" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3405/hovercard">#3405</a>)</li>
<li>Eliminate "Event loop is closed" / "Press ENTER to continue" during idle — three-layer fix with <code>neuter_async_httpx_del()</code>, custom exception handler, and stale client cleanup (<a href="https://github.com/NousResearch/hermes-agent/pull/3398" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3398/hovercard">#3398</a>)</li>
<li>Fix status bar shows 26K instead of 260K for token counts with trailing zeros (<a href="https://github.com/NousResearch/hermes-agent/pull/3024" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3024/hovercard">#3024</a>)</li>
<li>Fix status bar duplicates and degrades during long sessions (<a href="https://github.com/NousResearch/hermes-agent/pull/3291" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3291/hovercard">#3291</a>)</li>
<li>Refresh TUI before background task output to prevent status bar overlap (<a href="https://github.com/NousResearch/hermes-agent/pull/3048" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3048/hovercard">#3048</a>)</li>
<li>Suppress KawaiiSpinner animation under <code>patch_stdout</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/2994" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2994/hovercard">#2994</a>)</li>
<li>Skip KawaiiSpinner when TUI handles tool progress (<a href="https://github.com/NousResearch/hermes-agent/pull/2973" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2973/hovercard">#2973</a>)</li>
<li>Guard <code>isatty()</code> against closed streams via <code>_is_tty</code> property (<a href="https://github.com/NousResearch/hermes-agent/pull/3056" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3056/hovercard">#3056</a>)</li>
<li>Ensure single closure of streaming boxes during tool generation (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Cap context pressure percentage at 100% in display (<a href="https://github.com/NousResearch/hermes-agent/pull/3480" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3480/hovercard">#3480</a>)</li>
<li>Clean up HTML error messages in CLI display (<a href="https://github.com/NousResearch/hermes-agent/pull/3069" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3069/hovercard">#3069</a>)</li>
<li>Show HTTP status code and 400 body in API error output (<a href="https://github.com/NousResearch/hermes-agent/pull/3096" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3096/hovercard">#3096</a>)</li>
<li>Extract useful info from HTML error pages, dump debug on max retries (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Prevent TypeError on startup when <code>base_url</code> is None (<a href="https://github.com/NousResearch/hermes-agent/pull/3068" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3068/hovercard">#3068</a>)</li>
<li>Prevent update crash in non-TTY environments (<a href="https://github.com/NousResearch/hermes-agent/pull/3094" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3094/hovercard">#3094</a>)</li>
<li>Handle EOFError in sessions delete/prune confirmation prompts (<a href="https://github.com/NousResearch/hermes-agent/pull/3101" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3101/hovercard">#3101</a>)</li>
<li>Catch KeyboardInterrupt during <code>flush_memories</code> on exit and in exit cleanup handlers (<a href="https://github.com/NousResearch/hermes-agent/pull/3025" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3025/hovercard">#3025</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3257" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3257/hovercard">#3257</a>)</li>
<li>Guard <code>.strip()</code> against None values from YAML config (<a href="https://github.com/NousResearch/hermes-agent/pull/3552" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3552/hovercard">#3552</a>)</li>
<li>Guard <code>config.get()</code> against YAML null values to prevent AttributeError (<a href="https://github.com/NousResearch/hermes-agent/pull/3377" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3377/hovercard">#3377</a>)</li>
<li>Store asyncio task references to prevent GC mid-execution (<a href="https://github.com/NousResearch/hermes-agent/pull/3267" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3267/hovercard">#3267</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Setup &amp; Configuration</h3><a id="user-content-setup--configuration" class="anchor" aria-label="Permalink: Setup &amp; Configuration" href="#setup--configuration"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Use explicit key mapping for returning-user menu dispatch instead of positional index (<a href="https://github.com/NousResearch/hermes-agent/pull/3083" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3083/hovercard">#3083</a>)</li>
<li>Use <code>sys.executable</code> for pip in update commands to fix PEP 668 (<a href="https://github.com/NousResearch/hermes-agent/pull/3099" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3099/hovercard">#3099</a>)</li>
<li>Harden <code>hermes update</code> against diverged history, non-main branches, and gateway edge cases (<a href="https://github.com/NousResearch/hermes-agent/pull/3492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3492/hovercard">#3492</a>)</li>
<li>OpenClaw migration overwrites defaults and setup wizard skips imported sections — fixed (<a href="https://github.com/NousResearch/hermes-agent/pull/3282" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3282/hovercard">#3282</a>)</li>
<li>Stop recursive AGENTS.md walk, load top-level only (<a href="https://github.com/NousResearch/hermes-agent/pull/3110" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3110/hovercard">#3110</a>)</li>
<li>Add macOS Homebrew paths to browser and terminal PATH resolution (<a href="https://github.com/NousResearch/hermes-agent/pull/2713" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2713/hovercard">#2713</a>)</li>
<li>YAML boolean handling for <code>tool_progress</code> config (<a href="https://github.com/NousResearch/hermes-agent/pull/3300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3300/hovercard">#3300</a>)</li>
<li>Reset default SOUL.md to baseline identity text (<a href="https://github.com/NousResearch/hermes-agent/pull/3159" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3159/hovercard">#3159</a>)</li>
<li>Reject relative cwd paths for container terminal backends (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Add explicit <code>hermes-api-server</code> toolset for API server platform (<a href="https://github.com/NousResearch/hermes-agent/pull/3304" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3304/hovercard">#3304</a>)</li>
<li>Reorder setup wizard providers — OpenRouter first (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">🔧 Tool System</h2><a id="user-content--tool-system" class="anchor" aria-label="Permalink: 🔧 Tool System" href="#-tool-system"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">API Server</h3><a id="user-content-api-server" class="anchor" aria-label="Permalink: API Server" href="#api-server"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Idempotency-Key support</strong>, body size limit, and OpenAI error envelope (<a href="https://github.com/NousResearch/hermes-agent/pull/2903" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2903/hovercard">#2903</a>)</li>
<li>Allow Idempotency-Key in CORS headers (<a href="https://github.com/NousResearch/hermes-agent/pull/3530" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3530/hovercard">#3530</a>)</li>
<li>Cancel orphaned agent + true interrupt on SSE disconnect (<a href="https://github.com/NousResearch/hermes-agent/pull/3427" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3427/hovercard">#3427</a>)</li>
<li>Fix streaming breaks when agent makes tool calls (<a href="https://github.com/NousResearch/hermes-agent/pull/2985" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2985/hovercard">#2985</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Terminal &amp; File Operations</h3><a id="user-content-terminal--file-operations" class="anchor" aria-label="Permalink: Terminal &amp; File Operations" href="#terminal--file-operations"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Handle addition-only hunks in V4A patch parser (<a href="https://github.com/NousResearch/hermes-agent/pull/3325" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3325/hovercard">#3325</a>)</li>
<li>Exponential backoff for persistent shell polling (<a href="https://github.com/NousResearch/hermes-agent/pull/2996" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2996/hovercard">#2996</a>)</li>
<li>Add timeout to subprocess calls in <code>context_references</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3469" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3469/hovercard">#3469</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Browser &amp; Vision</h3><a id="user-content-browser--vision" class="anchor" aria-label="Permalink: Browser &amp; Vision" href="#browser--vision"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Handle 402 insufficient credits error in vision tool (<a href="https://github.com/NousResearch/hermes-agent/pull/2802" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2802/hovercard">#2802</a>)</li>
<li>Fix <code>browser_vision</code> ignores <code>auxiliary.vision.timeout</code> config (<a href="https://github.com/NousResearch/hermes-agent/pull/2901" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2901/hovercard">#2901</a>)</li>
<li>Make browser command timeout configurable via config.yaml (<a href="https://github.com/NousResearch/hermes-agent/pull/2801" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2801/hovercard">#2801</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">MCP</h3><a id="user-content-mcp" class="anchor" aria-label="Permalink: MCP" href="#mcp"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>MCP toolset resolution for runtime and config (<a href="https://github.com/NousResearch/hermes-agent/pull/3252" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3252/hovercard">#3252</a>)</li>
<li>Add MCP tool name collision protection (<a href="https://github.com/NousResearch/hermes-agent/pull/3077" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3077/hovercard">#3077</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Auxiliary LLM</h3><a id="user-content-auxiliary-llm" class="anchor" aria-label="Permalink: Auxiliary LLM" href="#auxiliary-llm"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Guard aux LLM calls against None content + reasoning fallback + retry (<a href="https://github.com/NousResearch/hermes-agent/pull/3449" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3449/hovercard">#3449</a>)</li>
<li>Catch ImportError from <code>build_anthropic_client</code> in vision auto-detection (<a href="https://github.com/NousResearch/hermes-agent/pull/3312" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3312/hovercard">#3312</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Other Tools</h3><a id="user-content-other-tools" class="anchor" aria-label="Permalink: Other Tools" href="#other-tools"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Add request timeouts to <code>send_message_tool</code> HTTP calls (<a href="https://github.com/NousResearch/hermes-agent/pull/3162" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3162/hovercard">#3162</a>) by @memosr</li>
<li>Auto-repair <code>jobs.json</code> with invalid control characters (<a href="https://github.com/NousResearch/hermes-agent/pull/3537" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3537/hovercard">#3537</a>)</li>
<li>Enable fine-grained tool streaming for Claude/OpenRouter (<a href="https://github.com/NousResearch/hermes-agent/pull/3497" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3497/hovercard">#3497</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">🧩 Skills Ecosystem</h2><a id="user-content--skills-ecosystem" class="anchor" aria-label="Permalink: 🧩 Skills Ecosystem" href="#-skills-ecosystem"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Skills System</h3><a id="user-content-skills-system" class="anchor" aria-label="Permalink: Skills System" href="#skills-system"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>Env var passthrough</strong> for skills and user config — skills can declare environment variables to pass through (<a href="https://github.com/NousResearch/hermes-agent/pull/2807" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2807/hovercard">#2807</a>)</li>
<li>Cache skills prompt with shared <code>skill_utils</code> module for faster TTFT (<a href="https://github.com/NousResearch/hermes-agent/pull/3421" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3421/hovercard">#3421</a>)</li>
<li>Avoid redundant file re-read for skill conditions (<a href="https://github.com/NousResearch/hermes-agent/pull/2992" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2992/hovercard">#2992</a>)</li>
<li>Use Git Trees API to prevent silent subdirectory loss during install (<a href="https://github.com/NousResearch/hermes-agent/pull/2995" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2995/hovercard">#2995</a>)</li>
<li>Fix skills-sh install for deeply nested repo structures (<a href="https://github.com/NousResearch/hermes-agent/pull/2980" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2980/hovercard">#2980</a>)</li>
<li>Handle null metadata in skill frontmatter (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Preserve trust for skills-sh identifiers + reduce resolution churn (<a href="https://github.com/NousResearch/hermes-agent/pull/3251" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3251/hovercard">#3251</a>)</li>
<li>Agent-created skills were incorrectly treated as untrusted community content — fixed (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">New Skills</h3><a id="user-content-new-skills" class="anchor" aria-label="Permalink: New Skills" href="#new-skills"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>G0DM0D3 godmode jailbreaking skill</strong> + docs (<a href="https://github.com/NousResearch/hermes-agent/pull/3157" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3157/hovercard">#3157</a>)</li>
<li><strong>Docker management skill</strong> added to optional-skills (<a href="https://github.com/NousResearch/hermes-agent/pull/3060" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3060/hovercard">#3060</a>)</li>
<li><strong>OpenClaw migration v2</strong> — 17 new modules, terminal recap for migrating from OpenClaw to Hermes (<a href="https://github.com/NousResearch/hermes-agent/pull/2906" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2906/hovercard">#2906</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">🔒 Security &amp; Reliability</h2><a id="user-content--security--reliability" class="anchor" aria-label="Permalink: 🔒 Security &amp; Reliability" href="#-security--reliability"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Security Hardening</h3><a id="user-content-security-hardening" class="anchor" aria-label="Permalink: Security Hardening" href="#security-hardening"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>SSRF protection</strong> added to <code>browser_navigate</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3058" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3058/hovercard">#3058</a>)</li>
<li><strong>SSRF protection</strong> added to <code>vision_tools</code> and <code>web_tools</code> (hardened) (<a href="https://github.com/NousResearch/hermes-agent/pull/2679" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2679/hovercard">#2679</a>)</li>
<li><strong>Restrict subagent toolsets</strong> to parent's enabled set (<a href="https://github.com/NousResearch/hermes-agent/pull/3269" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3269/hovercard">#3269</a>)</li>
<li><strong>Prevent zip-slip path traversal</strong> in self-update (<a href="https://github.com/NousResearch/hermes-agent/pull/3250" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3250/hovercard">#3250</a>)</li>
<li><strong>Prevent shell injection</strong> in <code>_expand_path</code> via <code>~user</code> path suffix (<a href="https://github.com/NousResearch/hermes-agent/pull/2685" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2685/hovercard">#2685</a>)</li>
<li><strong>Normalize input</strong> before dangerous command detection (<a href="https://github.com/NousResearch/hermes-agent/pull/3260" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3260/hovercard">#3260</a>)</li>
<li>Make tirith block verdicts approvable instead of hard-blocking (<a href="https://github.com/NousResearch/hermes-agent/pull/3428" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3428/hovercard">#3428</a>)</li>
<li>Remove compromised <code>litellm</code>/<code>typer</code>/<code>platformdirs</code> from deps (<a href="https://github.com/NousResearch/hermes-agent/pull/2796" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2796/hovercard">#2796</a>)</li>
<li>Pin all dependency version ranges (<a href="https://github.com/NousResearch/hermes-agent/pull/2810" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2810/hovercard">#2810</a>)</li>
<li>Regenerate <code>uv.lock</code> with hashes, use lockfile in setup (<a href="https://github.com/NousResearch/hermes-agent/pull/2812" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2812/hovercard">#2812</a>)</li>
<li>Bump dependencies to fix CVEs + regenerate <code>uv.lock</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/3073" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3073/hovercard">#3073</a>)</li>
<li>Supply chain audit CI workflow for PR scanning (<a href="https://github.com/NousResearch/hermes-agent/pull/2816" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2816/hovercard">#2816</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Reliability</h3><a id="user-content-reliability" class="anchor" aria-label="Permalink: Reliability" href="#reliability"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>SQLite WAL write-lock contention</strong> causing 15-20s TUI freeze — fixed (<a href="https://github.com/NousResearch/hermes-agent/pull/3385" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3385/hovercard">#3385</a>)</li>
<li><strong>SQLite concurrency hardening</strong> + session transcript integrity (<a href="https://github.com/NousResearch/hermes-agent/pull/3249" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3249/hovercard">#3249</a>)</li>
<li>Prevent recurring cron job re-fire on gateway crash/restart loop (<a href="https://github.com/NousResearch/hermes-agent/pull/3396" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3396/hovercard">#3396</a>)</li>
<li>Mark cron session as ended after job completes (<a href="https://github.com/NousResearch/hermes-agent/pull/2998" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2998/hovercard">#2998</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">⚡ Performance</h2><a id="user-content--performance" class="anchor" aria-label="Permalink: ⚡ Performance" href="#-performance"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>TTFT startup optimizations</strong> — salvaged easy-win startup improvements (<a href="https://github.com/NousResearch/hermes-agent/pull/3395" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3395/hovercard">#3395</a>)</li>
<li>Cache skills prompt with shared <code>skill_utils</code> module (<a href="https://github.com/NousResearch/hermes-agent/pull/3421" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3421/hovercard">#3421</a>)</li>
<li>Avoid redundant file re-read for skill conditions in prompt builder (<a href="https://github.com/NousResearch/hermes-agent/pull/2992" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2992/hovercard">#2992</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">🐛 Notable Bug Fixes</h2><a id="user-content--notable-bug-fixes" class="anchor" aria-label="Permalink: 🐛 Notable Bug Fixes" href="#-notable-bug-fixes"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Fix gateway token double-counting with cached agents (<a href="https://github.com/NousResearch/hermes-agent/pull/3306" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3306/hovercard">#3306</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3317" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3317/hovercard">#3317</a>)</li>
<li>Fix "Event loop is closed" / "Press ENTER to continue" during idle sessions (<a href="https://github.com/NousResearch/hermes-agent/pull/3398" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3398/hovercard">#3398</a>)</li>
<li>Fix reasoning box rendering 3x during tool-calling loops (<a href="https://github.com/NousResearch/hermes-agent/pull/3405" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3405/hovercard">#3405</a>)</li>
<li>Fix status bar shows 26K instead of 260K for token counts (<a href="https://github.com/NousResearch/hermes-agent/pull/3024" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3024/hovercard">#3024</a>)</li>
<li>Fix <code>/queue</code> always working regardless of config (<a href="https://github.com/NousResearch/hermes-agent/pull/3298" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3298/hovercard">#3298</a>)</li>
<li>Fix phantom Discord typing indicator after agent turn (<a href="https://github.com/NousResearch/hermes-agent/pull/3003" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3003/hovercard">#3003</a>)</li>
<li>Fix Slack progress messages appearing in wrong thread (<a href="https://github.com/NousResearch/hermes-agent/pull/3063" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3063/hovercard">#3063</a>)</li>
<li>Fix WhatsApp media downloads (documents, audio, video) (<a href="https://github.com/NousResearch/hermes-agent/pull/2978" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2978/hovercard">#2978</a>)</li>
<li>Fix Telegram "Message thread not found" killing progress messages (<a href="https://github.com/NousResearch/hermes-agent/pull/3390" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3390/hovercard">#3390</a>)</li>
<li>Fix OpenClaw migration overwriting defaults (<a href="https://github.com/NousResearch/hermes-agent/pull/3282" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3282/hovercard">#3282</a>)</li>
<li>Fix returning-user setup menu dispatching wrong section (<a href="https://github.com/NousResearch/hermes-agent/pull/3083" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3083/hovercard">#3083</a>)</li>
<li>Fix <code>hermes update</code> PEP 668 "externally-managed-environment" error (<a href="https://github.com/NousResearch/hermes-agent/pull/3099" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3099/hovercard">#3099</a>)</li>
<li>Fix subagents hitting <code>max_iterations</code> prematurely via shared budget (<a href="https://github.com/NousResearch/hermes-agent/pull/3004" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3004/hovercard">#3004</a>)</li>
<li>Fix YAML boolean handling for <code>tool_progress</code> config (<a href="https://github.com/NousResearch/hermes-agent/pull/3300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3300/hovercard">#3300</a>)</li>
<li>Fix <code>config.get()</code> crashes on YAML null values (<a href="https://github.com/NousResearch/hermes-agent/pull/3377" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3377/hovercard">#3377</a>)</li>
<li>Fix <code>.strip()</code> crash on None values from YAML config (<a href="https://github.com/NousResearch/hermes-agent/pull/3552" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3552/hovercard">#3552</a>)</li>
<li>Fix hung agents on gateway — <code>/stop</code> now hard-kills session lock (<a href="https://github.com/NousResearch/hermes-agent/pull/3104" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3104/hovercard">#3104</a>)</li>
<li>Fix <code>_custom</code> provider silently remapped to <code>openrouter</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/2792" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2792/hovercard">#2792</a>)</li>
<li>Fix Matrix missing from <code>PLATFORMS</code> dict (<a href="https://github.com/NousResearch/hermes-agent/pull/3473" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3473/hovercard">#3473</a>)</li>
<li>Fix Email adapter unbounded <code>_seen_uids</code> growth (<a href="https://github.com/NousResearch/hermes-agent/pull/3490" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3490/hovercard">#3490</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">🧪 Testing</h2><a id="user-content--testing" class="anchor" aria-label="Permalink: 🧪 Testing" href="#-testing"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Pin <code>agent-client-protocol</code> &lt; 0.9 to handle breaking upstream release (<a href="https://github.com/NousResearch/hermes-agent/pull/3320" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3320/hovercard">#3320</a>)</li>
<li>Catch anthropic ImportError in vision auto-detection tests (<a href="https://github.com/NousResearch/hermes-agent/pull/3312" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3312/hovercard">#3312</a>)</li>
<li>Update retry-exhaust test for new graceful return behavior (<a href="https://github.com/NousResearch/hermes-agent/pull/3320" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3320/hovercard">#3320</a>)</li>
<li>Add regression tests for null metadata frontmatter (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">📚 Documentation</h2><a id="user-content--documentation" class="anchor" aria-label="Permalink: 📚 Documentation" href="#-documentation"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Update all docs for <code>/model</code> command overhaul and custom provider support (<a href="https://github.com/NousResearch/hermes-agent/pull/2800" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2800/hovercard">#2800</a>)</li>
<li>Fix stale and incorrect documentation across 18 files (<a href="https://github.com/NousResearch/hermes-agent/pull/2805" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2805/hovercard">#2805</a>)</li>
<li>Document 9 previously undocumented features (<a href="https://github.com/NousResearch/hermes-agent/pull/2814" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2814/hovercard">#2814</a>)</li>
<li>Add missing skills, CLI commands, and messaging env vars to docs (<a href="https://github.com/NousResearch/hermes-agent/pull/2809" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2809/hovercard">#2809</a>)</li>
<li>Fix api-server response storage documentation — SQLite, not in-memory (<a href="https://github.com/NousResearch/hermes-agent/pull/2819" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2819/hovercard">#2819</a>)</li>
<li>Quote pip install extras to fix zsh glob errors (<a href="https://github.com/NousResearch/hermes-agent/pull/2815" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2815/hovercard">#2815</a>)</li>
<li>Unify hooks documentation — add plugin hooks to hooks page, add <code>session:end</code> event (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Clarify two-mode behavior in <code>session_search</code> schema description (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
<li>Fix Discord Public Bot setting for Discord-provided invite link (<a href="https://github.com/NousResearch/hermes-agent/pull/3519" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3519/hovercard">#3519</a>) by @mehmoodosman</li>
<li>Revise v0.4.0 changelog — fix feature attribution, reorder sections (<a href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li>
</ul>
<hr>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">👥 Contributors</h2><a id="user-content--contributors" class="anchor" aria-label="Permalink: 👥 Contributors" href="#-contributors"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Core</h3><a id="user-content-core" class="anchor" aria-label="Permalink: Core" href="#core"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>@teknium1</strong> — 157 PRs covering the full scope of this release</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Community Contributors</h3><a id="user-content-community-contributors" class="anchor" aria-label="Permalink: Community Contributors" href="#community-contributors"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>@alt-glitch</strong> (Siddharth Balyan) — 2 PRs: Nix flake with uv2nix build, NixOS module, and persistent container mode (<a href="https://github.com/NousResearch/hermes-agent/pull/20" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/20/hovercard">#20</a>); auto-generated config keys and suffix PATHs for Nix builds (<a href="https://github.com/NousResearch/hermes-agent/pull/3061" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3061/hovercard">#3061</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/3274" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3274/hovercard">#3274</a>)</li>
<li><strong>@ctlst</strong> — 1 PR: Prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode (<a href="https://github.com/NousResearch/hermes-agent/pull/2701" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2701/hovercard">#2701</a>)</li>
<li><strong>@memosr</strong> (memosr.eth) — 1 PR: Add request timeouts to <code>send_message_tool</code> HTTP calls (<a href="https://github.com/NousResearch/hermes-agent/pull/3162" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3162/hovercard">#3162</a>)</li>
<li><strong>@mehmoodosman</strong> (Osman Mehmood) — 1 PR: Fix Discord docs for Public Bot setting (<a href="https://github.com/NousResearch/hermes-agent/pull/3519" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/3519/hovercard">#3519</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">All Contributors</h3><a id="user-content-all-contributors" class="anchor" aria-label="Permalink: All Contributors" href="#all-contributors"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">@alt-glitch, @ctlst, @mehmoodosman, @memosr, @teknium1</p>
<hr>
<p dir="auto"><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.23...v2026.3.28">v2026.3.23...v2026.3.28</a></p>
</article></div><div class="d-none"></div></section></div></div></div> </div> <!-- --> </div></div></div></div></div></div><div class="ScrollMarksContainer-module__scrollMarksContainer__Eu7uU" id="find-result-marks-container"></div><div class="d-none"></div><div class="d-none"></div></div> <!-- --> <!-- --> </div>
</react-app>




  </div>

</turbo-frame>

    </main>
  </div>

  </div>

          <footer class="footer f6 color-fg-muted color-border-subtle tmp-pt-7 tmp-pb-6 p-responsive" role="contentinfo"  >
  <h2 class='sr-only'>Footer</h2>

  


  <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap">
    <div class="d-flex flex-items-center flex-shrink-0 mx-2">
      <a aria-label="GitHub Homepage" class="footer-octicon mr-2" href="https://github.com">
        <svg aria-hidden="true" data-component="Octicon" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
    <path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path>
</svg>
</a>
      <span>
        &copy; 2026 GitHub,&nbsp;Inc.
      </span>
    </div>

    <nav aria-label="Footer">
      <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>

      <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading">


          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a>
          </li>


            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
            </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to community&quot;,&quot;label&quot;:&quot;text:community&quot;}" href="https://github.community/" data-view-component="true" class="Link--secondary Link">Community</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a>
          </li>

          
<li class="mx-2" >
  <cookie-consent-link>
    <button
      type="button"
      class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
      data-action="click:cookie-consent-link#showConsentManagement"
      data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}"
    >
      Manage cookies
    </button>
  </cookie-consent-link>
</li>

  <li class="mx-2">
    <cookie-consent-link>
      <button
        type="button"
        class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent text-left"
        data-action="click:cookie-consent-link#showConsentManagement"
        data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}"
      >
        Do not share my personal information
      </button>
    </cookie-consent-link>
  </li>

      </ul>
    </nav>
  </div>
</footer>



    <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
      data-locale="en"
      data-initial-cookie-consent-allowed=""
      data-cookie-consent-required="true"
    ></ghcc-consent>




  <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
    <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    You can’t perform that action at this time.
  </div>

    <template id="site-details-dialog">
  <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
    <summary role="button" aria-label="Close dialog"></summary>
    <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
      <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
      </button>
      <div class="octocat-spinner tmp-my-6 js-details-dialog-spinner"></div>
    </details-dialog>
  </details>
</template>

    <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
  <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
  </div>
</div>

    <template id="snippet-clipboard-copy-button">
  <div class="zeroclipboard-container position-absolute right-0 top-0">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2 tmp-m-2">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2 tmp-m-2">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>
<template id="snippet-clipboard-copy-button-unpositioned">
  <div class="zeroclipboard-container">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>




    </div>
    <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
    <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
  </body>
</html>

