keep Documentation

The open-source AIOps and alert management platform

12,151 stars Python Python 1 file ยท ~4,360 tokens #aiops#alarm#alarms#alerting#alerts#monitoring#monitoring-tool#python
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy keep on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name keep -p 6379:6379 --restart always us-central1-docker.pkg.dev/keephq/keep/keep-ui
Configured Services & Ports
โš™๏ธ keep-frontend
image: us-central1-docker.pkg.dev/keephq/keep/keep-ui
โš™๏ธ keep-backend
image: us-central1-docker.pkg.dev/keephq/keep/keep-api
โš™๏ธ keep-websocket-server
image: build locally
โš™๏ธ keep-arq-redis
image: redis/redis-stack
๐Ÿ”Œ Ports: 6379:6379, 8081:8001
โš™๏ธ keep-arq-dashboard
image: us-central1-docker.pkg.dev/keephq/keep/keep-arq-dashboard
๐Ÿ”Œ Ports: 8082:8000
docker-compose.yml
yaml (docker-compose.yml)
services:
  keep-frontend:
    extends:
      file: docker-compose.common.yml
      service: keep-frontend-common
    image: us-central1-docker.pkg.dev/keephq/keep/keep-ui
    environment:
      - AUTH_TYPE=NO_AUTH
      - API_URL=http://keep-backend:8080
    volumes:
      - ./state:/state
    depends_on:
      - keep-backend

  keep-backend:
    extends:
      file: docker-compose.common.yml
      service: keep-backend-common
    image: us-central1-docker.pkg.dev/keephq/keep/keep-api
    environment:
      - AUTH_TYPE=NO_AUTH
      - REDIS=true
      - REDIS_HOST=keep-arq-redis
      - REDIS_PORT=6379
      - REDIS_DB=0
    volumes:
      - ./state:/state
    depends_on:
      - keep-arq-redis

  keep-websocket-server:
    extends:
      file: docker-compose.common.yml
      service: keep-websocket-server-common

  keep-arq-redis:
    image: redis/redis-stack
    ports:
      - "6379:6379"
      - "8081:8001"

  keep-arq-dashboard:
    image: us-central1-docker.pkg.dev/keephq/keep/keep-arq-dashboard
    ports:
      - "8082:8000"
    entrypoint:
        - "uvicorn"
        - "--host"
        - "0.0.0.0"
        - "arq_dashboard:app"
    environment:
      - ARQ_DASHBOARD_REDIS_URL=redis://keep-arq-redis:6379

1. Project Overview & Quickstart (keephq/keep)

File: README.md

The open-source AIOps and alert management platform

  • ๐Ÿ” 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

Anthropic OpenAI DeepSeek Ollama LlamaCPP Grok
Gemini

Observability Tools

AppDynamics Axiom Azure Monitoring Centreon Checkmk Cilium
Checkly CloudWatch Coralogix Dash0 Datadog Dynatrace
Elastic GCP Monitoring Grafana Grafana Loki Graylog Icinga2
Kibana LibreNMS NetBox Netdata New Relic OpenSearch Serverless
Parseable Pingdom Prometheus Rollbar Sentry SignalFX
OpenObserve Site24x7 Splunk StatusCake SumoLogic ThousandEyes
UptimeKuma VictoriaLogs VictoriaMetrics Wazuh Zabbix

Databases & Data Warehouses

BigQuery ClickHouse Databend MongoDB MySQL PostgreSQL
Snowflake

Communication Platforms

Discord Google Chat Mailgun Mattermost Ntfy.sh Pushover Resend
SendGrid Slack SMTP Telegram Twilio Teams Zoom
Zoom Chat

Incident Management

Grafana Incident Grafana OnCall Ilert Incident.io AWS Incident Manager OpsGenie
PagerDuty Pagertree SINGL4 Squadcast Zenduty Flashduty

Ticketing Tools

Asana GitHub GitLab Jira Linear LinearB Microsoft Planner
Monday Redmine ServiceNow Trello YouTrack

Container Orchestration Platforms

Azure AKS ArgoCD Flux GKE Kubernetes OpenShift

Data Enrichment

Bash OpenAI Python QuickChart SSH Webhook

Workflow Orchestration

Airflow

Queues

Amazon SQS Kafka

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.

text
/* Detailed source-code truncated for AI context efficiency. */

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 ๐Ÿซถ


File: docs/README.md

How to run docs locally:

text
npm i mintlify
mintlify dev

Read more: https://mintlify.com/docs/development

2. Official Technical Reference & Guides (keephq/keep-docs)

File: README.md

Keep Documentation

The content and configuration powering the documentation available at

๐Ÿ‘ฉโ€๐Ÿ’ป Development

Install the Mintlify CLI to preview the documentation changes locally. To install, use the following command

text
npm i mintlify -g

Run the following command at the root of your documentation (where mint.json is)

text
mintlify dev

File: platform/core/providers/documentation/axiom-provider.mdx


title: "Axiom Provider"

Inputs

  • query (required): AQL to execute
  • dataset (required): Dataset to query
  • organization_id (optional): Override the given organization id from configuration
  • nocache (optional): Whether to cache the response or not
  • startTime (optional): Start time, defaults to UTC now in ISO format.
  • endTime (optional): End time, defaults to UTC now in ISO format.

Outputs

Axiom does not currently support the notify function.

Authentication Parameters

The Axiom Provider uses API token authentication. You need to provide the following authentication parameters to connect to Axiom:

  • api_token (required): Your Axiom API token.
  • organization_id (optional): The organization ID to access datasets in.

Connecting with the Provider

To connect to Axiom, you need to create an API token from your Axiom account. Follow these steps:

  1. Log in to your Axiom account.
  2. Go to the API Access page under the Settings menu.
  3. Click the Create Token button and enter a name for the token.
  4. Copy the token value and keep it safe.
  5. Add the token value to the authentication section in the Axiom Provider configuration.

To access datasets, you need to provide the organization ID. You can find your organization ID in the URL of the Axiom web app. For example, if your Axiom URL is https://app.axiom.co/organizations/1234, then your organization ID is 1234.

Notes

  • This provider supports a limited set of features provided by the Axiom API.
  • The startTime and endTime parameters use ISO-8601 format.
  • The query function returns the response in JSON format from the Axiom API.

File: platform/core/providers/documentation/cloudwatch-logs.mdx


title: "AWS CloudWatch Logs" sidebarTitle: "CloudWatch Logs"

Inputs

The query function takes the following parameters as inputs:

  • log_group: Required. The name of the log group to query.
  • query: Required. A query string to use to filter the log events to be returned.
  • hours: Optional. An integer representing the number of hours to query the logs for. Defaults to 24.

Outputs

The function returns a list or tuple of the query results.

Authentication Parameters

The query function requires an access_key and access_key_secret to authenticate with AWS. These can be obtained by creating an AWS IAM user with the necessary permissions to query CloudWatch logs.

Connecting with the Provider

To obtain the access_key and access_key_secret from AWS, you will need to create an AWS IAM user with the necessary permissions to query CloudWatch logs. You can do this by following these steps:

  1. Log in to the AWS Management Console.
  2. Navigate to the IAM service.
  3. Click on the "Users" option in the left-side menu.
  4. Click on the "Add user" button.
  5. Enter a user name and select "Programmatic access" as the access type.
  6. Click on the "Next: Permissions" button.
  7. Attach the "CloudWatchLogsReadOnlyAccess" policy to the user.
  8. Click on the "Next: Review" button.
  9. Review the user details and click on the "Create user" button.
  10. Copy the access_key and access_key_secret displayed on the next screen and use them when creating an instance of the CloudwatchLogsProvider provider.

Notes

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page


File: platform/core/providers/documentation/cloudwatch-metrics.mdx


title: "AWS CloudWatch Metrics" sidebarTitle: "CloudWatch Metrics"

WIP ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

Inputs

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Outputs

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Authentication Parameters

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Connecting with the Provider

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Notes

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page


File: platform/core/providers/documentation/console-provider.mdx


title: "Console" sidebarTitle: "Console Provider"

Inputs

  • alert_message: The alert message to print to the console

Outputs

This provider has no outputs

Authentication Parameters

This provider has no authentication

Connecting with the Provider

This provider doesn't require any connection

Notes

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Example

python
config = {
        "description": "Console Output Provider",
        "authentication": {},
}
provider = ProvidersFactory.get_provider(
    provider_id='mock', provider_type="console", provider_config=config
)
provider.notify(
    alert_message="Simple alert showing context with name: {name}".format(
        name="John Doe"
    )
)

File: platform/core/providers/documentation/discord-provider.mdx


title: "Discord" sidebarTitle: "Discord Provider"

Inputs

  • content: str : Message text to send
  • components: list[dict] = []: Adding styling or interactive components like emoji,buttons

Outputs

No information yet, feel free to contribute it using the "Edit this page" link the bottom of the page

Authentication Parameters

The webhook_url associated with the channel requires to trigger the message to the respective channel.

Connecting with the Provider

  • Open the Discord server where you want to create the webhook.
  • Click on the settings icon next to the server name, and select "Server Settings."
  • In the left-hand menu, click on "Integrations," and then click on "Webhooks."
  • Click the "Create Webhook" button, and give your webhook a name.

Notes

No information yet, feel free to contribute it using the "Edit this page" link the bottom of the page


File: platform/core/providers/documentation/elastic-provider.mdx


title: "Elastic" sidebarTitle: "Elastic Provider"

Inputs

  • query: str | dict: The query to search Elastic Search with (either SQL/EQL)
  • index: str = None: The index to search on (If index is None, query must be SQL)

Outputs

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Authentication Parameters

The api_key and cloud_id are required for connecting to the Elastic provider. You can obtain them as described in the "Connecting with the Provider" section.

Connecting with the Provider

API Key

To obtain the Elastic API key, follow these steps:

  1. Log in to your elastic.co account
  2. Go to the "Elasticsearch Service" section
  3. Click on the "API Key" button
  4. Generate a new API Key

Cloud ID

To obtain the Elastic Cloud ID, follow these steps:

  1. Log in to your elastic.co account
  2. Go to the "Elasticsearch Service" section
  3. Find the "Cloud ID" in the Overview page.

Notes

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page


File: platform/core/providers/documentation/http-provider.mdx


title: "HTTP Provider"

Inputs

The query method of the HttpProvider class takes the following inputs:

  • url: The URL of the HTTP endpoint to query.
  • method: The HTTP method to use for the query, either "GET", "POST", "PUT", or "DELETE".
  • headers: A dictionary of headers to include in the HTTP request.
  • body: A dictionary of data to include in the HTTP request body, only used for POST, PUT requests.
  • params: A dictionary of query parameters to include in the URL of the HTTP request.

Outputs

The query method returns the JSON representation of the HTTP response, if the response is JSON-encoded, otherwise it returns the response text as a string.

Authentication Parameters

The HttpProvider class does not have any authentication parameters, but the authentication for the HTTP endpoint can be included in the headers or in the URL query parameters.

Connecting with the Provider

To connect to the provider, you can instantiate an instance of the HttpProvider class, providing a provider_id and a ProviderConfig object. Then you can call the query method to query the HTTP endpoint.

Notes

The code logs some debug information about the requests being sent, including the request headers, body, and query parameters. This information should not contain sensitive information, but it's important to make sure of that before using this provider in production.


File: platform/core/providers/documentation/jira-provider.mdx


title: "Jira Provider" sidebarTitle: "Jira"

Inputs

The query function take following parameters as inputs:

  • host: Required. Jira host name of the project
  • board_id: Required. Jira board id
  • email: Required. Your accout email

Outputs

Authentication Parameters

The query function requires an api_token from Jira.

Connecting with the Provider

  1. Go to https://id.atlassian.com/manage-profile/security/api-tokens to Create API token and generated token should be passed to jira authentication.
  2. Get host and board_id from your respective board from its URL.
  3. email would be same as of your account email.

Notes


File: platform/core/providers/documentation/mock-provider.mdx


title: "Mock" sidebarTitle: "Mock Provider"

Inputs

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Outputs

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Authentication Parameters

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Connecting with the Provider

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

Notes

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page

No information yet, feel free to contribute it using the "Edit this page" link the buttom of the page