Meridian Foods is a fictional food distributor in the UAE with two chilled
warehouses, 20 fridge units, six reefer trucks and a day’s worth of deliveries.
In the demo a compressor fails on a frozen unit. Within one cycle the agent
opens a maintenance ticket, pages the site engineer, tries to hold the orders
whose stock is in that unit, and then stops to ask the duty manager whether it
may quarantine the unit. The manager answers from Monitoring, the run resumes,
and the fridge locks.
Nothing in the loop is special-cased. It is a normal Cruq agent with a
knowledge base, an MCP tool and a pause tool, running on a schedule.
What is in it
The escalation ladder
The rules live in the knowledge base and, in short form, in the agent’s instructions.- Level 1, the agent acts: acknowledge an alert, open one ticket per incident, correct a wrong setpoint, hold an order that has not left the warehouse, page an engineer during working hours.
- Level 2, the agent asks first: lock a fridge (quarantine), reroute a truck, page an engineer at night. The question carries the unit, the reading and how long it has been out of band, the stock at risk and its value, what the agent will do, and what happens if nothing is done.
- Level 3, the agent only recommends: destroy stock, recall a loaded truck, stop a site.
ask_human tool. The run checkpoints, shows as paused in
Monitoring with the question, and continues from the same state when someone
answers. See long-running agents.
Eval results
The suite gives the agent situations like “compressor stopped 20 minutes ago, now -12 C and rising, two orders still picking” and scores the answer against the ladder. Same prompt, same tools, three models:
The cheapest model skipped escalations it should have made, so the agent runs
on gpt-4.1-mini. That is the decision evals are for: see
Evals.
Run it yourself
The simulator has a director endpoint for scripting incidents. With its API key:$IOT_URL flip the unit to locked.
Other incidents: door_left_open, truck_traffic (with minutes),
reefer_fault, power_cut (target dip or mussafah), forklift_low.
POST /api/director/reset starts a fresh day.
Build your own
The pattern transfers to anything with sensors and actuators: a plant, a fleet, a building, a lab. Expose the world as an MCP server, write the procedures as knowledge, give the agent anask_human tool, and put the physical actions
behind it. The simulator’s source is in apps/iot-sim of the Cruq repository
and is a reasonable template for a stand-in world while the real integration is
being built.
