We are currently organizing the code for SENTINEL. If you are interested in our work, please star our project.
SENTINEL is a benchmark for formally evaluating physical safety of foundation model-based embodied agents across three complementary levels:
- Semantic interpretation of safety requirements
- High-level planning under those requirements
- Physical trajectory execution in a simulator
Unlike prior safety evaluations that rely on heuristics or subjective LLM judgments, SENTINEL grounds safety requirements in formal temporal logic (e.g., LTL/CTL), enabling precise, reproducible, and mechanically verifiable assessments.
This repository (SENTINEL-Physical-Safety-Benchmark) contains the trajectory-level SENTINEL instantiation in ALFRED (AI2-THOR). It implements an evaluation pipeline that runs an embodied agent in simulation, records traces, and checks them against CTL safety specifications.
Install requirements(conda):
$ conda create -n ai2thor python==3.10
$ conda activate ai2thor
$ pip install -r requirements.txtEvaluate model on single traj:
# Setup API_KEY (default is openrouter api)
$ export API_KEY="your_api_key_here"
$ python models/eval/eval_llm_astar.py --debug --traj_file data/json_2.1.0/atomic/open_close_simple_Microwave_None_None_3/trial_T20260124_202018_427257_863224/traj_data.jsonEvaluate model on all data
# Setup API_KEY
# LLM eval
$ bash scripts/run_all.sh
# For VLM eval, add --vlm flag in run_all.sh before runningCTL full pipeline (single task)
python safety_eval/ctl_full_pipeline.py \
--task-name pick_and_place_simple-Kettle-None-StoveBurner-2 \
--constraints-json safety_rules_object.jsonCTL pipeline (model-driven / convenience mode)
python safety_eval/ctl_full_pipeline.py --model-name openai/gpt-5# Check if thor works
python scrips/check_thor.py
# If it doesn't work try setting up Xvfb for AI2-THOR
# Start Xvfb on display :99
Xvfb :99 -screen 0 1024x768x24 -ac +extension GLX +extension RANDR +extension RENDER &
export DISPLAY=:99
# Then change DISPLAY constant value to the screen number (99 here) in gen/constants.pyAlso, checkout this guide: Setting up THOR on Google Cloud
This project is licensed under the MIT License.
If you find the dataset or code useful, please cite:
@misc{zhan2026sentinelmultilevelformalframework,
title={SENTINEL: A Multi-Level Formal Framework for Safety Evaluation of Foundation Model-based Embodied Agents},
author={Simon Sinong Zhan and Yao Liu and Philip Wang and Zinan Wang and Qineng Wang and Yiyan Peng and Zhian Ruan and Xiangyu Shi and Xinyu Cao and Frank Yang and Kangrui Wang and Huajie Shao and Manling Li and Qi Zhu},
year={2026},
eprint={2510.12985},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2510.12985},
}

