Akmatori is an open-source AI incident response platform for SRE and DevOps teams. Automate alert triage, root-cause analysis, and governed remediation.
Developer toolsGo · TypeScriptGitHub @akmatoriOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Open-source AI Agents for Incident Management
Taken from the repository README
Loading the full README.
Read the full README ↗Self-hosted, AI-powered AIOps platform for SRE teams.
Ingests alerts from your monitoring stack, investigates them with LLM agents that reach your infrastructure through real tools, and executes remediation behind approval gates.
Website · Documentation · Quick Start · Architecture · Issues · Discord
| Provider | Models |
|---|---|
| OpenAI | GPT-6.1 Sol, GPT-6 (Sol / Astra / Luna), GPT-5.6 (Terra / Sol / Luna), GPT-5.5, GPT-5.5 Pro, GPT-5.4, GPT-5.4 Mini, GPT-5.3 Codex, GPT-5 Mini, o4-mini |
| Anthropic | Claude Fable 5.1 / 5, Opus 5.5, Sonnet 5.5, Opus 5, Sonnet 5, Opus 4.8 / 4.7, Sonnet 4.6, Haiku 4.5 |
| Gemini 3.1 Pro Preview, Gemini 3.5 – 3.8 Flash, Gemini 3.1 Flash Lite, Gemini 3 Pro / Flash Preview, Gemini 2.5 Pro / Flash, 2.0 Flash | |
| OpenRouter | 100+ models from every major lab |
| NVIDIA NIM | Llama 3.3 / 3.1 70B Instruct, Nemotron 3 Ultra, Nemotron 3.5 Lightning, Nemotron 3 Nano / Nano Omni, Llama 3.1 Nemotron 70B |
| MiniMax | MiniMax M3, M2.7, M2.7-highspeed |
| Ant Ling | Ling-2.6-1T, Ling-2.6-flash, Ring-2.6-1T |
| Custom / On-prem | Any OpenAI-compatible endpoint (GLM, Kimi, Mistral, LLaMA, vLLM, …) |
Model lists track the in-app picker; the model field is free-text, so newer model IDs work without an upgrade.
The recommended install pulls pre-built multi-arch images from GHCR — no git clone, no local build.
Prerequisites: Docker with Compose v2+, an API key for any supported LLM provider (or an on-prem OpenAI-compatible endpoint), and optionally a Slack App.
Download the release assets (compose file + nginx config):
mkdir akmatori && cd akmatori
curl -fsSLO https://github.com/akmatori/akmatori/releases/latest/download/docker-compose.yml
mkdir proxy && curl -fsSL -o proxy/nginx.conf \
https://github.com/akmatori/akmatori/releases/latest/download/nginx.conf
(Optional) Create an .env to pin a specific version or configure a corporate proxy. All secrets (POSTGRES_PASSWORD, JWT_SECRET, and the admin password) are auto-generated on first run, so the file is only needed for the overrides shown below:
cat > .env <<'EOF'
# AKMATORI_VERSION=1.2.0
# HTTP_PROXY=http://proxy.corp:3128
# HTTPS_PROXY=http://proxy.corp:3128
EOF
AKMATORI_VERSION defaults to latest. See Behind an HTTP proxy for proxy details.
Pull and start, then verify all services show "Up":
docker compose pull
docker compose up -d
docker compose ps
Open the web dashboard at http://localhost:8080 (username admin). The first visit runs a one-time setup wizard that lets you set the admin password.
Configure your LLM provider in Settings → LLM Provider.
(Optional) Connect Slack:
is_default_post on the channel that should receive alerts when an alert source does not pin one explicitly. can_post / can_listen decide whether the channel appears in the alert-source picker or is monitored for inbound mentions.(Optional) Schedule recurring runs in Cron Jobs: pick a schedule, write a prompt, attach the tools the agent is allowed to call, and point it at one of your Channels. Every tick runs as a full agent investigation under the cron-agent system skill.
Bump AKMATORI_VERSION in .env (or leave it unset to track latest) and:
docker compose pull
docker compose up -d
There are two independent concerns: pulling images through the proxy (a Docker daemon setting) and the running services egressing through the proxy at runtime (a compose environment: setting). Both must be configured or you'll get stuck partway through.
This is a Docker daemon-level setting — compose can't fix it from inside the file.
Linux + systemd:
# /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.corp:3128"
Environment="HTTPS_PROXY=http://proxy.corp:3128"
Environment="NO_PROXY=localhost,127.0.0.1,.svc,.local"
Then:
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker Desktop (macOS / Windows): Settings → Resources → Proxies.
Allowlist note: your corporate proxy allowlist must include pkg-containers.githubusercontent.com alongside ghcr.io. GHCR stores image manifests on ghcr.io and the actual blob layers on pkg-containers.githubusercontent.com — the most common GHCR-through-corporate-proxy footgun is "manifest pulls but blob downloads hang."
Set HTTP_PROXY / HTTPS_PROXY once in your .env (or in the shell that runs docker compose up); the api, mcp-gateway, and agent containers inherit them via the compose file. The default NO_PROXY bypasses internal service-to-service traffic (api↔postgres, agent↔gateway, etc.) so internal hops never hit the corporate proxy.
# .env
HTTP_PROXY=http://proxy.corp:3128
HTTPS_PROXY=http://proxy.corp:3128
# NO_PROXY defaults to the internal service names; override only if you need to add hosts.
The runtime HTTP_PROXY covers the API server's outbound calls (Slack), the agent worker's LLM API calls, and the MCP Gateway's HTTP-connector tools and external MCP-server connections. The MCP Gateway's built-in monitoring/CMDB tools (Zabbix, Grafana, VictoriaMetrics, PagerDuty, NetBox, Kubernetes, Catchpoint, Jira) ignore the env-var proxy by design and have their own per-tool proxy toggle in Settings → Proxy — enable those if your monitoring endpoints also need to go through the corporate proxy.
Akmatori uses a secure multi-container architecture:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Alert Sources │────▶│ API Server │◀───▶│ PostgreSQL │
│ (Prometheus, │ │ (Go backend) │ │ (encrypted │
│ PagerDuty, │ │ │ │ credentials) │
│ Datadog...) │ └────────┬────────┘ └─────────────────┘
└─────────────────┘ │
│ WebSocket
┌─────────────────┐ ▼
│ Slack Bot │◀───▶┌─────────────────┐ ┌─────────────────┐
│ │ │ Agent Worker │◀───▶│ MCP Gateway │
└─────────────────┘ │ (pi-mono + │ │ (SSH, APIs) │
│ subagents) │ │ │
└────────┬────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ LLM Providers │
│ (OpenAI, │
│ Anthropic, │
│ Google, etc.) │
└─────────────────┘
Security by design:
Runbook and memory search: runbooks and cross-incident memory live as markdown files mounted into the agent container (runbooks read-only, memory read-write). The main agent reaches them through pi-mono subagents — runbook-searcher for SOP lookup, memory-searcher for prior-incident recall, and memory-writer to record durable findings at the end of an investigation. The API materializes new memory files back into Postgres at incident completion.
Working on Akmatori itself? Build from source with the dev override, which restores the per-service build: blocks:
git clone https://github.com/akmatori/akmatori.git
cd akmatori
cp .env.example .env # edit ADMIN_PASSWORD / POSTGRES_PASSWORD
make dev # docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
make dev is the canonical maintainer entry point. The base docker-compose.yml alone has only image: references (the end-user pull flow); the docker-compose.dev.yml override adds the build: blocks back. Without the -f docker-compose.dev.yml argument, docker compose build is a no-op against a release install.
Self-hosted API docs: every install serves interactive documentation — Swagger UI at http://localhost:8080/api/docs and the raw OpenAPI 3.1 spec at http://localhost:8080/api/openapi.yaml (no authentication required).
Questions, setup help, and feature ideas: join the Akmatori Discord.
Ask in #help, share your skills in #skills-and-runbooks, and talk about the code in #dev.
Contributions are welcome! Start with docs/CONTRIBUTING.md and the
good first issue label.
Licensed under the Apache License 2.0.