Skip to content

SentinelOps Arena

SentinelOps Arena is a multi-agent adversarial reinforcement learning environment for enterprise AI safety.

Core trick

Red-team attacker agent injects schema and policy drift while a blue-team worker and auditor are rewarded from environment state, not an LLM judge.

Tags

Description

SentinelOps Arena is a multi-agent adversarial reinforcement learning environment for enterprise AI safety. It simulates systems like CRM, Billing, and Ticketing with three agents: a Red Team Attacker, a Blue Team Worker, and an Auditor. The Attacker launches schema drift, policy drift, social engineering, and rate-limiting attacks, while the Worker must complete legitimate customer tasks without being manipulated. The Auditor reviews actions and flags violations with scored explanations. Rewards are computed directly from the environment state (no LLM-as-judge). Agents are trained with GRPO using four reward layers: format validation, approximate format scoring, action correctness with anti-gaming logic, and live environment execution with six-step attacker lookahead. Built on OpenEnv with FastMCP tools, the Worker learns to detect schema drift, verify policies before refunds, and reject social engineering, reducing attack success from 80% to under 20%.
nihalnihalani/sentinelops-arena★ 00 forksPythonCreated Mar 7, 2026 · last push Mar 8, 2026

README excerpt

---
title: SentinelOps Arena
emoji: "\U0001F6E1\uFE0F"
colorFrom: green
colorTo: red
sdk: gradio
sdk_version: 6.9.0
app_file: app.py
pinned: false
---

<div align="center">

# SentinelOps Arena

**Multi-Agent Adversarial Self-Play for Enterprise Security Training**

[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg?style=for-the-badge&logo=python&logoColor=white)](https://python.org)
[![OpenEnv 0.2](https://img.shields.io/badge/OpenEnv-0.2.x-purple.svg?style=for-the-badge)](https://github.com/meta-pytorch/OpenEnv)
[![Gradio 6.9](https://img.shields.io/badge/Gradio-6.9.0-orange.svg?style=for-the-badge&logo=gradio&logoColor=white)](https://gradio.app)
[![HuggingFace TRL](https://img.shields.io/badge/HF%20TRL-GRPO-yellow.svg?style=for-the-badge&logo=huggingface&logoColor=white)](https://huggingface.co/docs/trl)
[![Unsloth](https://img.shields.io/badge/Unsloth-2x%20Faster-green.svg?style=for-the-badge)](https://github.com/unslothai/unsloth)
[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=for-the-badge)](LICENSE)

[![FastMCP](https://img.shields.io/badge/FastMCP-19%20Tools-informational?style=flat-square)](https://github.com/jlowin/fastmcp)
[![Pydantic v2](https://img.shields.io/badge/Pydantic-v2-e92063?style=flat-square&logo=pydantic)](https://docs.pydantic.dev)
[![Tests](https://img.shields.io/badge/tests-54%20passing-brightgreen?style=flat-square)]()
[![Code Style](https://img.shields.io/badge/code%20style-ruff-000000?style=flat-squa

Team