keephq/keep

The open-source AIOps and alert management platform

Python

12,396

2,927 commits

updated Sep 28, 2026

See the code

README

The open-source AIOps and alert management platform


Single pane of glass, alert deduplication, enrichment, filtering and correlation, bi-directional integrations, workflows, dashboards.

Docs · Try it out · Report Bug · Book a Demo · Website

Sneak preview screenshot

  • 🔍 Single pane of glass - Best-in-class customizable UI for all your alerts and incidents
  • 🛠️ Swiss Army Knife for alerts - Deduplication, correlation, filtering and enrichment
  • 🔄 Deep integrations - Bi-directional syncs with monitoring tools, customizable workflows
  • ⚡ Automation - GitHub Actions for your monitoring tools
  • 🤖 AIOps 2.0 - AI-powered correlation and summarization

See full platform documentation.


Supported Integrations

View the full list in our documentation

Missing a provider? Submit a new provider request and we'll add it quickly!

AI Backends for Enrichments, Correlations and Incident Context Gathering

Observability Tools

Databases & Data Warehouses

Communication Platforms

Incident Management

Ticketing Tools

Container Orchestration Platforms

Data Enrichment

Workflow Orchestration

Queues

Workflows

Keep is GitHub Actions for your monitoring tools.

A Keep Workflow is a declarative YAML file that automates your alert and incident management. Each workflow consists of:

  • Triggers - What starts the workflow (alerts, incidents, schedule or manual)
  • Steps - Read or fetch data (enrichment, context)
  • Actions - Execute operations (update tickets, send notifications, restart servers)

Here's a simple workflow that creates a Jira ticket for every critical alert from sentry for payments and api services.

For more workflows, see here.

workflow:
  id: sentry-alerts
  description: create ticket alerts for critical alerts from sentry
  triggers:
    - type: alert
      # customize the filter to run only on critical alert from sentry
      filters:
        - key: source
          value: sentry
        - key: severity
          value: critical
        # regex to match specific services
        - key: service
          value: r"(payments|ftp)"
  actions:
    - name: send-slack-message-team-payments
      # if the alert is on the payments service, slack the payments team
      if: "'{{ alert.service }}' == 'payments'"
      provider:
        type: slack
        # control which Slack configuration you want to use
        config: " {{ providers.team-payments-slack }} "
        # customize the alert message with context from {{ alert }} or any other {{ step }}
        with:
          message: |
            "A new alert from Sentry: Alert: {{ alert.name }} - {{ alert.description }}
            {{ alert}}"
    - name: create-jira-ticket-oncall-board
      # control the workflow flow with "if" and "foreach" statements
      if: "'{{ alert.service }}' == 'ftp' and not '{{ alert.ticket_id }}'"
      provider:
        type: jira
        config: " {{ providers.jira }} "
        with:
          board_name: "Oncall Board"
          custom_fields:
            customfield_10201: "Critical"
          issuetype: "Task"
          # customize the summary
          summary: "{{ alert.name }} - {{ alert.description }} (created by Keep)"
          description: |
            "This ticket was created by Keep.
            Please check the alert details below:
            {code:json} {{ alert }} {code}"
          # enrich the alerts with more context. from now on, the alert will be assigned with the ticket id, type and url
          enrich_alert:
            - key: ticket_type
              value: jira
            - key: ticket_id
              value: results.issue.key
            - key: ticket_url
              value: results.ticket_url

Enterprise Ready

  • Developer First - Modern REST APIs, native SDKs, and comprehensive documentation for seamless integration
  • Enterprise Security - Full authentication support (SSO, SAML, OIDC, LDAP) with granular access control (RBAC, ABAC) and team management
  • Flexible Deployment - Deploy on-premises or in air-gapped environments with cloud-agnostic architecture
  • Production Scale - High availability, performance-tested infrastructure supporting horizontal scaling for enterprise workloads

Getting Started

Need help? Can't find your environment listed? Reach out on Slack and we'll help you quickly.

Keep can run in various environments and configurations. The easiest way to start is with Keep's Docker Compose.

🫵 Keepers

Top Contributors

A special thanks to our top contributors who help us make Keep great. You are more than awesome!

Want to become a top contributor? Join our Slack and DM Tal, Shahar, or Furkan.

Contributors

Thank you for contributing and continuously making Keep better, you're awesome 🫶

aiops
alarm
alarms
alerting
alerts
monitoring
monitoring-tool
python
python3
workflow-automation

keephq/keep

The open-source AIOps and alert management platform

Python

12,396

2,927 commits

updated Sep 28, 2026

See the code

README

The open-source AIOps and alert management platform


Single pane of glass, alert deduplication, enrichment, filtering and correlation, bi-directional integrations, workflows, dashboards.

Docs · Try it out · Report Bug · Book a Demo · Website

Sneak preview screenshot

  • 🔍 Single pane of glass - Best-in-class customizable UI for all your alerts and incidents
  • 🛠️ Swiss Army Knife for alerts - Deduplication, correlation, filtering and enrichment
  • 🔄 Deep integrations - Bi-directional syncs with monitoring tools, customizable workflows
  • ⚡ Automation - GitHub Actions for your monitoring tools
  • 🤖 AIOps 2.0 - AI-powered correlation and summarization

See full platform documentation.


Supported Integrations

View the full list in our documentation

Missing a provider? Submit a new provider request and we'll add it quickly!

AI Backends for Enrichments, Correlations and Incident Context Gathering

Observability Tools

Databases & Data Warehouses

Communication Platforms

Incident Management

Ticketing Tools

Container Orchestration Platforms

Data Enrichment

Workflow Orchestration

Queues

Workflows

Keep is GitHub Actions for your monitoring tools.

A Keep Workflow is a declarative YAML file that automates your alert and incident management. Each workflow consists of:

  • Triggers - What starts the workflow (alerts, incidents, schedule or manual)
  • Steps - Read or fetch data (enrichment, context)
  • Actions - Execute operations (update tickets, send notifications, restart servers)

Here's a simple workflow that creates a Jira ticket for every critical alert from sentry for payments and api services.

For more workflows, see here.

workflow:
  id: sentry-alerts
  description: create ticket alerts for critical alerts from sentry
  triggers:
    - type: alert
      # customize the filter to run only on critical alert from sentry
      filters:
        - key: source
          value: sentry
        - key: severity
          value: critical
        # regex to match specific services
        - key: service
          value: r"(payments|ftp)"
  actions:
    - name: send-slack-message-team-payments
      # if the alert is on the payments service, slack the payments team
      if: "'{{ alert.service }}' == 'payments'"
      provider:
        type: slack
        # control which Slack configuration you want to use
        config: " {{ providers.team-payments-slack }} "
        # customize the alert message with context from {{ alert }} or any other {{ step }}
        with:
          message: |
            "A new alert from Sentry: Alert: {{ alert.name }} - {{ alert.description }}
            {{ alert}}"
    - name: create-jira-ticket-oncall-board
      # control the workflow flow with "if" and "foreach" statements
      if: "'{{ alert.service }}' == 'ftp' and not '{{ alert.ticket_id }}'"
      provider:
        type: jira
        config: " {{ providers.jira }} "
        with:
          board_name: "Oncall Board"
          custom_fields:
            customfield_10201: "Critical"
          issuetype: "Task"
          # customize the summary
          summary: "{{ alert.name }} - {{ alert.description }} (created by Keep)"
          description: |
            "This ticket was created by Keep.
            Please check the alert details below:
            {code:json} {{ alert }} {code}"
          # enrich the alerts with more context. from now on, the alert will be assigned with the ticket id, type and url
          enrich_alert:
            - key: ticket_type
              value: jira
            - key: ticket_id
              value: results.issue.key
            - key: ticket_url
              value: results.ticket_url

Enterprise Ready

  • Developer First - Modern REST APIs, native SDKs, and comprehensive documentation for seamless integration
  • Enterprise Security - Full authentication support (SSO, SAML, OIDC, LDAP) with granular access control (RBAC, ABAC) and team management
  • Flexible Deployment - Deploy on-premises or in air-gapped environments with cloud-agnostic architecture
  • Production Scale - High availability, performance-tested infrastructure supporting horizontal scaling for enterprise workloads

Getting Started

Need help? Can't find your environment listed? Reach out on Slack and we'll help you quickly.

Keep can run in various environments and configurations. The easiest way to start is with Keep's Docker Compose.

🫵 Keepers

Top Contributors

A special thanks to our top contributors who help us make Keep great. You are more than awesome!

Want to become a top contributor? Join our Slack and DM Tal, Shahar, or Furkan.

Contributors

Thank you for contributing and continuously making Keep better, you're awesome 🫶

aiops
alarm
alarms
alerting
alerts
monitoring
monitoring-tool
python
python3
workflow-automation

Significant stargazers

(top 24 of 92)

Stephen Augustus

561 followers · starred Jun 2023

Oleg Nenashev

807 followers · starred Jan 2025

Vedant Mohan Goyal

219 followers · starred Nov 2024

Kay Yan

321 followers · starred Dec 2025