Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for Wacky Wheels Control Tower
What it does
Wacky Wheels Control Tower runs the operations control tower of a just-in-time automaker for the Hitachi "Hack the Highway" challenge. A coordinator and four specialist agents read each incoming event (late shipments, plant outages, defective part lots, digests that bundle several incidents), ground it on a knowledge graph built from the enterprise CSVs, and act through the provided enterprise server (POST /act) following policy_handbook.md.
How we built it
- The LLM reads, code decides. The model reads each message once: it classifies it, splits digests into incidents, and copies names and date phrases verbatim. Code resolves the names through an alias table and the graph, does the date arithmetic, finds the shipment or lot, checks consistency and applies the handbook.
- A second reader as a check. A deterministic rule reader reads every message too. When it grounds the same shipment, plant or lot to different records or dates, or finds an incident the model missed, the event goes to a human through
escalate. When the model is unavailable, the rule reader decides alone. - Model: IBM Granite 4.2 3B (
ibm-granite/granite-4.2-3b-q4-mlx, 4-bit MLX, Apache-2.0), run locally with mlx-lm 0.32.2. One call per event, temperature 0, thinking off. - Code: Python 3 standard library only.
- Outputs: the action log written by the official server, a summary with rule-by-rule reasoning per event, a full trace per event (readers, grounding, graph paths, tool calls), the ontology and knowledge graph export (JSON, Mermaid, GraphML), a self-contained control-tower dashboard, and a one-page design card.
Results
- Final run: 15/15 judged events pass the independent replay check; 879 tool calls (766 writes, 113 reads), 0 failed.
- Held-out messages (round 3, written and run once on frozen code): 15/17 handled exactly, no wrong write; the 2 misses were escalated.
- Model choice: on an 83-message bench, Granite 4.2 3B tied Qwen3.5 4B for the best score (77/83) with two thirds of its latency and 1 GB less memory; Qwen3.5 9B scored 74/83 and Qwen3.5 2B 64/83.
Challenges we ran into
The rule reader's cue words were written while reading the 15 judged events, so it is reliable on that wording and weak on new wording. An earlier version acted only when both readers agreed; on new messages that capped the system at the rule reader's recall (4/16 in the first held-out round). Making the LLM reading primary, with the rule reader as a disagreement check that escalates, removed that cap.
What's in the submission package
Source and tests, the final run (runs/final/), the robustness set and held-out rounds with their results, the LLM bench report, the design card, screenshots and a demo video (docs/demo/control_tower_demo.mp4).
Built With
- ibm-granite
- knowledge-graph
- mlx
- multi-agent
- python
