Skip to main content
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.
The pause is the 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:
Then run Cold-Chain Watch with “Check the cold chain now.”, answer its question in Monitoring, and watch the status page at $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 an ask_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.