Team Z
An env where an agent manages a team's calendar in a dynamic world.
Core trick
Seven interrupts fire at randomized steps, changing meetings and rules mid-episode, so the agent must detect drift and renegotiate schedules.
Description
An env where an agent manages a team's calendar in a dynamic world. Real personal assistants don't work in a static environment. You wake up, check your inbox, figure out what your boss needs, start scheduling — and then halfway through, someone cancels a meeting, HR rolls out a new policy, a client changes their mind, and your kid's school event moves up an hour.
We built an environment that actually tests for this.
The agent reads its inbox and sees tasks — messages from the boss, and clients. It has to piece together what needs doing. Then the ground shifts. Mid-episode, 7 interrupts fire at randomized steps that affect the rules of the environment, meetings scheduled, and events the agent believes have already occurred. The agent has to detect these changes and negotiate with others to fit events within the schedule.
Training agent took too long so no benchmarked agent, just environment.
lucas-j-zheng/open-env-assistant-environment★ 10 forksPythonCreated Mar 7, 2026 · last push Mar 18, 2026
README excerpt
# Calendar Personal Assistant — OpenEnv RL Environment
An RL environment where an agent manages a team calendar under shifting rules, evolving constraints, and ambiguous inbox requests. Built with the [OpenEnv](https://openenv.org) framework.
The agent must discover tasks from natural-language inbox messages, handle schema drift mid-episode (availability changes, new policies, meeting cancellations), negotiate with attendees who push back on proposals, and schedule around immovable personal events — all while 7 randomized interrupts fire at unpredictable steps.
## Quick Start
```bash
# Setup
cd personal_assistant
uv venv && source .venv/bin/activate
uv sync
# Start the environment server
uvicorn server.app:app --port 8000
# Test with random actions
python run_random.py
```
## Running the Agent
```bash
# Headless agent (Qwen2.5-7B via HuggingFace, requires HF_TOKEN)
python run_agent.py
# Agent with live web dashboard
python run_agent_live.py
# Then open http://localhost:8001
# Batch evaluation across multiple seeds (requires GROQ_API_KEY)
python run_batch_test.py
```
## Docker
```bash
cd personal_assistant
docker build -t personal-assistant:latest -f server/Dockerfile .
docker run -p 8000:8000 personal-assistant:latest
```
## How It Works
```
reset(seed) ──► Initial calendar + inbox (4-7 events, 11 messages, 2 personal events)
│
▼
step(action) ──► Fire interrupts (if due) ──► Dispatch tool call ──► Recompute 18 flags
│
▼
reward = flags_earned