Blolabel
← Notes
analysis 5 min read

BlueLM-GUI trains on hundreds of real phones and 5,000 labelled failure samples; phoneshell runs one

Both projects agree that a simulator is not enough. BlueLM-GUI's answer is a fleet feeding a model. phoneshell's answer is a single iPhone feeding a leaderboard. Neither is a smaller version of the other; they keep different things from the same conviction.

The BlueLM-GUI technical report, submitted to arXiv on 11 September 2026 by Tong Ye and 42 co-authors, describes training a 35B-A3B mobile GUI agent on rollouts from "hundreds of real phones," with roughly 5,000 targeted samples covering 14 classes of anomalous device state folded back into training by what the paper calls an Error Correction and Derivation Module. phoneshell drives exactly one physical device, an iPhone 17 Pro Max on iOS 26.6, and keeps one row per attempt in site/results.json: a pass/fail verdict, a turn count, a cost, and the checks that ran. No phoneshell run has ever fed back into training anything, because phoneshell does not train a model at all. The two projects share a premise, real hardware over simulation, and solve nothing like the same problem with it.

Abstract technical illustration on a dark grid: a wide fan of many small glowing device icons on the left feeding into a single central processing node that loops back and widens into an upgraded output, beside one single small glowing device icon on the right connected only to a short line ending in a plain filing-tray icon with no loop back, cool blues with one amber accent

Three principles, one loop

BlueLM-GUI's authors organize the system around three stated principles. "Every Sample Matters" is a dual-track data pipeline with multi-system evaluation, built around the Error Correction and Derivation Module: rather than discarding a trajectory where the agent failed, the module turns it into usable training signal, including the roughly 5,000 samples across 14 anomalous-state classes cited above. "Every Rollout Is Real" is the training recipe itself: continual pre-training, supervised fine-tuning, and agentic reinforcement learning, run, in the paper's words, on "hundreds of real phones," which the authors contrast with sandbox training on the grounds that a sandbox causes "a distribution mismatch with production environments." "Every Query Evolves" is the evaluation side: a benchmark the authors describe as "quota-driven" across three axes, scored by what they call "Heterogeneous Triple-System Consensus," designed to be upgraded as the model improves rather than saturate the way a fixed benchmark does. The result the report leads with is MobileGUI-VBench at 87.4, which it says surpasses the best closed-source model by 5.1 points, putting that closed-source figure at roughly 82.3, plus AndroidWorld at 84.9, described as the best score among open-source models.

Read end to end, the loop is: real device rollout, in bulk, across a fleet; failure classified into one of 14 known anomaly types rather than thrown away; that classified failure becomes training data for the next model version; the benchmark used to measure the next model version is itself allowed to get harder. Nothing about phoneshell's own real-device methodology does any of that, and nothing in phoneshell's stated purpose calls for it to.

BlueLM-GUI's real-device-centric flywheel hundreds of real phones generate rollouts "every rollout is real" Error Correction & Derivation Module ~5,000 samples, 14 classes of anomalous device state failure becomes training data continual pre-train → SFT → agentic RL MobileGUI-VBench 87.4 (+5.1 over best closed-source, ≈82.3) AndroidWorld 84.9 quota-driven benchmark Heterogeneous Triple-System Consensus; upgraded as model improves Source: arXiv:2609.12394, read 15 October 2026. The loop repeats: each model version's failures feed the next one's data.

What phoneshell keeps from a run

phoneshell's own real-device methodology runs one iPhone 17 Pro Max on iOS 26.6 through its 80-task suite and records exactly the fields visible in site/results.json: task_id, model, passed, skipped, skip_reason, turns, seconds, cost_usd, checks, scaffold, started_at. There is no field for a screenshot trail, no raw action log, and no classification of why a failed task failed beyond whatever a human reads off the checks array by hand. A failed phoneshell task is not an anomaly sample; it is a line in a leaderboard. Nothing downstream of that line retrains a model, because phoneshell does not ship a model, it grades whichever one a user points at the phone. That is a complete and defensible design for an evaluation harness, and it is also the reason the comparison with BlueLM-GUI is not "phoneshell is smaller," it is "phoneshell and BlueLM-GUI keep different things on purpose."

DimensionBlueLM-GUIphoneshellSource
Purpose of the real-device datatrain and retrain a model (35B-A3B)grade whichever model a user suppliesarXiv:2609.12394 abstract; phoneshell/bench/runner.py
Device fleet"hundreds of real phones"one, iPhone 17 Pro Max, iOS 26.6arXiv:2609.12394 §3; phoneshell houseFacts
What a failed trajectory becomesone of 14 classified anomaly types, ~5,000 samples, used as training dataa passed: false row with whatever checks ranarXiv:2609.12394 §3; site/results.json schema
Benchmark used to measure progress"quota-driven," upgraded as the model improvesfixed 80-task suite, counted from environments/*.yamlarXiv:2609.12394 §4; environments/*.yaml
Headline scoresMobileGUI-VBench 87.4; AndroidWorld 84.9not comparable; different benchmarks, different purposearXiv:2609.12394 abstract
BlueLM-GUI's reported scores 0 20 40 60 80 87.4MobileGUI-VBench ≈82.3best closed-source 84.9AndroidWorld Source: arXiv:2609.12394 abstract, read 15 October 2026. 82.3 is derived from the stated 5.1-point gap, not stated directly.

What it means for anyone reading a fleet number

Check it yourself

# what a phoneshell run actually records
python3 -c "import json; d=json.load(open('site/results.json')); print(list(d['runs'][2].keys()))"
grep -n "houseFacts" -A10 content-engine/ios-agents.json

# confirm phoneshell has nothing resembling a training or retraining step
grep -rliE "fine.?tun|reinforcement learning|training data|checkpoint.pt" phoneshell/ || echo "no matches"

# BlueLM-GUI's own numbers
curl -s https://arxiv.org/abs/2609.12394 | grep -i "hundreds of real phones\|MobileGUI-VBench\|AndroidWorld"
# full report: https://arxiv.org/html/2609.12394

What would prove this wrong

We claim phoneshell records no information from a run that could feed back into retraining any model, and that it runs on exactly one physical device. The first is wrong if any future commit to phoneshell/bench/runner.py or its results schema adds a field for a classified failure cause or a stored trajectory; the second is wrong if the project's houseFacts are updated to describe more than one physical rig. We also derived BlueLM-GUI's "best closed-source" figure of approximately 82.3 from its stated 5.1-point gap rather than reading it directly off a table; that derivation is wrong if the full paper states a different closed-source baseline score. We will check content-engine/ios-agents.json's houseFacts and the BlueLM-GUI repository, if one is published, by 31 January 2027 and revise this comparison if either has changed.

Sources