1032 lines
275 KiB
HTML
1032 lines
275 KiB
HTML
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<!DOCTYPE html>
|
||
<html
|
||
lang="en"
|
||
|
||
data-color-mode="light" 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" rel="preload" as="script" href="https://github.githubassets.com/assets/global-banner-disable-5554a5e94272b68a.js" />
|
||
|
||
<link rel="preload" href="https://github.githubassets.com/assets/MonaSansVF-wdth-wght-opsz-902d64c7ad02.woff2" as="font" type="font/woff2" crossorigin>
|
||
|
||
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f4bf1142976e4bbf.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-f661b49995ba0bd8.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-0b38d22346321c92.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-f1c62c9e70259b9f.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-f50cacf0a86b9929.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-e61d4f4ca17852c2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-39c10993d5603fac.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-73236c840c0c7d90.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-0de76f07cc035b10.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-fd1500c8744e40d6.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-ed9ca172356fd545.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-adcabba7b5c5d221.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-552513ad07a183a1.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-610c6d3d4706c483.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/readme-d74cae9ea142d14e.css" />
|
||
|
||
|
||
|
||
<script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","activity_diff_file_tree","activity_repos_file_tree","activity_repos_overview_header","activity_repos_overview_sidebar","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","cca_show_aic_usage_per_session","ccr_files_changed_model_picker","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_api_agentic_issue_marshal_yaml","copilot_automations_pagination","copilot_chat_clear_model_selection_for_default_change","copilot_chat_compact_tables","copilot_chat_header_reorder","copilot_chat_max_upsell","copilot_chat_minimize_contextual","copilot_chat_model_picker_promotions","copilot_chat_models_browser_cache","copilot_chat_new_topic_nudge","copilot_chat_reduce_quota_checks","copilot_chat_vision_dotcom_chat_ga_gate","copilot_chat_vision_preview_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_ftp_hyperspace_upgrade_prompt","copilot_hide_hovercard","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_suggestion_pills","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_early_stop","copilot_mission_control_environment_list_icons","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_repo_hovercards","copilot_mission_control_sandbox_client_side_clone","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_session_filters","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_pr_chat_enhancements","copilot_prominent_upgrade_button","copilot_resource_panel","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_synchronize_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_workbench_sunset","copilot_workbench_sunset_redirect","copilot_workbench_ubb","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_suite_disable_river_accordion_dither","glc_code_quality_repo_settings_workflow_config","hide_github_models_ui","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_optimistic_updates","issue_relative_time_micro","issues_dashboard_sso_structured_errors","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_pages_search_explore_provider","memex_default_issue_create_repository","memex_lazy_hydrate_agent_tasks","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_checks_refetch_dedupe","merge_status_header_feedback","oauth_authorize_clickjacking_protection","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","prs_copilot_app_open_action","prs_css_anchor_positioning","prs_new_conversation_comments_api","pull_request_copilot_attribution_header","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_feedback_dialog","pull_request_stacks_rebase_conflict_instructions","pull_request_virtualization_image_estimate","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","pulls_dashboard_sidebar_layout","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_actions_workflows","repo_app_agents","repo_app_commits","repo_app_issues","repo_app_pull_requests","repo_app_turbo","repo_issues_sidebar_layout","repo_overview_ask_copilot","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_banner_learn_copilot_sdk","site_global_nav_spark_models_removed","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","ui_service_referrer_metrics","update_issue_suggestions","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workbench_store_readonly","react_import_map","react_import_map"],"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-e3d808ee18eb9784.js"></script>
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-c40ff75fa4b29faf.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-89338d13d121427c.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-79275629e212a8de.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-ef80792c471f3488.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-564408e9198dff6d.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-6301446d495cadb7.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.db39abd7070fb379.module.css" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-86a8f5de995615f8.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e88088f989b27670.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-85cb37305f54dec4.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by4-73006a52f155289f.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-36f036c13c2e3a4c.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/kw-866fd9513ae95106.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/r1-b075aab3204f32f9.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-7c5d1669717041f8.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-5126390ff433704d.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j05-dce4d588268f0f7e.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-d5a098151cf3b06a.js" defer="defer"></script>
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-e87c875160a83f53.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-f3f5d71440009c48.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-edd4f18194230d9e.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-5109c77d7ac61078.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-220b14bbb2e5a3aa.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/04-a76c47ec12c12e01.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-024971cb63acad59.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t-9933bcccf9a9524f.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6ny-c969fbae697a356f.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/yhq-3a209035a30b1a09.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/z1v-da5b33b877bfa358.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wo-09f85d22a6c8931b.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/9y-81cfe57dc9040f3e.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-41a4cf04cbd99503.js" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0p-50de93b282dbc67c.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-f18992dbb9345e7b.js" defer="defer"></script>
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.1d66df2418934e22.module.css" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pc-0868e9f8520905ab.js" />
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/marketing-b932e85ce464415a.js" defer="defer"></script>
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/marketing-readme-ff299a83f8bcbcb5.js" defer="defer"></script>
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "http://schema.org",
|
||
"@type": "BreadcrumbList",
|
||
"itemListElement": [{
|
||
"@type": "ListItem",
|
||
"position": 1,
|
||
"item": {
|
||
"@id": "https://github.com/readme",
|
||
"name": "The ReadME Project"
|
||
}
|
||
},
|
||
{
|
||
"@type": "ListItem",
|
||
"position": 2,
|
||
"item": {
|
||
"@id": "https://github.com/readme/guides/incident-response",
|
||
"name": "Move past incident response to reliability"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
</script>
|
||
|
||
<script type="application/ld+json">{
|
||
"@context": "http://schema.org",
|
||
"@type": "Article",
|
||
"headline": "Move past incident response to reliability",
|
||
"datePublished": "2023-02-14T02:00:00+00:00",
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "GitHub",
|
||
"logo": "https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"
|
||
},
|
||
"author": [
|
||
{
|
||
"@type": "Person",
|
||
"name": "Will Larson",
|
||
"url": "https://github.com/lethain"
|
||
}
|
||
],
|
||
"image": [
|
||
"https://images.ctfassets.net/s5uo95nf6njh/TbAmASwcFKVydPraIyNpy/374ef33f30c4742821cea2827760dc6f/4_smaller_Tim_Peacock_resized.jpg"
|
||
]
|
||
}</script>
|
||
|
||
|
||
<title>Move past incident response to reliability · GitHub</title>
|
||
|
||
|
||
|
||
<meta name="route-pattern" content="/readme/guides/:id(.:format)" data-turbo-transient>
|
||
<meta name="route-controller" content="site_readme_guides" data-turbo-transient>
|
||
<meta name="route-action" content="show" data-turbo-transient>
|
||
<meta name="fetch-nonce" content="v2:8f4eb30d-f6ee-ba33-70f6-fb536b61ba7a">
|
||
|
||
|
||
<meta name="current-catalog-service-hash" content="3b3a86e94adb1936974b9e80c6c5c959f35b1d5f75b93677737ffa36daf92bbd">
|
||
|
||
|
||
<meta name="request-id" content="E98E:BE319:146B43:230C9D:6AA4E61A" data-pjax-transient="true"/><meta name="html-safe-nonce" content="3c456646a54122878e480a9c91fb1025f07fffa4cb5bbb44b2864ed3d89ef478" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFOThFOkJFMzE5OjE0NkI0MzoyMzBDOUQ6NkFBNEU2MUEiLCJ2aXNpdG9yX2lkIjoiNzcwNDU5MDE5NDg5MTA5NTMwIiwicmVnaW9uX2VkZ2UiOiJ3ZXN0dXMzIiwicmVnaW9uX3JlbmRlciI6Indlc3R1czMifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="8b27a33007d2919ab24b15ed2cedb3098c4efed93dd86bafd4051dfae6f8490f" data-pjax-transient="true"/>
|
||
|
||
|
||
|
||
|
||
<meta name="github-keyboard-shortcuts" content="copilot" data-turbo-transient="true" />
|
||
|
||
|
||
<meta name="selected-link" value="/readme/guides/incident-response" 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="octolytics-page-type" content="marketing" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="user-login" content="">
|
||
|
||
|
||
|
||
<meta name="viewport" content="width=device-width">
|
||
|
||
|
||
|
||
<meta name="description" content="We once relied on crossed fingers and optimism as our first line of defense in incident response, but there’s a better way. Will Larson, a software engineering lead at Calm, outlines ways to move past incident response to ensure reliability.">
|
||
|
||
<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/readme/guides/incident-response" />
|
||
|
||
<meta name="twitter:image" content="https://images.ctfassets.net/s5uo95nf6njh/2X0eQKcGeyGbfYQVZbtR2V/126250fc7904fd78ca4a48a999c86919/1200x630-ReadMe-Twitter_LI_Post-Will_Larson.jpg" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="Move past incident response to reliability" /><meta name="twitter:description" content="Remember when optimism and crossed fingers were our first line of incident response? @lethain outlines a better way:" />
|
||
<meta property="og:image" content="https://images.ctfassets.net/s5uo95nf6njh/2X0eQKcGeyGbfYQVZbtR2V/126250fc7904fd78ca4a48a999c86919/1200x630-ReadMe-Twitter_LI_Post-Will_Larson.jpg" /><meta property="og:image:alt" content="Remember when optimism and crossed fingers were our first line of incident response? @lethain outlines a better way:" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="Move past incident response to reliability" /><meta property="og:url" content="https://github.com/readme/guides/incident-response" /><meta property="og:description" content="Remember when optimism and crossed fingers were our first line of incident response? @lethain outlines a better way:" />
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="hostname" content="github.com">
|
||
|
||
|
||
|
||
<meta name="expected-hostname" content="github.com">
|
||
|
||
|
||
<meta http-equiv="x-pjax-version" content="06eaf606a96480b3e092be77ad1e5c561b1061aebb8c4db7db8d3eca6114edf6" data-turbo-track="reload">
|
||
<meta http-equiv="x-pjax-csp-version" content="a0721a5a35c7ad5dae5b0d7b119c20d884a2506083b3f43642f810f0a129fcc2" data-turbo-track="reload">
|
||
<meta http-equiv="x-pjax-css-version" content="b7a4653359baeee3d827ca91d7c149e4962234557341efae58fad4aa5ce82a0a" data-turbo-track="reload">
|
||
<meta http-equiv="x-pjax-js-version" content="96efb01f6430a1ad6e22f9e0b8a04625dd76a461e93da809464e8d1f9c36c59c" data-turbo-track="reload">
|
||
|
||
<meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">
|
||
|
||
<meta name="readme-story-name" content="Will Larson">
|
||
<link rel="preconnect" href="https://images.ctfassets.net">
|
||
<link rel="preload" href="https://github.githubassets.com/assets/Blimone-Medium-Inktrap-870240417f29.woff2" as="font" type="font/woff2" crossorigin>
|
||
<link rel="preload" href="https://github.githubassets.com/assets/hubot-sans-597e45ee1797.woff2" as="font" type="font/woff2" crossorigin>
|
||
<link rel="preload" href="https://github.githubassets.com/assets/MonaSansVF-wdth-wght-opsz-902d64c7ad02.woff2" as="font" type="font/woff2" crossorigin>
|
||
<meta name="is_logged_out_page" content="true">
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="canonical" href="https://github.com/readme/guides/incident-response" data-turbo-transient>
|
||
|
||
|
||
<meta name="turbo-body-classes" content="logged-out env-production page-responsive readme-project header-overlay">
|
||
<meta name="disable-turbo" content="true">
|
||
|
||
|
||
<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="ee0d1b245383d5b08b4f8b7ecd18cda5bdccbbe4" 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 readme-project header-overlay" style="word-wrap: break-word;" >
|
||
<div data-turbo-body class="logged-out env-production page-responsive readme-project header-overlay" style="word-wrap: break-word;" data-turbo="false">
|
||
<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/t7l-bf6f21d7e7a43c35.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/l7j-a8c3c3ab9790e365.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3np-a0186ba63220b6ce.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bi0-e2f78de823e39ca9.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-98c649c7176c489a.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.b5f61eada8ea05c6.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/pg-edbe06b8984594ea.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-global-banner-d646d2982531bd06.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/marketing-global-banner.a12a1154019e2c70.module.css" />
|
||
|
||
<react-partial
|
||
partial-name="marketing-global-banner"
|
||
data-ssr="false"
|
||
data-attempted-ssr="true"
|
||
data-react-profiling="false"
|
||
>
|
||
|
||
<script type="application/json" data-target="react-partial.embeddedData">{"props":{"logged_in":false,"current_path":"/readme/guides/incident-response","locale":"en","is_staff":false}}</script>
|
||
<div data-target="react-partial.reactRoot"></div>
|
||
</react-partial>
|
||
|
||
|
||
|
||
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/global-banner-disable-5554a5e94272b68a.js"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz5-23f28c0f388769c9.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/lht-b91be4a9ea8a3210.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p1-76a75a6081059b19.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tua-81c88ff7e39af43c.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4s-854aef8a5dc4797a.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-b4f24b72e9c5634b.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/4s.795b697dd2335e43.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":"light","logged_in":false,"marketing_page":true,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2Freadme%2Fguides%2Fincident-response","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2Freadme%2Fguides%2Fincident-response\u0026source=header","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/readme/guides/incident-response\",\"user_id\":null}}","auth_hydro_click_hmac":"f888322221a2161d89c92e5d04d0b455f222943840b980c3d7a16588bf4e2e14","overlay":true,"fixed":false}}</script>
|
||
<div data-target="react-partial.reactRoot"><div data-color-mode="light" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out MarketingHeader-module__overlay__jnPuQ" role="banner" data-marketing-header="true" data-color-mode="light" 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="{"action":"homepage","tag":"link","context":"logo","location":"header","label":"homepage_link_logo_header"}"><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%2Freadme%2Fguides%2Fincident-response" data-analytics-event="{"action":"sign_in","tag":"link","context":"auth_cta","location":"header","label":"sign_in_link_auth_cta_header"}" data-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/readme/guides/incident-response","user_id":null}}" data-hydro-click-hmac="f888322221a2161d89c92e5d04d0b455f222943840b980c3d7a16588bf4e2e14"><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></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="{"action":"github_copilot","tag":"link","context":"platform","location":"navbar","label":"github_copilot_link_platform_navbar"}"><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="{"action":"github_copilot_app","tag":"link","context":"platform","location":"navbar","label":"github_copilot_app_link_platform_navbar"}"><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="{"action":"mcp_registry","tag":"link","context":"platform","location":"navbar","label":"mcp_registry_link_platform_navbar"}"><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="{"action":"actions","tag":"link","context":"platform","location":"navbar","label":"actions_link_platform_navbar"}"><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="{"action":"codespaces","tag":"link","context":"platform","location":"navbar","label":"codespaces_link_platform_navbar"}"><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="{"action":"issues","tag":"link","context":"platform","location":"navbar","label":"issues_link_platform_navbar"}"><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="{"action":"code_review","tag":"link","context":"platform","location":"navbar","label":"code_review_link_platform_navbar"}"><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="{"action":"code_quality","tag":"link","context":"platform","location":"navbar","label":"code_quality_link_platform_navbar"}"><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="{"action":"github_advanced_security","tag":"link","context":"platform","location":"navbar","label":"github_advanced_security_link_platform_navbar"}"><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="{"action":"code_security","tag":"link","context":"platform","location":"navbar","label":"code_security_link_platform_navbar"}"><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="{"action":"secret_protection","tag":"link","context":"platform","location":"navbar","label":"secret_protection_link_platform_navbar"}"><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="{"action":"why_github","tag":"link","context":"platform","location":"navbar","label":"why_github_link_platform_navbar"}"><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="{"action":"documentation","tag":"link","context":"platform","location":"navbar","label":"documentation_link_platform_navbar"}" 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 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="{"action":"blog","tag":"link","context":"platform","location":"navbar","label":"blog_link_platform_navbar"}" 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 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="{"action":"changelog","tag":"link","context":"platform","location":"navbar","label":"changelog_link_platform_navbar"}" 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 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="{"action":"marketplace","tag":"link","context":"platform","location":"navbar","label":"marketplace_link_platform_navbar"}"><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="{"action":"view_all_features","tag":"link","context":"platform","location":"navbar","label":"view_all_features_link_platform_navbar"}"><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="{"action":"enterprises","tag":"link","context":"solutions","location":"navbar","label":"enterprises_link_solutions_navbar"}"><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="{"action":"small_and_medium_teams","tag":"link","context":"solutions","location":"navbar","label":"small_and_medium_teams_link_solutions_navbar"}"><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="{"action":"startups","tag":"link","context":"solutions","location":"navbar","label":"startups_link_solutions_navbar"}"><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="{"action":"nonprofits","tag":"link","context":"solutions","location":"navbar","label":"nonprofits_link_solutions_navbar"}"><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="{"action":"app_modernization","tag":"link","context":"solutions","location":"navbar","label":"app_modernization_link_solutions_navbar"}"><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="{"action":"devsecops","tag":"link","context":"solutions","location":"navbar","label":"devsecops_link_solutions_navbar"}"><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="{"action":"devops","tag":"link","context":"solutions","location":"navbar","label":"devops_link_solutions_navbar"}"><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="{"action":"ci/cd","tag":"link","context":"solutions","location":"navbar","label":"ci/cd_link_solutions_navbar"}"><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="{"action":"view_all_use_cases","tag":"link","context":"solutions","location":"navbar","label":"view_all_use_cases_link_solutions_navbar"}"><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="{"action":"healthcare","tag":"link","context":"solutions","location":"navbar","label":"healthcare_link_solutions_navbar"}"><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="{"action":"financial_services","tag":"link","context":"solutions","location":"navbar","label":"financial_services_link_solutions_navbar"}"><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="{"action":"manufacturing","tag":"link","context":"solutions","location":"navbar","label":"manufacturing_link_solutions_navbar"}"><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="{"action":"government","tag":"link","context":"solutions","location":"navbar","label":"government_link_solutions_navbar"}"><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="{"action":"view_all_industries","tag":"link","context":"solutions","location":"navbar","label":"view_all_industries_link_solutions_navbar"}"><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="{"action":"view_all_solutions","tag":"link","context":"solutions","location":"navbar","label":"view_all_solutions_link_solutions_navbar"}"><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="{"action":"ai","tag":"link","context":"resources","location":"navbar","label":"ai_link_resources_navbar"}"><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="{"action":"software_development","tag":"link","context":"resources","location":"navbar","label":"software_development_link_resources_navbar"}"><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="{"action":"devops","tag":"link","context":"resources","location":"navbar","label":"devops_link_resources_navbar"}"><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="{"action":"security","tag":"link","context":"resources","location":"navbar","label":"security_link_resources_navbar"}"><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="{"action":"view_all_topics","tag":"link","context":"resources","location":"navbar","label":"view_all_topics_link_resources_navbar"}"><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="{"action":"customer_stories","tag":"link","context":"resources","location":"navbar","label":"customer_stories_link_resources_navbar"}"><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="{"action":"events__webinars","tag":"link","context":"resources","location":"navbar","label":"events__webinars_link_resources_navbar"}"><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 & 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="{"action":"ebooks__reports","tag":"link","context":"resources","location":"navbar","label":"ebooks__reports_link_resources_navbar"}"><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 & 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="{"action":"business_insights","tag":"link","context":"resources","location":"navbar","label":"business_insights_link_resources_navbar"}"><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="{"action":"github_skills","tag":"link","context":"resources","location":"navbar","label":"github_skills_link_resources_navbar"}" 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 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 & 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="{"action":"documentation","tag":"link","context":"resources","location":"navbar","label":"documentation_link_resources_navbar"}" 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 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="{"action":"customer_support","tag":"link","context":"resources","location":"navbar","label":"customer_support_link_resources_navbar"}" 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 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="{"action":"community_forum","tag":"link","context":"resources","location":"navbar","label":"community_forum_link_resources_navbar"}"><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="{"action":"trust_center","tag":"link","context":"resources","location":"navbar","label":"trust_center_link_resources_navbar"}"><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="{"action":"partners","tag":"link","context":"resources","location":"navbar","label":"partners_link_resources_navbar"}"><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="{"action":"view_all_resources","tag":"link","context":"resources","location":"navbar","label":"view_all_resources_link_resources_navbar"}"><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="{"action":"github_sponsors","tag":"link","context":"open_source","location":"navbar","label":"github_sponsors_link_open_source_navbar"}"><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="{"action":"security_lab","tag":"link","context":"open_source","location":"navbar","label":"security_lab_link_open_source_navbar"}" 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 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="{"action":"maintainer_community","tag":"link","context":"open_source","location":"navbar","label":"maintainer_community_link_open_source_navbar"}" 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 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="{"action":"github_stars","tag":"link","context":"open_source","location":"navbar","label":"github_stars_link_open_source_navbar"}" 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 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="{"action":"archive_program","tag":"link","context":"open_source","location":"navbar","label":"archive_program_link_open_source_navbar"}" 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 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="{"action":"topics","tag":"link","context":"open_source","location":"navbar","label":"topics_link_open_source_navbar"}"><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="{"action":"trending","tag":"link","context":"open_source","location":"navbar","label":"trending_link_open_source_navbar"}"><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="{"action":"collections","tag":"link","context":"open_source","location":"navbar","label":"collections_link_open_source_navbar"}"><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="{"action":"enterprise_platform","tag":"link","context":"enterprise","location":"navbar","label":"enterprise_platform_link_enterprise_navbar"}"><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="{"action":"github_advanced_security","tag":"link","context":"enterprise","location":"navbar","label":"github_advanced_security_link_enterprise_navbar"}"><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="{"action":"copilot_for_business","tag":"link","context":"enterprise","location":"navbar","label":"copilot_for_business_link_enterprise_navbar"}"><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="{"action":"premium_support","tag":"link","context":"enterprise","location":"navbar","label":"premium_support_link_enterprise_navbar"}"><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="{"action":"pricing","tag":"link","context":"pricing","location":"navbar","label":"pricing_link_pricing_navbar"}" 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="{"action":"searchbar","tag":"input","context":"global","location":"navbar","label":"searchbar_input_global_navbar"}"><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%2Freadme%2Fguides%2Fincident-response" data-analytics-event="{"action":"sign_in","tag":"link","context":"auth_cta","location":"header","label":"sign_in_link_auth_cta_header"}" data-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/readme/guides/incident-response","user_id":null}}" data-hydro-click-hmac="f888322221a2161d89c92e5d04d0b455f222943840b980c3d7a16588bf4e2e14"><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&ref_loc=header+logged+out&ref_page=%2Freadme%2Fguides%2Fincident-response&source=header" data-analytics-event="{"action":"sign_up","tag":"link","context":"auth_cta","location":"header","label":"sign_up_link_auth_cta_header"}" data-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/readme/guides/incident-response","user_id":null}}" data-hydro-click-hmac="f888322221a2161d89c92e5d04d0b455f222943840b980c3d7a16588bf4e2e14"><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></div></div></div></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-c86c3597-4f33-43f3-a770-40ed499daeca" aria-labelledby="tooltip-2d230970-f1be-4993-85e5-cefaac93d96b" 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-2d230970-f1be-4993-85e5-cefaac93d96b" for="icon-button-c86c3597-4f33-43f3-a770-40ed499daeca" 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
|
||
>
|
||
<main class="font-mktg " >
|
||
|
||
|
||
|
||
<div class="js-details-container">
|
||
|
||
<div class="position-relative d-flex width-full overflow-hidden js-build-in" data-build-margin-bottom="45">
|
||
<div class="position-absolute top-0 right-0 left-0 readme-hero--guides__background" style="background-color:#ED8D43"></div>
|
||
|
||
<div class="position-relative d-flex flex-column-reverse flex-lg-row flex-justify-between container-readme mx-auto">
|
||
<div class="position-relative col-lg-6 d-flex flex-column flex-justify-center p-responsive-readme tmp-mt-6 tmp-mt-lg-n2 tmp-mb-6 tmp-mb-lg-12 tmp-mb-xl-9 readme-hero__text">
|
||
<div class="width-full height-full d-flex flex-column flex-justify-center tmp-pt-lg-12">
|
||
<div class="tmp-mb-4 tmp-mb-md-6 tmp-mb-xl-9">
|
||
<a href="/readme" aria-label="ReadME Project Homepage" class="readme-logo-link--inverted">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="137" height="50" viewBox="0 0 137 52" fill="currentColor" aria-hidden="true" class="d-block readme-logo">
|
||
<path d="M74 31.097h1.784v-4.52h5.779v4.52h1.8v-4.175c0-.773-.278-1.282-1.178-1.282h-.606v-.115c1.048-.378 1.752-1.413 1.752-2.86 0-2.153-1.13-3.55-3.504-3.55H74v11.982zm1.784-6.016v-4.405h3.65c1.212 0 1.998.543 1.998 1.693v1.003c0 1.019-.704 1.71-1.997 1.71h-3.65zM85.073 26.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.261.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.17a8.99 8.99 0 00.066-.937c0-2.449-1.555-3.928-3.895-3.928-2.489 0-4.077 1.644-4.077 4.47zm1.736-.822v-.197c0-1.25.95-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534zM94.392 28.615c0 1.594 1.032 2.646 2.75 2.646 1.392 0 2.505-.624 2.865-1.561h.115l.016.41c.049.625.328.987 1.228.987h1.555v-1.233h-1.211v-4.52c0-.937-.41-3.057-3.372-3.057-2.112 0-3.487 1.02-3.602 2.827h1.67c.049-.904.655-1.48 1.85-1.48 1.047 0 1.768.445 1.768 1.677v.625h-2.505c-1.915 0-3.127.97-3.127 2.679zm1.72-.362c0-.674.572-1.15 1.62-1.15h2.292v.41c0 1.43-.917 2.4-2.407 2.4-.9 0-1.506-.394-1.506-1.2v-.46zM107.489 31.261c1.358 0 2.471-.608 3.028-1.693h.114l.197 1.529h1.506V19h-1.703v5.079h-.114c-.508-1.036-1.555-1.677-3.028-1.677-2.21 0-3.536 1.595-3.536 4.438 0 2.794 1.309 4.421 3.536 4.421zm.54-1.397c-1.506 0-2.341-.887-2.341-2.219v-1.627c0-1.38.9-2.219 2.341-2.219 1.555 0 2.602 1.003 2.602 2.548v.97c0 1.528-1.031 2.547-2.602 2.547zM114.377 31.097h1.752v-6.098l-.148-3.484h.115l4.207 9.368 4.19-9.368h.099l-.131 3.468v6.114h1.735V19.115h-2.308l-3.552 8.152h-.099l-3.536-8.152h-2.324v11.982zM128.489 31.097h8.054v-1.595h-6.269v-3.83h5.483v-1.511h-5.483v-3.452h6.269v-1.594h-8.054v11.982zM74 49.097h1.784V44.84h3.503c2.488 0 3.814-1.447 3.814-3.863 0-2.366-1.244-3.862-3.814-3.862H74v11.982zm1.784-5.786V38.76h3.52c1.146 0 1.915.575 1.915 1.643v1.134c0 1.036-.72 1.775-2.063 1.775h-3.372zM86.37 40.452c-1.309 0-1.489.805-1.489 1.479v7.166h1.686v-7.232h2.783v-1.413h-2.98zM89.853 44.774c0 2.761 1.588 4.487 4.174 4.487 2.636 0 4.175-1.792 4.175-4.487 0-2.86-1.736-4.487-4.175-4.487-2.52 0-4.174 1.677-4.174 4.487zm1.719.707v-1.348c0-1.48.999-2.416 2.455-2.416 1.408 0 2.44.937 2.44 2.416v1.348c0 1.545-1.064 2.367-2.44 2.367-1.358 0-2.455-.806-2.455-2.367zM100.327 37v2.038h1.686V37h-1.686zm0 3.452v10.025h-1.85v1.364h2.03c1.489 0 1.489-1.084 1.489-1.495v-1.71l.017-8.184h-1.686zM103.889 44.758c0 2.744 1.522 4.503 4.092 4.503 2.03 0 3.569-1.118 3.912-2.794h-1.669c-.262.855-1.081 1.446-2.226 1.446-1.425 0-2.374-.92-2.374-2.284v-.477h6.171c.033-.28.066-.657.066-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.735-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.022v.279h-4.534zM121.389 46.089h-1.67c-.196 1.085-1.031 1.759-2.226 1.759-1.408 0-2.374-.888-2.374-2.334v-1.348c0-1.446.933-2.449 2.374-2.449 1.08 0 1.931.526 2.193 1.644h1.686c-.278-1.858-1.751-3.074-3.814-3.074-2.472 0-4.158 1.627-4.158 4.504 0 2.728 1.523 4.47 4.109 4.47 2.128 0 3.618-1.2 3.88-3.172zM125.422 41.865h1.784v-1.413h-1.784V37.64h-1.669v2.81h-1.556v1.414h1.556V47.7c0 .838.36 1.397 1.424 1.397h2.029v-1.38h-1.784v-5.852z"></path>
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 23C4 9.5 15 0 32 0v9c-8 0-15 3.5-15 14h13v26h-8v-4h-4v4h-3v-4h-4v-4H7v4h4v4H4V33h4v-4H4v-6zm10 12h4v4h-4v-4z"></path>
|
||
<path d="M4 29H0v4h4v-4z"></path>
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M36 23C36 9.5 47 0 64 0v9c-8 0-15 3.5-15 14h13v18h4v4h-4v4h-5v-4h4v-4h-4v4h-4v4H43v-4h4v-4h-4v-4h-4v4h4v4h-4v4h-3V23zm15 13v-4h-4v4h4z"></path>
|
||
<path d="M81.97 1.115H73V2.71h3.601v10.388h1.768V2.709h3.602V1.115zM83.388 13.097h1.686V8.51c0-1.676.933-2.794 2.373-2.794 1.212 0 1.9.723 1.9 2.252v5.128h1.702V7.804c0-2.136-1.065-3.517-2.98-3.517-1.276 0-2.34.641-2.88 1.742h-.115V1h-1.686v12.097zM92.113 8.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.262.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.171c.033-.28.065-.657.065-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.736-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534z"></path>
|
||
</svg>
|
||
</a>
|
||
</div>
|
||
|
||
<h1 class="tmp-mb-6 color-text-white readme-heading-1 readme-heading--condensed">
|
||
Move past incident response to reliability
|
||
</h1>
|
||
|
||
<p class="col-xl-11 tmp-mb-lg-6 readme-subheading fgColor-onEmphasis">
|
||
We once relied on crossed fingers and optimism as our first line of defense, but there’s a better way.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="position-relative col-lg-6 readme-hero__img">
|
||
<picture class="d-flex">
|
||
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=240&fm=webp 240w" sizes="(max-width: 755px) 100vw, 45vw" type="image/webp"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=720&fm=jpg 720w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=480&fm=jpg 480w,//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=240&fm=jpg 240w" sizes="(max-width: 755px) 100vw, 45vw" type="image/jpeg"></source>
|
||
<img class="d-block width-full height-full object-fit-cover readme-mask--thumbnail-2" width="1200" height="1400" alt="" src="//images.ctfassets.net/s5uo95nf6njh/2hd5lTqsiDrE5HxAHC3V3k/81646309d06d3988df6fb6489f8afbd9/4_even-smaller_Tim_Peacock.jpg?w=1200&fm=jpg" />
|
||
</picture>
|
||
|
||
<p class="position-lg-absolute z-2 bottom-0 right-0 p-responsive-readme tmp-pt-4 tmp-pl-lg-6 pr-xl-0 text-md-right text-mono f6-mktg tmp-mb-6 tmp-mb-lg-0 readme-artist-credit--guides" style="background-color:#ED8D43;">
|
||
Artwork: <a target="_blank" rel="noopener" href="https://timpeacock.com/">Tim Peacock</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="position-relative z-1 tmp-mt-6 tmp-mb-10 tmp-mb-md-0 readme-bio">
|
||
<div class="container-xl p-responsive">
|
||
<div class="readme-bio-text d-flex flex-items-center">
|
||
<div class="position-relative d-inline-flex flex-items-center flex-justify-center tmp-mr-7 tmp-mr-md-4 tmp-mt-n3 tmp-mb-n3">
|
||
<div class="overflow-hidden circle d-inline-flex flex-items-center flex-justify-center" style="width:120px; height:120px;">
|
||
<picture>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=240&fm=avif 240w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=192&fm=avif 192w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=144&fm=avif 144w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=120&fm=avif 120w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=96&fm=avif 96w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=48&fm=avif 48w" sizes="120px" type="image/avif"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=240&fm=webp 240w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=192&fm=webp 192w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=144&fm=webp 144w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=120&fm=webp 120w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=96&fm=webp 96w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=48&fm=webp 48w" sizes="120px" type="image/webp"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=240&fm=jpg 240w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=192&fm=jpg 192w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=144&fm=jpg 144w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=120&fm=jpg 120w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=96&fm=jpg 96w,//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=48&fm=jpg 48w" sizes="120px" type="image/jpeg"></source>
|
||
<img class="width-full height-auto d-block" width="240" height="240" alt="Photo of Will Larson" src="//images.ctfassets.net/s5uo95nf6njh/5c2PZzTZsNSzfLd5hHoRzG/76ccc0e749b15a617989579c6ebd5eea/will_larson-8_-_Will_Larson.jpeg?w=240&fm=jpg" />
|
||
</picture>
|
||
</div>
|
||
|
||
<div class="position-absolute readme-bg-white rounded box-shadow-card-border-mktg" style="transform: translateX(-50%) translateY(-50%); top:100%; left: 100%; width:60px; height:60px; padding: 0.75rem">
|
||
<picture>
|
||
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=72&fm=webp 72w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=57&fm=webp 57w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=43&fm=webp 43w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=36&fm=webp 36w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=28&fm=webp 28w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=14&fm=webp 14w" sizes="36px" type="image/webp"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=72&fm=png 72w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=57&fm=png 57w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=43&fm=png 43w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=36&fm=png 36w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=28&fm=png 28w,//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=14&fm=png 14w" sizes="36px" type="image/png"></source>
|
||
<img class="width-full height-auto d-block" width="72" height="72" alt="Calm logo" src="//images.ctfassets.net/s5uo95nf6njh/6cUN4UCSgmvrDpwZnqzWX2/c22eb582d3ad119aa4997076c091f3d0/Calm_logo.png?w=72&fm=png" />
|
||
</picture>
|
||
</div>
|
||
</div>
|
||
|
||
<p class="mb-0 py-2 tmp-py-md-5">
|
||
<strong class="d-block d-md-inline text-bold">Will Larson</strong><span class="text-mono text-uppercase f5-mktg readme-text-gray-dark" style="letter-spacing:0.05em;"><span class="d-none d-md-inline"> // </span>CTO, Calm</span>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="p-responsive-readme container-xl mx-auto tmp-mt-6 tmp-mt-md-10 tmp-pb-md-12">
|
||
<div class="js-build-in" data-build-margin-bottom="75" data-build-non-decorative="true">
|
||
|
||
<div class="color-bg-subtle position-fixed left-0 top-0 width-full z-2 readme-navbar-dropdown">
|
||
<div class="tmp-px-3 tmp-pl-md-8 tmp-pr-lg-6 tmp-py-4 tmp-py-lg-5 d-flex flex-justify-between flex-items-center">
|
||
<a href="/readme" tabindex="" class="d-flex flex-items-center f4-mktg link-blue-readme"><svg xmlns="http://www.w3.org/2000/svg" width="66" height="28" viewBox="0 0 66 49" fill="currentColor">
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 23C4 9.5 15 0 32 0v9c-8 0-15 3.5-15 14h13v26h-8v-4h-4v4h-3v-4h-4v-4H7v4h4v4H4V33h4v-4H4v-6zm10 12h4v4h-4v-4z"></path>
|
||
<path d="M4 29H0v4h4v-4z"></path>
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M36 23C36 9.5 47 0 64 0v9c-8 0-15 3.5-15 14h13v18h4v4h-4v4h-5v-4h4v-4h-4v4h-4v4H43v-4h4v-4h-4v-4h-4v4h4v4h-4v4h-3V23zm15 13v-4h-4v4h4z"></path>
|
||
</svg>The ReadME Project</a>
|
||
|
||
<button id="readme-nav-menu-dropdown" aria-label="Open ReadME Project Menu" data-aria-label-closed="Open ReadME Project Menu" data-aria-label-open="Close ReadME Project Menu" aria-expanded="false" type="button" data-view-component="true" class="no-underline readme-nav__button js-details-target btn-link"> <div class="d-flex flex-items-center">
|
||
<svg height="20" aria-hidden="true" data-component="Octicon" viewBox="0 0 16 16" version="1.1" width="20" data-view-component="true" class="octicon octicon-three-bars">
|
||
<path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75Zm0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75ZM1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5Z"></path>
|
||
</svg>
|
||
</div>
|
||
</button> <tool-tip id="tooltip-f33216a6-175a-49d7-992a-f02ef289f57b" for="readme-nav-menu-dropdown" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">Open ReadME Project Menu</tool-tip>
|
||
</div>
|
||
</div>
|
||
|
||
<nav class="position-fixed top-0 left-0 width-full height-full overflow-auto color-fg-on-emphasis readme-nav" aria-label="ReadME Project Navigation">
|
||
<div class="position-absolute top-0 right-0 bottom-0 left-0 readme-nav__overlay"></div>
|
||
<div class="position-relative width-full box-shadow-default-mktg readme-bg-black--pattern readme-nav__body">
|
||
<div class="tmp-ml-md-6 border-left readme-border-fade--white d-flex flex-column flex-justify-between" style="min-height:60vh">
|
||
<div class="d-flex flex-items-center flex-justify-between tmp-px-3 tmp-pl-md-8 tmp-pr-lg-6 tmp-py-4 tmp-ml-md-n6 border-bottom readme-border-fade--white">
|
||
<a href="/readme" aria-label="ReadME Project Homepage" class="d-block readme-logo-link--inverted js-details-initial-focus">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="132" height="50" viewBox="0 0 137 52" fill="currentColor" aria-hidden="true" class="d-block readme-logo">
|
||
<path d="M74 31.097h1.784v-4.52h5.779v4.52h1.8v-4.175c0-.773-.278-1.282-1.178-1.282h-.606v-.115c1.048-.378 1.752-1.413 1.752-2.86 0-2.153-1.13-3.55-3.504-3.55H74v11.982zm1.784-6.016v-4.405h3.65c1.212 0 1.998.543 1.998 1.693v1.003c0 1.019-.704 1.71-1.997 1.71h-3.65zM85.073 26.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.261.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.17a8.99 8.99 0 00.066-.937c0-2.449-1.555-3.928-3.895-3.928-2.489 0-4.077 1.644-4.077 4.47zm1.736-.822v-.197c0-1.25.95-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534zM94.392 28.615c0 1.594 1.032 2.646 2.75 2.646 1.392 0 2.505-.624 2.865-1.561h.115l.016.41c.049.625.328.987 1.228.987h1.555v-1.233h-1.211v-4.52c0-.937-.41-3.057-3.372-3.057-2.112 0-3.487 1.02-3.602 2.827h1.67c.049-.904.655-1.48 1.85-1.48 1.047 0 1.768.445 1.768 1.677v.625h-2.505c-1.915 0-3.127.97-3.127 2.679zm1.72-.362c0-.674.572-1.15 1.62-1.15h2.292v.41c0 1.43-.917 2.4-2.407 2.4-.9 0-1.506-.394-1.506-1.2v-.46zM107.489 31.261c1.358 0 2.471-.608 3.028-1.693h.114l.197 1.529h1.506V19h-1.703v5.079h-.114c-.508-1.036-1.555-1.677-3.028-1.677-2.21 0-3.536 1.595-3.536 4.438 0 2.794 1.309 4.421 3.536 4.421zm.54-1.397c-1.506 0-2.341-.887-2.341-2.219v-1.627c0-1.38.9-2.219 2.341-2.219 1.555 0 2.602 1.003 2.602 2.548v.97c0 1.528-1.031 2.547-2.602 2.547zM114.377 31.097h1.752v-6.098l-.148-3.484h.115l4.207 9.368 4.19-9.368h.099l-.131 3.468v6.114h1.735V19.115h-2.308l-3.552 8.152h-.099l-3.536-8.152h-2.324v11.982zM128.489 31.097h8.054v-1.595h-6.269v-3.83h5.483v-1.511h-5.483v-3.452h6.269v-1.594h-8.054v11.982zM74 49.097h1.784V44.84h3.503c2.488 0 3.814-1.447 3.814-3.863 0-2.366-1.244-3.862-3.814-3.862H74v11.982zm1.784-5.786V38.76h3.52c1.146 0 1.915.575 1.915 1.643v1.134c0 1.036-.72 1.775-2.063 1.775h-3.372zM86.37 40.452c-1.309 0-1.489.805-1.489 1.479v7.166h1.686v-7.232h2.783v-1.413h-2.98zM89.853 44.774c0 2.761 1.588 4.487 4.174 4.487 2.636 0 4.175-1.792 4.175-4.487 0-2.86-1.736-4.487-4.175-4.487-2.52 0-4.174 1.677-4.174 4.487zm1.719.707v-1.348c0-1.48.999-2.416 2.455-2.416 1.408 0 2.44.937 2.44 2.416v1.348c0 1.545-1.064 2.367-2.44 2.367-1.358 0-2.455-.806-2.455-2.367zM100.327 37v2.038h1.686V37h-1.686zm0 3.452v10.025h-1.85v1.364h2.03c1.489 0 1.489-1.084 1.489-1.495v-1.71l.017-8.184h-1.686zM103.889 44.758c0 2.744 1.522 4.503 4.092 4.503 2.03 0 3.569-1.118 3.912-2.794h-1.669c-.262.855-1.081 1.446-2.226 1.446-1.425 0-2.374-.92-2.374-2.284v-.477h6.171c.033-.28.066-.657.066-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.735-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.022v.279h-4.534zM121.389 46.089h-1.67c-.196 1.085-1.031 1.759-2.226 1.759-1.408 0-2.374-.888-2.374-2.334v-1.348c0-1.446.933-2.449 2.374-2.449 1.08 0 1.931.526 2.193 1.644h1.686c-.278-1.858-1.751-3.074-3.814-3.074-2.472 0-4.158 1.627-4.158 4.504 0 2.728 1.523 4.47 4.109 4.47 2.128 0 3.618-1.2 3.88-3.172zM125.422 41.865h1.784v-1.413h-1.784V37.64h-1.669v2.81h-1.556v1.414h1.556V47.7c0 .838.36 1.397 1.424 1.397h2.029v-1.38h-1.784v-5.852z"></path>
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 23C4 9.5 15 0 32 0v9c-8 0-15 3.5-15 14h13v26h-8v-4h-4v4h-3v-4h-4v-4H7v4h4v4H4V33h4v-4H4v-6zm10 12h4v4h-4v-4z"></path>
|
||
<path d="M4 29H0v4h4v-4z"></path>
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M36 23C36 9.5 47 0 64 0v9c-8 0-15 3.5-15 14h13v18h4v4h-4v4h-5v-4h4v-4h-4v4h-4v4H43v-4h4v-4h-4v-4h-4v4h4v4h-4v4h-3V23zm15 13v-4h-4v4h4z"></path>
|
||
<path d="M81.97 1.115H73V2.71h3.601v10.388h1.768V2.709h3.602V1.115zM83.388 13.097h1.686V8.51c0-1.676.933-2.794 2.373-2.794 1.212 0 1.9.723 1.9 2.252v5.128h1.702V7.804c0-2.136-1.065-3.517-2.98-3.517-1.276 0-2.34.641-2.88 1.742h-.115V1h-1.686v12.097zM92.113 8.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.262.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.171c.033-.28.065-.657.065-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.736-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534z"></path>
|
||
</svg>
|
||
</a>
|
||
|
||
<button aria-label="Close ReadME Project Navigation" aria-expanded="false" type="button" data-view-component="true" class="readme-logo-link--inverted no-underline readme-nav__button js-details-target btn-link"> <div class="d-flex flex-items-center">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="">
|
||
<rect x="6.85742" y="6.85693" width="3.42859" height="3.42859"></rect>
|
||
<rect x="10.2861" y="10.2856" width="3.42859" height="3.42859"></rect>
|
||
<rect x="13.7139" y="13.7144" width="3.42859" height="3.42859"></rect>
|
||
<rect x="13.7139" y="6.85693" width="3.42859" height="3.42859"></rect>
|
||
<rect x="6.85742" y="13.7144" width="3.42859" height="3.42859"></rect>
|
||
<rect x="3.42871" y="17.1431" width="3.42859" height="3.42859"></rect>
|
||
<rect x="17.1426" y="17.1431" width="3.42859" height="3.42859"></rect>
|
||
<rect x="20.5713" y="20.5713" width="3.42859" height="3.42859"></rect>
|
||
<rect y="20.5713" width="3.42859" height="3.42859"></rect>
|
||
<rect x="20.5713" width="3.42859" height="3.42859"></rect>
|
||
<rect width="3.42859" height="3.42859"></rect>
|
||
<rect x="3.42871" y="3.42871" width="3.42859" height="3.42859"></rect>
|
||
<rect x="17.1426" y="3.42871" width="3.42859" height="3.42859"></rect>
|
||
</svg>
|
||
</div>
|
||
</button> </div>
|
||
|
||
<div class="flex-1 d-lg-flex width-full">
|
||
<div class="col-lg-7 col-xl-8 tmp-pb-3 tmp-pb-lg-0 border-lg-right border-bottom border-lg-bottom-0 readme-border-fade--white">
|
||
<h2 id="storyType" class="readme-heading--condensed f3-mktg text-semibold text-uppercase tmp-px-3 tmp-px-lg-4 tmp-py-3 border-bottom readme-border-fade--white">
|
||
Browse by story type
|
||
</h2>
|
||
|
||
<ul aria-labelledby="storyType" class="d-inline-block list-style-none py-2 tmp-py-lg-3 readme-nav__list">
|
||
<li class="readme-heading-1 readme-heading--condensed text-uppercase tmp-px-3 tmp-px-lg-4 py-2 tmp-py-lg-3 readme-nav__list-item">
|
||
<a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/featured">
|
||
<span class="d-inline-block">Featured Articles</span>
|
||
</a> </li>
|
||
<li class="readme-heading-1 readme-heading--condensed text-uppercase tmp-px-3 tmp-px-lg-4 py-2 tmp-py-lg-3 readme-nav__list-item">
|
||
<a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/stories">
|
||
<span class="d-inline-block">Developer Stories</span>
|
||
</a> </li>
|
||
<li class="readme-heading-1 readme-heading--condensed text-uppercase tmp-px-3 tmp-px-lg-4 py-2 tmp-py-lg-3 readme-nav__list-item">
|
||
<a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/guides">
|
||
<span class="d-inline-block">Guides</span>
|
||
</a> </li>
|
||
<li class="readme-heading-1 readme-heading--condensed text-uppercase tmp-px-3 tmp-px-lg-4 py-2 tmp-py-lg-3 readme-nav__list-item">
|
||
<a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/podcast">
|
||
<span class="d-inline-block">The ReadMe Podcast</span>
|
||
</a> </li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="d-flex flex-column col-lg-5 col-xl-4">
|
||
<div class="d-flex flex-justify-between tmp-px-3 tmp-pr-lg-6 tmp-pl-lg-4 tmp-py-3 border-bottom readme-border-fade--white">
|
||
<h2 id="exploreTopics" class="readme-heading--condensed f3-mktg text-semibold text-uppercase">Explore Topics</h2>
|
||
|
||
<a aria-labelledby="exploreTopics" href="/readme/topics" class="arrow-target-mktg no-underline text-mono text-uppercase f5-mktg lh-condensed readme-logo-link--inverted" style="letter-spacing:0.05em">
|
||
See all topics <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><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="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="py-2 py-lg-0 list-style-none height-full d-flex flex-column flex-justify-around readme-nav__list">
|
||
<li class="flex-1 d-flex flex-items-center readme-heading-3 tmp-px-3 tmp-px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item">
|
||
<a class="d-block width-full tmp-py-3 tmp-py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/artificial-intelligence">
|
||
<span>AI</span>
|
||
</a> </li>
|
||
<li class="flex-1 d-flex flex-items-center readme-heading-3 tmp-px-3 tmp-px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item">
|
||
<a class="d-block width-full tmp-py-3 tmp-py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/application-security">
|
||
<span>Application Security</span>
|
||
</a> </li>
|
||
<li class="flex-1 d-flex flex-items-center readme-heading-3 tmp-px-3 tmp-px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item">
|
||
<a class="d-block width-full tmp-py-3 tmp-py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/career-development">
|
||
<span>Career Development</span>
|
||
</a> </li>
|
||
<li class="flex-1 d-flex flex-items-center readme-heading-3 tmp-px-3 tmp-px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item">
|
||
<a class="d-block width-full tmp-py-3 tmp-py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/devops-automation">
|
||
<span>DevOps & Automation</span>
|
||
</a> </li>
|
||
<li class="flex-1 d-flex flex-items-center readme-heading-3 tmp-px-3 tmp-px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item">
|
||
<a class="d-block width-full tmp-py-3 tmp-py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/maintainer">
|
||
<span>Maintainer</span>
|
||
</a> </li>
|
||
<li class="flex-1 d-flex flex-items-center readme-heading-3 tmp-px-3 tmp-px-lg-4 readme-nav__list-item">
|
||
<a class="d-block width-full tmp-py-3 tmp-py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/programming">
|
||
<span>Programming</span>
|
||
</a> </li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tmp-px-3 tmp-pl-md-8 tmp-pr-lg-4 tmp-py-4 tmp-ml-md-n6 border-top readme-border-fade--white">
|
||
<ul class="list-style-none text-mono text-uppercase f5-mktg readme-nav__list" style="letter-spacing:0.05em">
|
||
<li class="d-md-inline-block mb-2 mb-md-0 readme-nav__list-item">
|
||
<a class="color-fg-on-emphasis readme-nav__list-link" href="/readme/nominate">Nominate a developer</a><span class="d-none d-md-inline-block tmp-ml-4 tmp-mr-3" style="opacity:0.3">//</span>
|
||
</li>
|
||
|
||
<li class="d-md-inline-block readme-nav__list-item">
|
||
<a class="color-fg-on-emphasis readme-nav__list-link" href="/sponsors">Support the community</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
<div class="position-md-relative col-md-2 float-md-left readme-about ">
|
||
<div class="position-relative z-1 tmp-mb-md-6 tmp-mb-md-6 tmp-pt-4 border-top f5-mktg text-mono readme-text-gray-dark" style="border-color:#4969ED !important;">
|
||
<p><strong class="readme-text-black">The ReadME Project</strong> amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="position-md-sticky col-md-2 top-md-12 tmp-mt-4 tmp-mb-8 tmp-my-md-0 float-md-left readme-sharing" style="clear:left;">
|
||
<ul class="list-style-none d-flex flex-md-column">
|
||
|
||
|
||
<li class="tmp-mr-4 tmp-mr-md-0 tmp-mb-md-4">
|
||
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Freadme%2Fguides%2Fincident-response&text=Remember%20when%20optimism%20and%20crossed%20fingers%20were%20our%20first%20line%20of%20incident%20response%3F%20%40lethain%20outlines%20a%20better%20way%3A" target="_blank" rel="noopener" aria-label="Share on Twitter" data-ga-click="ReadME Stories, click, ref_page:/readme/guides/incident-response;ref_cta:share on Twitter;ref_loc:Profile sidebar" class="d-flex flex-justify-center flex-items-center border color-border-subtle circle readme-social-link" style="width:50px;height:50px">
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="16" height="20" aria-hidden="true" class="d-block link-blue-readme"><path fill="currentColor" d="M9.332 6.925 14.544 1h-1.235L8.783 6.145 5.17 1H1l5.466 7.78L1 14.993h1.235l4.78-5.433 3.816 5.433H15L9.332 6.925ZM7.64 8.848l-.554-.775L2.68 1.91h1.897l3.556 4.975.554.775 4.622 6.466h-1.897L7.64 8.848Z"></path></svg>
|
||
</a>
|
||
</li>
|
||
|
||
<li class="tmp-mr-4 tmp-mr-md-0 tmp-mb-md-4">
|
||
<a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fgithub.com%2Freadme%2Fguides%2Fincident-response&quote=Remember%20when%20optimism%20and%20crossed%20fingers%20were%20our%20first%20line%20of%20incident%20response%3F%20%40lethain%20outlines%20a%20better%20way%3A" target="_blank" rel="noopener" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;" aria-label="Share on Facebook" data-ga-click="ReadME Stories, click, ref_page:/readme/guides/incident-response;ref_cta:share on Facebook;ref_loc:Profile sidebar" class="d-flex flex-justify-center flex-items-center border color-border-subtle circle readme-social-link" style="width:50px;height:50px">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.3 15.4" aria-hidden="true" class="d-block link-blue-readme" height="20"><path d="M14.5 0H.8a.88.88 0 0 0-.8.9v13.6a.88.88 0 0 0 .8.9h7.3v-6h-2V7.1h2V5.4a2.87 2.87 0 0 1 2.5-3.1h.5a10.87 10.87 0 0 1 1.8.1v2.1h-1.3c-1 0-1.1.5-1.1 1.1v1.5h2.3l-.3 2.3h-2v5.9h3.9a.88.88 0 0 0 .9-.8V.8a.86.86 0 0 0-.8-.8z" fill="currentColor"></path></svg>
|
||
</a>
|
||
</li>
|
||
|
||
<li class="tmp-mr-4 tmp-mr-md-0 tmp-mb-md-4">
|
||
<a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgithub.com%2Freadme%2Fguides%2Fincident-response" target="_blank" rel="noopener" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;" aria-label="Share on LinkedIn" data-ga-click="ReadME Stories, click, ref_page:/readme/guides/incident-response;ref_cta:share on LinkedIn;ref_loc:Profile sidebar" class="d-flex flex-justify-center flex-items-center border color-border-subtle circle readme-social-link" style="width:50px;height:50px">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" aria-hidden="true" class="d-block link-blue-readme" height="20"><path d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z" fill="currentColor"></path></svg>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
<div class="f3-mktg readme-story-body readme-story-body--guide" data-hpc>
|
||
|
||
|
||
|
||
<p>At one of my early software engineering jobs, there was no on-call rotation for production incidents. We relied upon crossed fingers and optimism as our first line of defense. In the predictable moments when that strategy failed us, someone on the customer success team would text our head of engineering, who would activate our single escalation mechanism: notifying every engineer at the company in a group text.</p>
|
||
<p>Operating in the serene communication desert that existed before Slack but after private IRC channels, folks would mill around trying to find a shared video chat to debug the incident, at which point whoever happened to join would begin incident response. Among the many challenges of responding to production incidents this way, I fondly remember one engineer replying to the group text with a concise “UNSUBSCRIBE.”</p>
|
||
<picture>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=2400&fm=avif 2400w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1920&fm=avif 1920w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1440&fm=avif 1440w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=960&fm=avif 960w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=480&fm=avif 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/avif">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=2400&fm=webp 2400w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1920&fm=webp 1920w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1440&fm=webp 1440w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=480&fm=webp 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/webp">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=2400&fm=jpg 2400w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1920&fm=jpg 1920w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1440&fm=jpg 1440w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=480&fm=jpg 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/jpeg">
|
||
<img class="img-block" width="2400" height="662" loading="lazy" decoding="async" alt="A flow chart of where engineers might find themselves during an incident response" src="//images.ctfassets.net/s5uo95nf6njh/5eNpU3qXVrZcnNQcO38Z4o/154b7b98431c324007600109a3324972/Github_RMP_InlineGraphic_1_30-11-22.jpg?w=2400&fm=jpg">
|
||
</picture>
|
||
<p>Although I never had the courage to send my own “UNSUBSCRIBE,” I was anxious to move beyond that chaotic approach to incidents. Fortunately, subsequent employers took very different approaches to fostering reliability, and the industry at large has come a long way. </p>
|
||
<hr>
|
||
<p>In this guide you will learn:</p>
|
||
<ol><li><p>About the current standard for incident response and analysis</p></li><li><p>Where some teams get themselves in trouble with the current standard</p></li><li><p>How to find your own path through the innovation and dogma of leading a company’s approach to reliability</p></li></ol>
|
||
<hr>
|
||
<h2>The industry standard: incident response</h2>
|
||
<picture>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=2400&fm=avif 2400w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1920&fm=avif 1920w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1440&fm=avif 1440w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=960&fm=avif 960w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=480&fm=avif 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/avif">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=2400&fm=webp 2400w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1920&fm=webp 1920w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1440&fm=webp 1440w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=480&fm=webp 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/webp">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=2400&fm=jpg 2400w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1920&fm=jpg 1920w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1440&fm=jpg 1440w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=480&fm=jpg 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/jpeg">
|
||
<img class="img-block" width="2400" height="838" loading="lazy" decoding="async" alt="A flow chart of the industry standard for an incident response, starting with an alert or human who pages the on-call, mitigates incident, writes report, and reviews report" src="//images.ctfassets.net/s5uo95nf6njh/7bvyoAfiFkYc60xdiFvZWR/c0722c44afbc791eac3de099af33fc89/Github_RMP_InlineGraphic_2_30-11-22.jpg?w=2400&fm=jpg">
|
||
</picture>
|
||
<p>
|
||
While the details vary, incident response at most companies today follows a similar process:</p>
|
||
<ol><li><p>An <b>alert</b> is triggered, ideally by monitoring software, but in practice sometimes by a human.</p></li><li><p>The responsible person in the <b>on-call rotation</b> is paged, and begins responding to the incoming alert.</p></li><li><p>If the on-call responder decides this is an incident, they begin <b>incident response</b>. If not, they resolve the alert or chat with the human who raised the issue.</p></li><li><p>Following their incident response process, they’ll begin<b> incident mitigation</b>. This generally starts with creating a chat channel for the incident, pulling in others who have context, and working until the issue is no longer substantially impacting users. Larger companies often split these activities into multiple roles, with the on-call responders leading mitigation and an incident commander handling coordination and communication.</p></li><li><p>The on-call responder<b> writes the incident report</b> that describes the incident’s timeline, contributing factors, and recommended next steps.</p></li><li><p>A broader group will <b>review the incident report</b>, adding their perspective and experience to the report.</p></li></ol>
|
||
<p>Much of the magic in this setup lies in selecting the right tools to support the process, architecting your system to fail in predictable ways, and resisting the never-ending urge to complicate the process. Most companies never evolve their incident response beyond this stage, and while it’s a very useful starting point, it does tend to have one major flaw: The incidents keep happening.</p>
|
||
<h2>Moving one step forward: incident analysis</h2>
|
||
<picture>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=2400&fm=avif 2400w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1920&fm=avif 1920w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1440&fm=avif 1440w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=960&fm=avif 960w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=480&fm=avif 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/avif">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=2400&fm=webp 2400w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1920&fm=webp 1920w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1440&fm=webp 1440w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=480&fm=webp 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/webp">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=2400&fm=jpg 2400w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1920&fm=jpg 1920w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1440&fm=jpg 1440w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=480&fm=jpg 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/jpeg">
|
||
<img class="img-block" width="2400" height="1030" loading="lazy" decoding="async" alt="A flow chart that shows the incident response starting from "writing incident report," and breaks it out into "review incident report" and "review batched report", and then remediate incident" src="//images.ctfassets.net/s5uo95nf6njh/39vKSJChH0cVww2WbKvPjb/cf3b7d43f00c9a775c07942fc031b27c/GitHub_RMP_InlineGraphic_3_30_11_22.jpg?w=2400&fm=jpg">
|
||
</picture>
|
||
<p>As incidents continue to occur, teams generally respond by starting to track more metrics, such as “Mean Time To Detect” (MTTD)—the gap in time between the issue beginning and an alert getting triggered—and “Mean Time To Mitigation” (MTTM)—the time between that first alert and when you’ve contained the user impact.</p>
|
||
<p>Measures like MTTD and MTTM efficiently evaluate your incident response effectiveness. These measures struggle, however, at telling you where to go next. Let’s say your 90th percentile MTTM was 30 minutes last quarter, up from 20 minutes the quarter before. That <i>does</i> seem like a problem, but what should you do to address it?</p>
|
||
<p>The answer is extending your incident response program to also include incident analysis. Get started with three steps:</p>
|
||
<ol><li><p>Continue responding to incidents like you were before, including mitigating incidents’ impact as they occur.</p></li><li><p>Record metadata about incidents in a centralized store (this can be a queryable wiki, a spreadsheet, or something more sophisticated), with a focus on incident impact and contributing causes.</p></li><li><p>Introduce a new kind of incident review meeting that, instead of reviewing individual incidents, focuses on reviewing batches of related incidents, where batches share contributing causes, such as “all incidents caused when a new host becomes the primary Redis node.” This meeting should propose remediations that would prevent the entire category of incidents from reoccurring. In the previous example, that might be standardizing on a Redis client that recovers gracefully when a new Redis primary is selected.</p></li></ol>
|
||
<p>Coming from an ad-hoc process, this does take more time, and you’ll hear grumbles about it from those generating the incident metadata. You’ll also hear grumbles about it from those who have to follow up with the ones who <i>should</i> be generating that metadata but aren’t. However, the grumbles will be easy to ignore when you bring the right group of engineers into a room to discuss a batch of incidents and walk out a few hours later with a precise, actionable set of remediations. You will identify significantly more valuable remediations when looking at clusters of related incidents than looking at incidents in isolation.</p>
|
||
<p>Then you’ll do it a second time, and it will work well. A third time, and it will generate somewhat fewer new ideas, but still some. Over time, you’ll run into an interesting problem in your incident analysis program: You’re investing more time than ever, but the ideas you’re generating aren’t getting prioritized. How do you ensure your work is culminating in more reliable software?</p>
|
||
<h2>Beware the trappings of incident legalism</h2>
|
||
<picture>
|
||
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=2400&fm=webp 2400w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=1920&fm=webp 1920w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=1440&fm=webp 1440w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=480&fm=webp 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/webp">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=2400&fm=png 2400w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=1920&fm=png 1920w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=1440&fm=png 1440w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=1200&fm=png 1200w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=960&fm=png 960w,//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=480&fm=png 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/png">
|
||
<img class="img-block" width="2400" height="703" loading="lazy" decoding="async" alt="A flow chart that zooms in on the trappings of incident legalism, which spends most of its time in the writing/reviewing portion of the process" src="//images.ctfassets.net/s5uo95nf6njh/2LaYk8apV5yacWZkcTcltG/b8ee53a03af88cc5a7528698f72b9b06/Github_RMP_InlineGraphic_4_30-11-22_resized.png?w=2400&fm=png">
|
||
</picture>
|
||
<p>I’ve often seen teams leading reliability efforts respond to the question of why their incident analysis efforts aren’t creating more reliable software by doubling down on metadata collection and heavily structured processes. I think of this as <i>incident legalism</i>. Incident legalism is when an incident response and analysis program—trying to better drive reliability improvements—becomes focused on compliance and loses empathy for the engineers and teams operating within the program’s processes.</p>
|
||
<p>If you want a self-diagnosis kit for incident legalism, ask yourself these questions:</p>
|
||
<ol><li><p>Do incident reviews anchor around the same questions every time? Bonus points if that question is about adding another alert!</p></li><li><p>Do you spend a lot of time debating whether an incident should be a “Severity 1” or a “Severity 2” incident? Bonus points if you continue to expand the definitions of each severity type, even though folks are already struggling to remember the definitions!</p></li><li><p>Does discussion around incidents spend a significant amount of time on whether metadata has been collected? Bonus points if the metadata doesn’t contribute to the discussion at hand!</p></li><li><p>Do today’s proposed remediations sound a lot like the remediations that you’ve heard in the last couple incident reviews? Bonus points if no one in the discussion is responsible for prioritizing those remediations!</p></li></ol>
|
||
<p>If a couple of these hit a little too close to home, then you’re probably in the throes of incident legalism. None of these points are particularly bad when they happen once or twice, but when they become routine, it’s clear that something has spoiled within your reliability efforts. Reliability programs rarely fail because someone isn’t working hard enough, and incident legalism is all about working harder—collecting more tagging about incidents, setting stricter timelines on getting incident metadata filed, scheduling more incident review sessions, and so on—and the result is just more work, not more success.</p>
|
||
<p>Escape this trap by building a holistic mental model for driving reliability.</p>
|
||
<h2>An expanded model for reliability</h2>
|
||
<p>Earlier, I mentioned that the standard metrics for understanding incidents, like MTTD and MTTR, are very effective at evaluating whether your response is going well, but that they’re not very effective at determining how to improve your reliability. On the other hand, I’ve found systems modeling a very helpful tool for designing and debugging reliability programs.</p>
|
||
<picture>
|
||
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=2400&fm=webp 2400w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=1920&fm=webp 1920w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=1440&fm=webp 1440w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=480&fm=webp 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/webp">
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=2400&fm=png 2400w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=1920&fm=png 1920w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=1440&fm=png 1440w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=1200&fm=png 1200w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=960&fm=png 960w,//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=480&fm=png 480w" sizes="(max-width: 930px) 90vw, 840px" type="image/png">
|
||
<img class="img-block" width="2400" height="643" loading="lazy" decoding="async" alt="Flow chart starts on left with Changes, then defect rate, latent incidents, discovery rate, incidents, mitigation rate, mitigated incidents, remediation rate, remediated incidents. Remediation rate and Mitigation rate have arrows that point back to Changes" src="//images.ctfassets.net/s5uo95nf6njh/5RLjtemnoFeMaazfXxeHxp/db5bbff99811bec706030d8495287091/Github_RMP_InlineGraphic_5_30-11-22.png?w=2400&fm=png">
|
||
</picture>
|
||
<p>
|
||
For example, a common model to begin with is:</p>
|
||
<ul><li><p>As <i>changes</i> occur within your system (new code, etc.), some fraction of changes include behaviors that could cause incidents in the future, e.g. <i>latent incidents</i>. Latent incidents aren’t necessarily bugs. For example, using offsets rather than a pagination cursor within search results will work just fine when you potentially have thousands of results, but would become very slow if the dataset becomes larger and you allow a variety of sorting options.</p></li><li><p>As your system runs into different scenarios over time, there is a discovery rate of those latent incidents turning into <i>incidents</i>. Discovery is rarely a deliberately studied event, but rather the culmination of unnoticed growth. In the earlier example about supporting offsets to paginate through search results, an increase in potential results and a new feature that encourages more users to navigate deeper into the results might be such an event.</p></li><li><p>As incidents occur, you mitigate them at some rate, transforming them from incidents into <i>mitigated incidents</i>. Each of these becomes a change to your system, which might become a latent incident.</p></li><li><p>Finally, you study the mitigated incidents, determining how to prevent them from recurring, and they become <i>remediated incidents</i>. Once again, each of these remediations is a change that might come back to you later as an incident!</p></li></ul>
|
||
<p>This is a simple model, but by measuring the number of items in each of these buckets over time, you can get a clear understanding of how things are, or are not, working. In the case of incident legalism, you’ll generally observe that the number of incidents and mitigated incidents remains high, but there are very few remediated incidents. For some reason the remediation rate is simply insufficient, and you need to spend time focused there! (This is often a sign that you’re missing an executive sponsor for reliability who can get remediations prioritized.)</p>
|
||
<p>Another common scenario is that your defect rate is simply too high, with too many changes becoming latent incidents. If you notice this, you can invest into developer productivity or infrastructure tools like better tests, static analysis, and gradual rollouts to reduce your defect rate.</p>
|
||
<p>You can even use this model to reason about which solutions make sense to solve your current problem! A common response to a high defect rate is to reduce deployment frequency to daily or weekly deployments. Most companies discover that this increases their discovery rate without increasing their mitigation or remediation rates, but once they can concretely describe the problem at hand, they can rule out solutions that appear to work yet don’t address their specific problem.</p>
|
||
<h2>Summary</h2>
|
||
<p>While I hope that you add modeling to your toolkit for running a reliability engineering organization, you can get most of the value by taking away three simple rules:
|
||
</p>
|
||
<ol><li><p>You should invest some reliability energy into response, analysis, and remediation.</p></li><li><p>If you’re investing much energy, a significant majority should be going towards remediation.</p></li><li><p>Any problem can be solved by investing more heavily into it, but there’s always a more efficient solution. If you’re convinced that you must surge investment, check if your mental model is leading you astray.</p></li></ol>
|
||
<p>
|
||
There are certainly more tools and rules you can use to shape your approach to reliability, but I’ve found those to be a remarkably effective starting point.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-8 offset-md-3 tmp-mt-5 tmp-mt-md-6 tmp-mb-9 tmp-mb-md-n6 readme-signoff">
|
||
<svg height="36" aria-hidden="true" data-component="Octicon" viewBox="0 0 24 24" version="1.1" width="36" 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>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="container-xl p-responsive-readme f3-mktg mx-auto">
|
||
<div class="col-md-8 offset-md-3">
|
||
<div class="border-top color-border-accent-emphasis text-mono color-fg-muted f4-mktg tmp-mt-5 tmp-mt-md-6 tmp-pt-5 tmp-pt-md-6 readme-postscript">
|
||
<p>Will Larson has been a software engineering leader at Calm, Stripe, Uber, and Digg. He is the author of <i>An Elegant Puzzle</i> and <i>Staff Engineer.</i> Before moving to San Francisco, he grew up in North Carolina, and studied Computer Science at Centre College in Kentucky.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="readme-bg-white tmp-py-5 tmp-py-md-6 overflow-hidden">
|
||
<div class="container-xl p-responsive">
|
||
<h2 class="h5-mktg border-bottom tmp-pb-4 tmp-mb-6">
|
||
More stories
|
||
</h2>
|
||
|
||
<div class="d-md-flex gutter-sm gutter-md-spacious">
|
||
<div class="d-flex flex-column col-md-4">
|
||
<a class="d-block readme-link" data-analytics-event="{"category":"ReadME Stories","action":"click","label":"ref_page:/readme/guides/incident-response;ref_cta:A beginner’s guide to running and managing custom CodeQL queries;ref_loc:More stories"}" href="/readme/guides/custom-codeql-queries">
|
||
<figure class="tmp-mb-5 readme-link__figure js-readme-rotate">
|
||
<picture>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=960&fm=avif 960w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=720&fm=avif 720w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=480&fm=avif 480w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=240&fm=avif 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/avif"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=720&fm=jpg 720w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=480&fm=jpg 480w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=240&fm=jpg 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/jpeg"></source>
|
||
<img class="d-block height-auto width-full readme-link__img" width="1200" height="1400" loading="lazy" decoding="async" alt="Photo of Denys Lashchevskyi" src="//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=1200&fm=jpg" />
|
||
</picture>
|
||
</figure>
|
||
|
||
<h3 class="readme-heading-3 tmp-mb-5">
|
||
<span class="no-underline readme-underline--green">
|
||
<span>A beginner’s guide to running and managing custom CodeQL queries</span>
|
||
</span>
|
||
</h3>
|
||
</a>
|
||
<div class="text-mono text-uppercase color-fg-muted f5-mktg" style="letter-spacing:0.05em">
|
||
Denys Lashchevskyi // Betsson
|
||
</div>
|
||
</div>
|
||
<div class="d-flex flex-column col-md-4">
|
||
<a class="d-block readme-link" data-analytics-event="{"category":"ReadME Stories","action":"click","label":"ref_page:/readme/guides/incident-response;ref_cta:Treat accessibility issues as bugs, not feature requests;ref_loc:More stories"}" href="/readme/guides/fix-accessibility-bugs">
|
||
<figure class="tmp-mb-5 readme-link__figure js-readme-rotate">
|
||
<picture>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=960&fm=avif 960w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=720&fm=avif 720w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=480&fm=avif 480w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=240&fm=avif 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/avif"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=720&fm=jpg 720w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=480&fm=jpg 480w,//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=240&fm=jpg 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/jpeg"></source>
|
||
<img class="d-block height-auto width-full readme-link__img" width="1200" height="1400" loading="lazy" decoding="async" alt="Photo of Mike Gifford" src="//images.ctfassets.net/s5uo95nf6njh/5HzsKifyAZbKrkoXbjLmm/b7a4f263d07cf8c7d924905e8dbac7a5/Testing_III__1_.jpg?w=1200&fm=jpg" />
|
||
</picture>
|
||
</figure>
|
||
|
||
<h3 class="readme-heading-3 tmp-mb-5">
|
||
<span class="no-underline readme-underline--green">
|
||
<span>Treat accessibility issues as bugs, not feature requests</span>
|
||
</span>
|
||
</h3>
|
||
</a>
|
||
<div class="text-mono text-uppercase color-fg-muted f5-mktg" style="letter-spacing:0.05em">
|
||
Mike Gifford // CivicActions
|
||
</div>
|
||
</div>
|
||
<div class="d-flex flex-column col-md-4">
|
||
<a class="d-block readme-link" data-analytics-event="{"category":"ReadME Stories","action":"click","label":"ref_page:/readme/guides/incident-response;ref_cta:Provisioning self-hosted GitHub Actions runners on demand;ref_loc:More stories"}" href="/readme/guides/github-runners-philips">
|
||
<figure class="tmp-mb-5 readme-link__figure js-readme-rotate">
|
||
<picture>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=960&fm=avif 960w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=720&fm=avif 720w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=480&fm=avif 480w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=240&fm=avif 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/avif"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source>
|
||
<source srcset="//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=720&fm=jpg 720w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=480&fm=jpg 480w,//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=240&fm=jpg 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/jpeg"></source>
|
||
<img class="d-block height-auto width-full readme-link__img" width="1200" height="1400" loading="lazy" decoding="async" alt="Photo of Niek Palm" src="//images.ctfassets.net/s5uo95nf6njh/2Atjnf6QDmaIYPjCFsVQ4U/3cb07865db50d444f9fb2a324b1a98d6/Colorway_2__1_.jpg?w=1200&fm=jpg" />
|
||
</picture>
|
||
</figure>
|
||
|
||
<h3 class="readme-heading-3 tmp-mb-5">
|
||
<span class="no-underline readme-underline--green">
|
||
<span>Provisioning self-hosted GitHub Actions runners on demand</span>
|
||
</span>
|
||
</h3>
|
||
</a>
|
||
<div class="text-mono text-uppercase color-fg-muted f5-mktg" style="letter-spacing:0.05em">
|
||
Niek Palm // Philips
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="tmp-py-4 tmp-py-lg-6 readme-bg-white overflow-hidden">
|
||
<div class="container-readme p-responsive-readme">
|
||
<div class="d-lg-flex">
|
||
<div class="position-relative d-flex flex-items-center col-md-11 col-lg-10 readme-bg-black--pattern">
|
||
<div class="position-relative col-lg-7 tmp-px-3 tmp-py-6 tmp-p-md-6 tmp-pb-md-8 tmp-pt-lg-8 tmp-pl-xl-8">
|
||
<h2 class="readme-heading-1 readme-heading--condensed tmp-mb-6 color-text-white">About The <br class="d-none d-sm-inline">ReadME Project</h2>
|
||
<p class="f3-mktg tmp-mb-6 color-text-white">Coding is usually seen as a solitary activity, but it’s actually the world’s largest community effort led by open source maintainers, contributors, and teams. These unsung heroes put in long hours to build software, fix issues, field questions, and manage communities.</p>
|
||
<p class="f3-mktg tmp-mb-6 color-text-white">The ReadME Project is part of GitHub’s ongoing effort to amplify the voices of the developer community. It’s an evolving space to engage with the community and explore the stories, challenges, technology, and culture that surround the world of open source.</p>
|
||
|
||
<div class="d-flex flex-wrap">
|
||
<h3 class="readme-heading--condensed f3-mktg text-semibold text-uppercase color-text-white tmp-mr-4">Follow us:</h3>
|
||
|
||
<ul class="list-style-none d-flex flex-items-center">
|
||
|
||
<li class="tmp-mr-4">
|
||
<a href="https://twitter.com/github" target="_blank" rel="noopener" aria-label="Follow on Twitter" class="d-flex flex-justify-center flex-items-center">
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="16" height="20" aria-hidden="true" class="d-block readme-icon-link--inverted"><path fill="currentColor" d="M9.332 6.925 14.544 1h-1.235L8.783 6.145 5.17 1H1l5.466 7.78L1 14.993h1.235l4.78-5.433 3.816 5.433H15L9.332 6.925ZM7.64 8.848l-.554-.775L2.68 1.91h1.897l3.556 4.975.554.775 4.622 6.466h-1.897L7.64 8.848Z"></path></svg>
|
||
</a>
|
||
</li>
|
||
<li class="tmp-mr-4">
|
||
<a href="https://www.facebook.com/GitHub" target="_blank" rel="noopener" aria-label="Follow on Facebook" class="d-flex flex-justify-center flex-items-center">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.3 15.4" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20"><path d="M14.5 0H.8a.88.88 0 0 0-.8.9v13.6a.88.88 0 0 0 .8.9h7.3v-6h-2V7.1h2V5.4a2.87 2.87 0 0 1 2.5-3.1h.5a10.87 10.87 0 0 1 1.8.1v2.1h-1.3c-1 0-1.1.5-1.1 1.1v1.5h2.3l-.3 2.3h-2v5.9h3.9a.88.88 0 0 0 .9-.8V.8a.86.86 0 0 0-.8-.8z" fill="currentColor"></path></svg>
|
||
</a>
|
||
</li>
|
||
<li class="tmp-mr-4">
|
||
<a href="https://www.instagram.com/github" target="_blank" rel="noopener" aria-label="Follow on Instagram" class="d-flex flex-justify-center flex-items-center">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 24" fill="currentColor" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20">
|
||
<path d="M7.65241 0.0884315C6.65471 0.108122 5.66763 0.297424 4.73344 0.648234C3.93562 0.953396 3.21108 1.4233 2.60708 2.0273C2.00308 2.63131 1.53317 3.35584 1.22801 4.15366C0.878679 5.08365 0.689401 6.0661 0.668206 7.05931C0.614891 8.33886 0.601562 8.75204 0.601562 12.0042C0.601562 15.2697 0.614891 15.6696 0.668206 16.9492C0.734849 18.2287 0.934778 19.0951 1.22801 19.8681C1.53014 20.6698 2.00052 21.3975 2.60748 22.0022C3.21445 22.6069 3.94391 23.0745 4.74677 23.3736C5.67676 23.7229 6.6592 23.9122 7.65241 23.9334C8.93196 23.9867 9.33182 24 12.584 24C15.8495 24 16.2627 23.9867 17.5423 23.9334C18.5355 23.9122 19.5179 23.7229 20.4479 23.3736C21.2476 23.067 21.914 22.6538 22.5805 21.9874C23.2469 21.3209 23.6468 20.6545 23.9533 19.8548C24.3027 18.9248 24.4919 17.9424 24.5131 16.9492C24.5664 15.6696 24.5798 15.2697 24.5798 12.0176C24.5798 8.75204 24.5798 8.33886 24.5131 7.05931C24.4919 6.0661 24.3027 5.08365 23.9533 4.15366C23.6468 3.35395 23.2336 2.68752 22.5671 2.02108C21.9007 1.35465 21.2343 0.954793 20.4479 0.648234C19.5179 0.298905 18.5355 0.109627 17.5423 0.0884315C16.2627 0.035117 15.8495 0.0217883 12.5973 0.0217883C10.9488 -0.0220065 9.29917 0.000225717 7.65241 0.0884315ZM17.4356 2.24767C18.6085 2.30098 19.2483 2.50091 19.6615 2.64753C20.1788 2.85208 20.6483 3.1613 21.0405 3.55579C21.4327 3.95029 21.7392 4.42156 21.9407 4.94005C22.2044 5.65302 22.3441 6.40584 22.3539 7.16594C22.4072 8.43216 22.4205 8.80536 22.4205 12.0042C22.4205 15.2031 22.4205 15.5896 22.3539 16.8559C22.3489 17.6152 22.2137 18.3681 21.954 19.0817C21.7539 19.5991 21.4448 20.0673 21.0477 20.4546C20.6212 20.8811 20.2213 21.1343 19.6615 21.3609C19.2483 21.5209 18.6085 21.7208 17.4356 21.7608C16.1694 21.8274 15.7962 21.8408 12.5973 21.8408C9.39846 21.8408 9.01193 21.8274 7.74571 21.7741C6.98556 21.7649 6.23265 21.6251 5.51983 21.3609C5.00029 21.1651 4.5312 20.8554 4.14698 20.4546C3.74616 20.0704 3.43647 19.6013 3.24063 19.0817C3.08069 18.6552 2.88076 18.0154 2.84077 16.8559C2.77413 15.5896 2.7608 15.2164 2.7608 12.0042C2.7608 8.80536 2.77413 8.43216 2.82744 7.16594C2.83722 6.40584 2.97696 5.65302 3.24063 4.94005C3.46722 4.38025 3.72046 3.98039 4.14698 3.55388C4.56017 3.14069 4.96003 2.88744 5.51983 2.66086C5.94634 2.50091 6.58612 2.30098 7.74571 2.24767C9.01193 2.19436 9.38513 2.18103 12.5973 2.18103C15.7962 2.18103 16.1694 2.18103 17.4356 2.24767Z"></path>
|
||
<path d="M12.5959 16.003C11.5354 16.003 10.5183 15.5817 9.76844 14.8318C9.01856 14.0819 8.59728 13.0649 8.59728 12.0044C8.59728 10.9439 9.01856 9.92684 9.76844 9.17696C10.5183 8.42708 11.5354 8.0058 12.5959 8.0058C13.6564 8.0058 14.6734 8.42708 15.4233 9.17696C16.1732 9.92684 16.5945 10.9439 16.5945 12.0044C16.5945 13.0649 16.1732 14.0819 15.4233 14.8318C14.6734 15.5817 13.6564 16.003 12.5959 16.003ZM12.5959 5.84656C11.7872 5.84656 10.9865 6.00584 10.2394 6.3153C9.49227 6.62476 8.81344 7.07834 8.24163 7.65014C7.66982 8.22195 7.21624 8.90079 6.90678 9.64789C6.59732 10.395 6.43805 11.1957 6.43805 12.0044C6.43805 12.813 6.59732 13.6138 6.90678 14.3609C7.21624 15.108 7.66982 15.7868 8.24163 16.3586C8.81344 16.9304 9.49227 17.384 10.2394 17.6935C10.9865 18.0029 11.7872 18.1622 12.5959 18.1622C14.229 18.1622 15.7953 17.5134 16.9501 16.3586C18.1049 15.2038 18.7537 13.6375 18.7537 12.0044C18.7537 10.3712 18.1049 8.80496 16.9501 7.65014C15.7953 6.49533 14.229 5.84656 12.5959 5.84656ZM20.4331 5.60664C20.4331 5.98842 20.2814 6.35456 20.0115 6.62452C19.7415 6.89447 19.3754 7.04614 18.9936 7.04614C18.6118 7.04614 18.2457 6.89447 17.9757 6.62452C17.7058 6.35456 17.5541 5.98842 17.5541 5.60664C17.5541 5.22487 17.7058 4.85873 17.9757 4.58877C18.2457 4.31881 18.6118 4.16715 18.9936 4.16715C19.3754 4.16715 19.7415 4.31881 20.0115 4.58877C20.2814 4.85873 20.4331 5.22487 20.4331 5.60664Z"></path>
|
||
<path d="M9.85322 14.747C10.5806 15.4744 11.5672 15.8831 12.5959 15.8831C13.6246 15.8831 14.6111 15.4744 15.3385 14.747C16.0659 14.0196 16.4746 13.0331 16.4746 12.0044C16.4746 10.9757 16.0659 9.98913 15.3385 9.26173C14.6111 8.53434 13.6246 8.12569 12.5959 8.12569C11.5672 8.12569 10.5806 8.53434 9.85322 9.26173C9.12582 9.98913 8.71718 10.9757 8.71718 12.0044C8.71718 13.0331 9.12582 14.0196 9.85322 14.747ZM10.1935 6.20453C10.9551 5.88905 11.7715 5.72667 12.5959 5.72667C14.2608 5.72667 15.8576 6.38807 17.0349 7.56537C18.2122 8.74267 18.8736 10.3394 18.8736 12.0044C18.8736 13.6693 18.2122 15.2661 17.0349 16.4434C15.8576 17.6207 14.2608 18.2821 12.5959 18.2821C11.7715 18.2821 10.9551 18.1197 10.1935 17.8042C9.43185 17.4888 8.7398 17.0263 8.15686 16.4434C7.57392 15.8605 7.1115 15.1684 6.79602 14.4068C6.48053 13.6451 6.31815 12.8288 6.31815 12.0044C6.31815 11.18 6.48053 10.3637 6.79602 9.60201C7.1115 8.84036 7.57392 8.14831 8.15686 7.56537C8.7398 6.98243 9.43185 6.52002 10.1935 6.20453ZM20.553 5.60664C20.553 6.02022 20.3887 6.41685 20.0963 6.70929C19.8038 7.00173 19.4072 7.16603 18.9936 7.16603C18.58 7.16603 18.1834 7.00173 17.891 6.70929C17.5985 6.41685 17.4342 6.02022 17.4342 5.60664C17.4342 5.19307 17.5985 4.79643 17.891 4.50399C18.1834 4.21155 18.58 4.04726 18.9936 4.04726C19.4072 4.04726 19.8038 4.21155 20.0963 4.50399C20.3887 4.79643 20.553 5.19307 20.553 5.60664ZM9.76844 14.8318C10.5183 15.5817 11.5354 16.003 12.5959 16.003C13.6564 16.003 14.6734 15.5817 15.4233 14.8318C16.1732 14.0819 16.5945 13.0649 16.5945 12.0044C16.5945 10.9439 16.1732 9.92684 15.4233 9.17696C14.6734 8.42708 13.6564 8.0058 12.5959 8.0058C11.5354 8.0058 10.5183 8.42708 9.76844 9.17696C9.01856 9.92684 8.59728 10.9439 8.59728 12.0044C8.59728 13.0649 9.01856 14.0819 9.76844 14.8318ZM10.2394 6.3153C10.9865 6.00584 11.7872 5.84656 12.5959 5.84656C14.229 5.84656 15.7953 6.49533 16.9501 7.65014C18.1049 8.80496 18.7537 10.3712 18.7537 12.0044C18.7537 13.6375 18.1049 15.2038 16.9501 16.3586C15.7953 17.5134 14.229 18.1622 12.5959 18.1622C11.7872 18.1622 10.9865 18.0029 10.2394 17.6935C9.49227 17.384 8.81344 16.9304 8.24163 16.3586C7.66982 15.7868 7.21624 15.108 6.90678 14.3609C6.59732 13.6138 6.43805 12.813 6.43805 12.0044C6.43805 11.1957 6.59732 10.395 6.90678 9.64789C7.21624 8.90079 7.66982 8.22195 8.24163 7.65014C8.81344 7.07834 9.49227 6.62476 10.2394 6.3153ZM20.0115 6.62452C20.2814 6.35456 20.4331 5.98842 20.4331 5.60664C20.4331 5.22487 20.2814 4.85873 20.0115 4.58877C19.7415 4.31881 19.3754 4.16715 18.9936 4.16715C18.6118 4.16715 18.2457 4.31881 17.9757 4.58877C17.7058 4.85873 17.5541 5.22487 17.5541 5.60664C17.5541 5.98842 17.7058 6.35456 17.9757 6.62452C18.2457 6.89447 18.6118 7.04614 18.9936 7.04614C19.3754 7.04614 19.7415 6.89447 20.0115 6.62452Z"></path>
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li class="tmp-mr-4">
|
||
<a href="https://www.linkedin.com/company/github" target="_blank" rel="noopener" aria-label="Follow on LinkedIn" class="d-flex flex-justify-center flex-items-center">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20"><path d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z" fill="currentColor"></path></svg>
|
||
</a>
|
||
</li>
|
||
<li class="tmp-mr-4">
|
||
<a href="/readme.rss" target="_blank" rel="noopener" aria-label="Grab the ReadME Project RSS link" class="d-flex flex-justify-center flex-items-center">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20"><path d="M4.87725 15.564C4.87725 16.9095 3.78525 18 2.439 18C1.092 18 0 16.9095 0 15.564C0 14.2185 1.092 13.128 2.439 13.128C3.78525 13.1288 4.87725 14.2185 4.87725 15.564ZM1.81214 6.28433C0.821676 6.12662 0 6.95184 0 7.95478V7.95478C0 8.94548 0.80745 9.7311 1.77335 9.95134C4.88751 10.6614 7.34477 13.1147 8.05723 16.2246C8.27873 17.1915 9.06526 18 10.0572 18V18C11.0614 18 11.8877 17.1772 11.729 16.1856C10.9163 11.1056 6.89914 7.09432 1.81214 6.28433ZM0 1.81156C0 2.80552 0.807508 3.60066 1.79343 3.72683C8.29332 4.55863 13.4443 9.69716 14.2712 16.2022C14.3968 17.1901 15.193 18 16.1889 18V18C17.1885 18 18.0077 17.1862 17.9062 16.1918C17.0415 7.71196 10.2969 0.968855 1.80862 0.0956699C0.814393 -0.00660638 0 0.81208 0 1.81156V1.81156Z" fill="currentColor"></path></svg>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="position-relative col-md-11 col-lg-6 col-xl-5 float-md-right float-lg-none offset-lg-n4 offset-xl-n3 tmp-mt-md-n4 tmp-mt-lg-8 tmp-mb-lg-n4 tmp-mb-lg-n8 tmp-px-3 tmp-py-6 tmp-px-md-6 tmp-py-md-8 tmp-pl-xl-8 tmp-pr-xl-8 tmp-py-xl-9 z-1 readme-bg-blue color-text-white">
|
||
|
||
<h4 class="readme-heading-3 readme-heading--condensed text-uppercase">
|
||
<a href="https://github.com/readme/nominate" data-ga-click="Nominate a person or project, click, ref_page:/readme/guides/incident-response;ref_cta:Nominate a person or project;ref_loc:readme homepage" class="readme-focus-on-blue no-underline color-text-white arrow-target-mktg">Nominate a developer<span class="ml-1 d-inline-flex flex-items-start" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><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="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></span>
|
||
</a>
|
||
</h4>
|
||
<p class="f3-mktg mb-0">Nominate inspiring developers and projects you think we should feature in The ReadME Project.</p>
|
||
|
||
<h4 class="readme-heading-3 readme-heading--condensed text-uppercase tmp-pt-6 tmp-pt-md-8">
|
||
<a href="https://github.com/sponsors" data-ga-click="Support the community, click to support the community, ref_page:/readme/guides/incident-response;ref_cta:Support the community;ref_loc:readme homepage" class="readme-focus-on-blue no-underline color-text-white arrow-target-mktg">Support the community<span class="ml-1 d-inline-flex flex-items-start" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><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="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></span>
|
||
</a>
|
||
</h4>
|
||
<p class="f3-mktg mb-0">Recognize developers working behind the scenes and help open source projects get the resources they need.</p>
|
||
|
||
<h4 class="readme-heading-3 readme-heading--condensed text-uppercase tmp-pt-6 tmp-pt-md-8">
|
||
<a
|
||
target="_blank"
|
||
rel="noopener"
|
||
aria-label="Sign up for the newsletter (opens in a new tab)"
|
||
href="https://resources.github.com/newsletter-open-source/"
|
||
data-ga-click="Sign up for the newsletter, click, ref_page:/readme/guides/incident-response;ref_cta:Sign up for the newsletter;ref_loc:readme homepage"
|
||
class="readme-focus-on-blue no-underline color-text-white arrow-target-mktg"
|
||
>
|
||
Sign up for the newsletter
|
||
<span class="ml-1 d-inline-flex flex-items-start" aria-hidden="true">
|
||
<svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><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="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg>
|
||
</span>
|
||
</a>
|
||
</h4>
|
||
<p class="f3-mktg mb-0">Sharpen your open source skills with tips, tools, and insights. Delivered monthly.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
</main>
|
||
|
||
</div>
|
||
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-7450ad822d7699b5.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-lib-3b03eb55bae46c70.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aq-ba5f008999aedbd0.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/nvz-deeea5270ef3dfb4.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/mz-a6c5397389be3fff.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3d-82c347d20a13fb90.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/5t-dc6e19f29c4172a8.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-footer-99e0f43bfaab7003.js" fetchpriority="low" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css" />
|
||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/marketing-footer.048794eddf380fba.module.css" />
|
||
|
||
<react-partial
|
||
partial-name="marketing-footer"
|
||
data-ssr="true"
|
||
data-attempted-ssr="true"
|
||
data-react-profiling="false"
|
||
>
|
||
|
||
<script type="application/json" data-target="react-partial.embeddedData">{"props":{"cookieConsentEnabled":true,"colorMode":"light","currentLocale":"en","localeOptions":[{"displayName":"English","selectorLocale":"en-us","analyticsLabel":"locale:en-us"},{"displayName":"Português (Brasil)","selectorLocale":"pt-br","analyticsLabel":"locale:pt-br"},{"displayName":"Español (América Latina)","selectorLocale":"es-419","analyticsLabel":"locale:es-419"},{"displayName":"日本語","selectorLocale":"ja","analyticsLabel":"locale:ja"},{"displayName":"한국어","selectorLocale":"ko-kr","analyticsLabel":"locale:ko-kr"},{"displayName":"Français","selectorLocale":"fr-fr","analyticsLabel":"locale:fr-fr"},{"displayName":"Deutsch","selectorLocale":"de-de","analyticsLabel":"locale:de-de"}],"showAdminToggle":false,"isAdminModeOn":false,"adminTogglePath":null,"showUiOptOut":false,"isUiOptedOut":false,"uiOptOutTogglePath":null}}</script>
|
||
<div data-target="react-partial.reactRoot"><div data-color-mode="light"><footer class="MarketingFooter-module__footer__sWiQH" role="contentinfo" data-analytics-category="Footer"><h2 class="visually-hidden">Site-wide Links</h2><div class="MarketingFooter-module__container__FiPNP"><div class="MarketingFooter-module__topRow__dhoq5"><section class="Newsletter-module__newsletter__WQAO6 MarketingFooter-module__newsletter__FkId8" aria-labelledby="subscribe-to-newsletter"><a href="/" class="Newsletter-module__logoLink__llafS" aria-label="Go to GitHub homepage"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github Newsletter-module__logo__rcAsT" 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><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD Newsletter-module__heading__T6FMN" id="subscribe-to-newsletter"><span class="Newsletter-module__headingDot__mwB26" aria-hidden="true"></span>The developer newsletter</h3><p 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 Newsletter-module__description__LBtd9">Get tips, technical guides, and best practices. Twice a month. Right in your inbox.</p><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--primary___MSbnU Primer_Brand__Button-module__Button--size-small___zQrEw Newsletter-module__cta___iepg" href="/newsletter"><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-primary___QX1u5">Subscribe</span></span></a></section><div class="MarketingFooter-module__columns__hFD_D"><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-platform"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-platform">Platform</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/features" data-analytics-event="{"location":"footer","tag":"link","action":"features","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Features</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/enterprise" data-analytics-event="{"location":"footer","tag":"link","action":"enterprise","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Enterprise</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/features/copilot" data-analytics-event="{"location":"footer","tag":"link","action":"copilot","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Copilot</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/features/ai" data-analytics-event="{"location":"footer","tag":"link","action":"ai","context":"platform"}"><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__Link-module__Link--label___jM8Ty">AI</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/security" data-analytics-event="{"location":"footer","tag":"link","action":"security","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Security</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/pricing" data-analytics-event="{"location":"footer","tag":"link","action":"pricing","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Pricing</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/team" data-analytics-event="{"location":"footer","tag":"link","action":"team","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Team</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources" data-analytics-event="{"location":"footer","tag":"link","action":"resources","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Resources</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/github/roadmap" data-analytics-event="{"location":"footer","tag":"link","action":"roadmap","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Roadmap</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/resources/articles/devops-tools-comparison" data-analytics-event="{"location":"footer","tag":"link","action":"compare","context":"platform"}"><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__Link-module__Link--label___jM8Ty">Compare GitHub</span></a></li></ul></nav><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-ecosystem"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-ecosystem">Ecosystem</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://docs.github.com/integrations/concepts/about-building-integrations" data-analytics-event="{"location":"footer","tag":"link","action":"dev-api","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">Developer API</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{"location":"footer","tag":"link","action":"partners","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">Partners</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/education" data-analytics-event="{"location":"footer","tag":"link","action":"edu","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">Education</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://cli.github.com" data-analytics-event="{"location":"footer","tag":"link","action":"cli","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">GitHub CLI</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/apps/desktop" data-analytics-event="{"location":"footer","tag":"link","action":"desktop","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">GitHub Desktop</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/mobile" data-analytics-event="{"location":"footer","tag":"link","action":"mobile","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">GitHub Mobile</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/marketplace" data-analytics-event="{"location":"footer","tag":"link","action":"marketplace","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">GitHub Marketplace</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/mcp" data-analytics-event="{"location":"footer","tag":"link","action":"mcp_registry","context":"ecosystem"}"><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__Link-module__Link--label___jM8Ty">MCP Registry</span></a></li></ul></nav><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-support"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-support">Support</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://docs.github.com" data-analytics-event="{"location":"footer","tag":"link","action":"docs","context":"support"}"><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__Link-module__Link--label___jM8Ty">Docs</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.community" data-analytics-event="{"location":"footer","tag":"link","action":"community","context":"support"}"><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__Link-module__Link--label___jM8Ty">Community Forum</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/services" data-analytics-event="{"location":"footer","tag":"link","action":"services","context":"support"}"><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__Link-module__Link--label___jM8Ty">Professional Services</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/enterprise/premium-support" data-analytics-event="{"location":"footer","tag":"link","action":"premium_support","context":"support"}"><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__Link-module__Link--label___jM8Ty">Premium Support</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://skills.github.com" data-analytics-event="{"location":"footer","tag":"link","action":"skills","context":"support"}"><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__Link-module__Link--label___jM8Ty">Skills</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://www.githubstatus.com" data-analytics-event="{"location":"footer","tag":"link","action":"status","context":"support"}"><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__Link-module__Link--label___jM8Ty">Status</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://support.github.com?tags=dotcom-footer" data-analytics-event="{"location":"footer","tag":"link","action":"contact_github","context":"support"}"><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__Link-module__Link--label___jM8Ty">Contact GitHub</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/git-guides" data-analytics-event="{"location":"footer","tag":"link","action":"what_is_git","context":"support"}"><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__Link-module__Link--label___jM8Ty">What is Git?</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/sitemap" data-analytics-event="{"location":"footer","tag":"link","action":"sitemap","context":"support"}"><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__Link-module__Link--label___jM8Ty">Sitemap</span></a></li></ul></nav><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-company"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-company">Company</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/about" data-analytics-event="{"location":"footer","tag":"link","action":"about","context":"company"}"><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__Link-module__Link--label___jM8Ty">About</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/why-github" data-analytics-event="{"location":"footer","tag":"link","action":"why_github","context":"company"}"><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__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/customer-stories?type=enterprise" data-analytics-event="{"location":"footer","tag":"link","action":"customer_stories","context":"company"}"><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__Link-module__Link--label___jM8Ty">Customer Stories</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.blog" data-analytics-event="{"location":"footer","tag":"link","action":"blog","context":"company"}"><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__Link-module__Link--label___jM8Ty">Blog</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/readme" data-analytics-event="{"location":"footer","tag":"link","action":"readme","context":"company"}"><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__Link-module__Link--label___jM8Ty">The ReadME Project</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.careers" data-analytics-event="{"location":"footer","tag":"link","action":"careers","context":"company"}"><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__Link-module__Link--label___jM8Ty">Careers</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/newsroom" data-analytics-event="{"location":"footer","tag":"link","action":"newsroom","context":"company"}"><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__Link-module__Link--label___jM8Ty">Newsroom</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/about/diversity" data-analytics-event="{"location":"footer","tag":"link","action":"inclusion","context":"company"}"><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__Link-module__Link--label___jM8Ty">Inclusion</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://socialimpact.github.com" data-analytics-event="{"location":"footer","tag":"link","action":"social_impact","context":"company"}"><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__Link-module__Link--label___jM8Ty">Social Impact</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://thegithubshop.com" data-analytics-event="{"location":"footer","tag":"link","action":"shop","context":"company"}"><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__Link-module__Link--label___jM8Ty">Shop</span></a></li></ul></nav></div></div></div><div class="SubFooter-module__bar__MCrz3"><div class="SubFooter-module__container__zWjah"><nav aria-label="Legal and Resource Links" class="SubFooter-module__legal__ihBjH"><ul class="SubFooter-module__legalList__W482t"><li class="SubFooter-module__copyright__jBUrS"><time dateTime="2026">© 2026 GitHub, Inc.</time></li><li><a href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" class="SubFooter-module__legalLink__Y0jbc">Terms</a></li><li><a href="https://docs.github.com/site-policy/privacy-policies/github-general-privacy-statement" class="SubFooter-module__legalLink__Y0jbc">Privacy</a></li><li><cookie-consent-link><button type="button" class="SubFooter-module__legalLink__Y0jbc" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","tag":"link","action":"cookies","context":"subfooter"}">Manage cookies</button></cookie-consent-link></li><li><cookie-consent-link><button type="button" class="SubFooter-module__legalLink__Y0jbc" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","tag":"link","action":"dont_share_info","context":"subfooter"}">Do not share my personal information</button></cookie-consent-link></li></ul></nav><div class="SubFooter-module__socialAndLocale__Kl140"><nav aria-label="GitHub's Social Media Links"><ul class="SocialLinks-module__list__kkyUo"><li><a href="https://www.linkedin.com/company/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{"category":"Footer","action":"go to Linkedin","label":"text:linkedin"}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" width="19" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on LinkedIn</span></a></li><li><a href="https://www.instagram.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{"category":"Footer","action":"go to Instagram","label":"text:instagram"}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on Instagram</span></a></li><li><a href="https://www.youtube.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{"category":"Footer","action":"go to YouTube","label":"text:youtube"}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.17 13.6" width="23" height="16" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M18.77 2.13A2.4 2.4 0 0 0 17.09.42C15.59 0 9.58 0 9.58 0a57.55 57.55 0 0 0-7.5.4A2.49 2.49 0 0 0 .39 2.13 26.27 26.27 0 0 0 0 6.8a26.15 26.15 0 0 0 .39 4.67 2.43 2.43 0 0 0 1.69 1.71c1.52.42 7.5.42 7.5.42a57.69 57.69 0 0 0 7.51-.4 2.4 2.4 0 0 0 1.68-1.71 25.63 25.63 0 0 0 .4-4.67 24 24 0 0 0-.4-4.69zM7.67 9.71V3.89l5 2.91z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on YouTube</span></a></li><li><a href="https://x.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{"category":"Footer","action":"go to X","label":"text:x"}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 1227" width="16" height="16" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on X</span></a></li><li><a href="https://www.tiktok.com/@github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{"category":"Footer","action":"go to tiktok","label":"text:tiktok"}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on TikTok</span></a></li><li><a href="https://www.twitch.tv/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{"category":"Footer","action":"go to Twitch","label":"text:twitch"}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on Twitch</span></a></li><li><a href="https://github.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{"category":"Footer","action":"go to github's org","label":"text:github"}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 98 96" width="20" height="20" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path fill="currentColor" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"></path></svg><span class="visually-hidden">GitHub’s organization on GitHub</span></a></li></ul></nav><div id="_R_ad_" class="Primer_Brand__ActionMenu-module__ActionMenu___xLxGU" data-testid="ActionMenu"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw Primer_Brand__ActionMenu-module__ActionMenu__button___vFLAF Primer_Brand__ActionMenu-module__ActionMenu__button--small___UAUPB Primer_Brand__ActionMenu-module__ActionMenu__button--default___heDoV" id="_R_ad_-button" aria-haspopup="true" aria-expanded="false" data-testid="ActionMenu-button" aria-label="English - Select language"><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"><span><span class="LocaleSelector-module__triggerContent__lli5v"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-globe" 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 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path></svg><span class="LocaleSelector-module__triggerLabel__IDKuJ">English</span></span></span></span></span><span class="Primer_Brand__Button-module__Button__trailing-visual___5i3xR" data-testid="Button-trailing-visual"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down 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="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></button></div></div></div></div></footer></div></div>
|
||
</react-partial>
|
||
|
||
|
||
|
||
|
||
<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="false"
|
||
></ghcc-consent>
|
||
|
||
|
||
<fullstory-capture data-fs-script-domain="https://github.githubassets.com">
|
||
</fullstory-capture>
|
||
|
||
|
||
|
||
|
||
<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>
|
||
|
||
|