尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
An AI agent that investigates incidents in a running system, finds the root cause with
evidence and proposes a fix. Nothing is changed until a person approves it; after the
fix, it checks that the system has actually recovered.
It runs against a small online shop built for the purpose: four microservices with
real traffic, logs and metrics. Faults are injected for real (a deploy with a bug, a
bad config change, a database lock, a provider going slow), so every incident has a
known right answer to grade the agent against.查看完整 README ↗An AI agent that investigates incidents in a running system, finds the root cause with evidence and proposes a fix. Nothing is changed until a person approves it; after the fix, it checks that the system has actually recovered.
It runs against a small online shop built for the purpose: four microservices with real traffic, logs and metrics. Faults are injected for real (a deploy with a bug, a bad config change, a database lock, a provider going slow), so every incident has a known right answer to grade the agent against.
Try the demo · Open in Codespaces · Run it locally
The demo replays real investigations recorded from the agent: you pick a fault, watch the agent work and take the decision yourself. To run the agent live, use Codespaces or your own machine.
Each fault in the catalogue (13 types, 23 variants) is injected, investigated and graded against the injector's record of what really happened. A diagnosis counts as right when the proposed action would actually fix the incident.
| Model | Right action | Right service | Right commit | Decoy commit blamed |
|---|---|---|---|---|
| Claude Sonnet (via Claude Code) | 23 / 23 | 23 / 23 | 23 / 23 | 0 |
make eval runs the catalogue and prints this table, per difficulty and per split
(dev variants were used while building the agent, exam variants were held back).
flowchart LR
subgraph shop [The shop]
S[shop] --> U[users] & I[inventory] & P[payments]
T[traffic] --> S
end
INJ[Injector] -- faults --> shop
shop -- metrics --> PROM[Prometheus]
shop -- logs --> LOKI[Loki]
WEB[Web console] -- start / approve --> API[Agent API]
API -- queue --> W[Agent worker]
W -- read-only tools --> PROM & LOKI & GIT[Company repo] & PG[(Postgres)] & RAG[(Docs index)]
W -- events --> API -- live stream --> WEB
W -- approved action --> INJ
| Part | Built with |
|---|---|
| The shop and the injector | Python, FastAPI, Postgres, Redis, Docker Compose |
| Observability | Prometheus, Loki, Alloy, Grafana |
| The agent | LangGraph, OpenAI or Claude, pgvector, Postgres checkpoints |
| Agent API | FastAPI, a Redis queue, Redis Streams and Server-Sent Events |
| Web console | Next.js, React, Tailwind |
| Evals | Fault catalogue with ground truth, run end to end |
make rag-eval) rather than by default.Running the full catalogue end to end surfaced issues that unit tests would not have:
config/users.env (commit 5eb28d2) instead of the bare SHA; the action was right but
could not be executed. The executor now finds the SHA in the text.Requirements: uv, Docker with the compose plugin, Node 24
and make. The synthetic data lives in a second repository, next to this one:
git clone https://github.com/antoniolorenz01/Incilot
git clone https://github.com/antoniolorenz01/incilot-data
cd Incilot
echo "OPENAI_API_KEY=sk-..." >> .env # optional: dry runs need no key
echo "OPENAI_MODEL=gpt-6-luna" >> .env
make install && (cd web && npm ci)
make up # the shop, observability and the agent (about 2 GB of RAM)
make web # the console at http://localhost:3001
With a Claude subscription instead of an OpenAI key, the agent can run on Claude Code:
set LLM_PROVIDER=claude-code in .env and keep make claude-bridge running in
another terminal.
To give someone temporary access from your machine, start the console with the demo's limits on and open a public tunnel (free, no account needed):
DEMO_LIMITS=on make web
cloudflared tunnel --url http://localhost:3001
Deploying the recorded demo (free, on Vercel) or the live one (on a server) is described in infra/deploy.md.
sim/ The shop (microservices, traffic, logs, metrics) and the fault injector
agent/ The agent: tools, document search, API and worker
evals/ Runs the catalogue, grades the agent and records demo runs
web/ The web console (Next.js)
docs/ The shop's own documentation, which the agent searches
infra/ Postgres, Prometheus, Loki/Alloy, Grafana, Caddy and the deploy guide
compose.yaml The whole environment; compose.prod.yaml adds the public setup
The synthetic data (the company's Git history, the fault catalogue with its ground truth and the runbooks) lives in incilot-data.
make check # lint and tests
make fmt # auto-format
make up / down # start or stop everything (make clean also deletes the data)
make logs # follow the logs
make smoke # inject each fault, check its symptom shows up, recover
make investigate # run the agent against whatever is happening right now
make eval # run the catalogue and grade the agent (one investigation per variant)
make rag-eval # measure the document search configurations
make record # record investigations for the demo
make web # the console at http://localhost:3001
| Service | What it does | Data |
|---|---|---|
shop | Customer entry point: catalogue and orders; orchestrates the rest | Postgres + Redis |
users | User profiles | Postgres + Redis |
inventory | Catalogue, stock and reservations (restocks every 30 s) | Postgres |
payments | Charges against a simulated provider (about 3 % declined) | Postgres |
traffic | Virtual shoppers that buy non-stop | — |
An order: shop checks the user, looks up the product, reserves stock, charges and
confirms. If the charge fails, the reservation is released. Every service logs JSON
with a request_id that travels between services and exposes metrics on /metrics.
| Tool | URL | What for |
|---|---|---|
| Shop | http://localhost:8000/docs | The shop's API |
| Injector | http://localhost:8100/docs | Inject and recover faults |
| Agent | http://localhost:8200/docs | Start, follow and approve investigations |
| Prometheus | http://localhost:9090 | Metrics |
| Loki | http://localhost:3100 | Logs ({service="shop"}) |
| Grafana | http://localhost:3000 | Explore metrics and logs |