AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Open-source AI Agents for Incident Management
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 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.