Spaces:
Sleeping
Sleeping
| 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 | |
| ```bash | |
| # 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 | |
| ``` |