Skip to main content

High Level Architecture

Keep architecture composes of two main components:
  1. Keep API - A FastAPI-based backend server that handles business logic and API endpoints.
  2. Keep Frontend - A Next.js-based frontend interface for user interaction.
  3. Websocket Server - A Soketi server for real-time updates without page refreshes.
  4. Database Server - A database used to store and manage persistent data. Supported databases include SQLite, PostgreSQL, MySQL, and SQL Server.

Kubernetes Architecture

Keep uses a single unified NGINX ingress controller to route traffic to all components (frontend, backend, and websocket). The ingress handles path-based routing: By default:
  • / routed to Frontend (configurable via global.ingress.frontendPrefix)
  • /v2 routed to Backend (configurable via global.ingress.backendPrefix)
  • /websocket routed to WebSocket (configurable via global.ingress.websocketPrefix)

General Components

Keep uses kubernetes secret manager to store secrets such as integrations credentials.

Ingress Component

Frontend Components

Backend Components

Database Components

Database components are optional. You can spin up Keep with your own database.

WebSocket Components

WebSocket components are optional. You can spin up Keep with your own Pusher compatible WebSocket server.
These tables provide a comprehensive overview of the Kubernetes resources used in the Keep architecture, organized by component type. Each table describes the purpose of each resource, indicates whether it’s required or optional, and provides a direct link to the source template in the Keep Helm charts GitHub repository.

Kubernetes Configuration

This sections covers only kubernetes-specific configuration. To learn about Keep-specific configuration, controlled by environment variables, see Keep Configuration
Each of these components can be customized via the values.yaml file in the Helm chart. Below are key configurations that can be adjusted for each component.

1. Frontend Configuration

2. Backend Configuration

3. WebSocket Server Configuration

Keep uses Soketi as its websocket server. To learn how to configure it, please see Soketi docs.

4. Database Configuration

Keep supports plenty of database (e.g. postgresql, mysql, sqlite, etc). It is out of scope to describe here how to deploy all of them to k8s. If you have specific questions - contact us and we will be happy to help.