selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

OpsiMate logo

Self-host OpsiMate

v0.0.123

Unified alert queue for NOC and DevOps teams

BetaOpen SourceAGPL-3.0
Updated12 hours ago
LanguageTypescript
Setup difficultyEasy
Stars
284
CPU
1 vCPU
RAM
512 MB
Storage
1 GB
Ports
8080 (Web frontend), 3001 (Backend API), 3100 (MCP server for AI assistants)
Docker
opsimate/backend
Install with Docker Compose
Alert queue showing 500 alerts from Grafana, GCP, and Uptime Kuma in one table with owner, severity, and statusInsights dashboard showing alert volume by severity over 7 days, peak hours, and busiest daysAnimated demo of an alert with root cause attached, rated by the on-call engineer

What is OpsiMate?

OpsiMate is an open-source alert management platform built for NOC and DevOps teams. It centralizes alerts from multiple monitoring tools — Grafana, Datadog, Zabbix, Uptime Kuma, Google Cloud, and any system that can send a webhook — into a single unified queue. Each alert gets an owner, status, and comment thread. Features include deduplication, filterable and searchable views, scheduled or ad-hoc mute policies, enrichment rules that add tags and runbooks on arrival, a root-cause analysis API where operators rate suggested causes, and insights dashboards showing resolution times, acknowledgment times, volume, and re-fire trends. Authentication is built-in with optional LDAP/Active Directory directory login. The stack runs as three containers (backend API, worker, frontend) plus an optional MCP server for AI assistants, all orchestrated via Docker Compose or Helm. It uses SQLite for persistence, requires no external database, and is licensed under AGPL-3.0.

Should you self-host OpsiMate?

OpsiMate scores 46/100 on selfhost.directory (how scoring works) and ranks #35 of 51 in Monitoring & observability. It has 284 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v0.0.123, came out on 25 October 2026. New versions land roughly every 1 days.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is GoAccess (75/100, 21 094 stars). It scores higher overall, so compare the two before you pick. See OpsiMate vs GoAccess side by side.

Features

  • Alert Deduplication
  • Enrichment rules
  • Filter, search, and group alerts
  • Historical alert browsing
  • Insights and analytics
  • LDAP/Active Directory login
  • MCP server for AI assistants
  • Multi-source webhook integrations
  • Mute policies
  • On-call teams and RBAC
  • REST API with OpenAPI docs
  • Root Cause Analysis
  • Silences and mute policies
  • TV mode dashboards
  • Unified alert queue

OpsiMate README

How to install OpsiMate

Install OpsiMate with Docker Compose

Environment variables
API_TOKEN, NODE_ENV, HOST, CONFIG_FILE, OPSIMATE_URL, MCP_PORT, API_URL

One-line installer downloads docker-compose.yml and config.yml, creates data directories, pulls images, and starts containers

How to configure OpsiMate

  • api_tokenopsimateShared secret for webhook authentication (security.api_token)

    Shared secret for webhook authentication (security.api_token)

  • API_TOKENopsimateMachine-to-machine token for webhook auth (env var mode)

    Machine-to-machine token for webhook auth (env var mode)

  • API_URLhttp://backend:3001Backend API URL for frontend

    Backend API URL for frontend

  • APP_BASE_URLPublic frontend URL (env var)

    Public frontend URL (env var)

  • bind_dnService account DN for binding (ldap.bind_dn)

    Service account DN for binding (ldap.bind_dn)

  • bind_passwordService account password (ldap.bind_password)

    Service account password (ldap.bind_password)

  • CONFIG_FILE/app/config/config.ymlPath to YAML config file

    Path to YAML config file

  • database.path../../data/database/opsimate.dbSQLite database file path

    SQLite database file path

  • EMAIL_ENABLEDEnable email via environment variable

    Enable email via environment variable

    values: true

  • enabledfalseEnable email notifications (mailer.enabled)

    Enable email notifications (mailer.enabled)

    values: true, false

  • ENCRYPTION_KEYEncryption key for credentials at rest

    Encryption key for credentials at rest

  • from<no-reply@yourdomain.com>From address for emails (mailer.from)

    From address for emails (mailer.from)

  • groups_attributememberOfAttribute for group membership (ldap.groups_attribute)

    Attribute for group membership (ldap.groups_attribute)

  • host0.0.0.0Host interface to bind (server.host)

    Host interface to bind (server.host)

  • HOSTOverrides server.host

    Overrides server.host

  • JWT_SECRETSecret for signing session tokens

    Secret for signing session tokens

  • ldapdisabledDirectory login configuration

    Directory login configuration

    values: enabled, disabled

  • mailLinkBaseUrlhttp://localhost:8080Base URL for links in emails (mailer.mailLinkBaseUrl)

    Base URL for links in emails (mailer.mailLinkBaseUrl)

  • MCP_PORT3100MCP server port

    MCP server port

  • METRICS_TOKENBearer token for Prometheus /metrics endpoint

    Bearer token for Prometheus /metrics endpoint

  • name_attributedisplayNameAttribute for display name (ldap.name_attribute)

    Attribute for display name (ldap.name_attribute)

  • NODE_ENVproductionNode environment

    Node environment

    values: production, development

  • OPSIMATE_URLhttp://backend:3001Backend URL for MCP server

    Backend URL for MCP server

  • passyour-smtp-passwordSMTP password (mailer.auth.pass)

    SMTP password (mailer.auth.pass)

  • path/app/data/database/opsimate.dbSQLite database file path (database.path)

    SQLite database file path (database.path)

  • port3001Port the backend listens on (server.port)

    Port the backend listens on (server.port)

  • PORTOverrides server.port

    Overrides server.port

  • private_keys_path/app/data/private-keysDirectory for SSH private keys (security.private_keys_path)

    Directory for SSH private keys (security.private_keys_path)

  • role_mappingMap group DNs to roles (ldap.role_mapping)

    Map group DNs to roles (ldap.role_mapping)

  • search_baseBase DN for user search (ldap.search_base)

    Base DN for user search (ldap.search_base)

  • search_filter(mail={{email}})Filter to find user by email (ldap.search_filter)

    Filter to find user by email (ldap.search_filter)

  • securefalseUse TLS for SMTP (mailer.secure)

    Use TLS for SMTP (mailer.secure)

    values: true, false

  • security.api_tokenopsimateShared secret for webhook authentication

    Shared secret for webhook authentication

  • security.private_keys_path../../data/private-keysDirectory for SSH private keys

    Directory for SSH private keys

  • server.host0.0.0.0Host interface to bind

    Host interface to bind

  • server.port3001Port the backend listens on

    Port the backend listens on

  • SMTP_FROMSender address (env var)

    Sender address (env var)

  • SMTP_HOSTSMTP server hostname (env var)

    SMTP server hostname (env var)

  • SMTP_PASSSMTP authentication password (env var)

    SMTP authentication password (env var)

  • SMTP_PORTSMTP port number (env var)

    SMTP port number (env var)

  • SMTP_USERSMTP authentication username (env var)

    SMTP authentication username (env var)

  • start_tlsfalseUse STARTTLS for LDAP (ldap.start_tls)

    Use STARTTLS for LDAP (ldap.start_tls)

    values: true, false

  • urlLDAP server URL (ldap.url)

    LDAP server URL (ldap.url)

  • useryour-email@domain.comSMTP username (mailer.auth.user)

    SMTP username (mailer.auth.user)

OpsiMate releases & version history

More in Monitoring & observability

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…