## 1. Project Overview & Quickstart (keephq/keep)

## File: README.md

<h1 align="center">The open-source AIOps and alert management platform</h1>










    


<h1 align="center"></h1>

- 🔍 **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](#workflows)** - GitHub Actions for your monitoring tools
- 🤖 **AIOps 2.0** - AI-powered correlation and summarization



> See full [platform documentation](https://docs.keephq.dev).



## Supported Integrations

> View the full list in our [documentation](https://docs.keephq.dev/providers/documentation)

> Missing a provider? [Submit a new provider request](https://github.com/keephq/keep/issues/new?assignees=&labels=provider&projects=&template=new_provider_request.md&title=) 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](https://github.com/keephq/keep/tree/main/examples/workflows).

```
/* 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](https://docs.keephq.dev/deployment/authentication/overview)** - 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](https://docs.keephq.dev/deployment/stress-testing)** - 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.

- Running Keep [locally](https://docs.keephq.dev/development/getting-started).
- Running Keep on [Kubernetes](https://docs.keephq.dev/deployment/kubernetes/installation).
- Running Keep with [Docker](https://docs.keephq.dev/deployment/docker).
- Running Keep on [AWS ECS](https://docs.keephq.dev/deployment/ecs).
- Running Keep on [OpenShift](https://docs.keephq.dev/deployment/kubernetes/openshift).

## 🫵 Keepers

### Top Contributors

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

- [Furkan](https://github.com/pehlicd)
- [Asharon](https://github.com/asharonbaltazar)

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** 🫶

<a href="https://github.com/keephq/keep/graphs/contributors">
  
</a>

---

## File: docs/README.md

How to run docs locally:

```
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](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command

```
npm i mintlify -g
```

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

```
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.

## Useful Links

- [Axiom API Documentation](https://axiom.co/docs/restapi/introduction)

---

## 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*

## Useful Links
*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_

## Useful Links

_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*

## Useful Links
*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_

## Useful Links

- https://discord.com/developers/docs/resources/webhook#execute-webhook

---

## 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_

## Useful Links

_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.

## Useful Links

- [requests library documentation](https://docs.python-requests.org/en/latest/)

---

## 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

## Useful Links

- https://id.atlassian.com/manage-profile/security/api-tokens
- https://developer.atlassian.com/cloud/jira/software/rest/api-group-board/#api-rest-agile-1-0-board-boardid-issue-get

---

## 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_

## Useful Links

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