crisis-room / README.md
hemankkk's picture
Upload folder using huggingface_hub
5c13070 verified
|
Raw
History Blame Contribute Delete
2.79 kB
metadata
title: Crisis Room
emoji: 🚨
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false
license: mit

Crisis Room — Production Incident Response RL Environment

Built for the Meta × Scalar × HuggingFace OpenEnv Hackathon, April 2026

Every engineer knows the feeling. It's 3am. PagerDuty fires. Five services are down. Revenue is bleeding. You have logs, alerts, and ten minutes to figure out what broke.

Crisis Room is an RL environment where an agent learns to be that engineer — reading alerts, checking logs, running diagnostics, and restoring service as fast as possible.


What the agent does

The agent receives a live incident: active alerts, service statuses, and an environment message. It must investigate the root cause and fix it within a step budget. Eight actions are available:

check_logs · run_diagnostic · restart_service · rollback_deployment · scale_up · notify_team · escalate · mark_resolved

The faster and more accurately it resolves the incident, the higher the reward.


Three difficulty levels

Easy (8 steps) — Single service down, root cause visible in logs. Example: DB connection pool exhausted, SSL certificate expired.

Medium (10 steps) — Cascading failure across multiple services. Example: Redis OOM taking down checkout, auth, and inventory simultaneously. Memory leak from a bad deployment.

Hard (12 steps) — Silent data corruption or intermittent DNS failure. No obvious alerts. All services reporting healthy. Agent must run diagnostics to find the pattern.


Reward function

Component Weight Description
Resolution 40% Service restored with correct fix
Investigation 30% Relevant logs and diagnostics checked before fixing
Efficiency 20% Fewer steps = higher score
Communication 10% Team notified, escalated when appropriate
Wrong restarts penalty -0.1 per unnecessary action

Rewards are non-sparse — partial score is returned at every step so the agent gets a signal throughout the episode.


Baseline scores (Qwen/Qwen2.5-72B-Instruct, zero fine-tuning)

Task Score
easy-incident 0.500
medium-incident 0.840
hard-incident 0.467
Average 0.602

Post fine-tuning scores (GRPO, on-site training) — to be updated at hackathon


Running locally

# Start the server
cd server
PYTHONPATH=/path/to/crisis_room uvicorn app:app --host 0.0.0.0 --port 8000

# Run inference
HF_TOKEN=your_token python3 inference.py

API

POST /reset          {"difficulty": "easy"|"medium"|"hard"}
POST /step           {"action": {"action_type": "...", "target": "..."}}
GET  /tasks          List all 3 tasks
GET  /health         Health check