{
  "slug": "studio-or-spark",
  "lab_number": 20,
  "title": "For a lab, the software lag is the cost.",
  "type": "editorial",
  "status": "published",
  "sponsor": null,
  "author": "Keith Townsend",
  "date": "October 18, 2026",
  "date_iso": "2026-10-18",
  "layers": [
    "layer0",
    "layer2c"
  ],
  "axes": [
    {
      "instrument": "4plus1",
      "layers": [
        "layer0",
        "layer2c"
      ],
      "has_dapm_table": true
    }
  ],
  "supersedes": [],
  "superseded_by": null,
  "corrects": [],
  "corrected_by": [],
  "vendors": [
    {
      "key": "apple",
      "role": "hw"
    },
    {
      "key": "nvidia",
      "role": "hw"
    },
    {
      "key": "deepseek",
      "role": "model"
    },
    {
      "key": "anthropic",
      "role": "harness"
    }
  ],
  "themes": [
    "serving-economics",
    "accelerator-lock-in",
    "operating-cost-of-ownership"
  ],
  "finding": "One Mac Studio with an M5 Ultra and 256 GB served the same 156 GiB DeepSeek V4 Flash checkpoint that needed two clustered DGX Sparks, cleared the same certified pool 22 of 22, and cost less, but took about twice as long per agentic turn at two concurrent sessions. The Spark pair ran speculative decoding on this model; the Mac serving stack cannot yet run it without an open memory bug.",
  "video": null,
  "lab_detail": "https://labs.layer2c.com/downloads/studio-or-spark-lab-detail.md",
  "question": "A 256 GB Mac Studio holds a model that needs two NVIDIA DGX Sparks clustered together, costs less than the pair, and doubles as a desk machine. The claim tested here is that one serving box can replace two for local agentic work. It holds on capacity, on solves and on list price. It loses on wall time once two agentic sessions share the box. For a lab, the larger cost is that this model reached Apple silicon less complete than it reached NVIDIA.",
  "load": "The certified 22-task Python repair pool from Labs 011 to 014, driven by a headless Claude Code harness at two concurrent sessions, against DeepSeek V4 Flash 0731 in its original FP8 weights. The same checkpoint files served from a Mac Studio under oMLX, compared with the two-Spark arms of Lab 014. Plus synthetic decode, prefill, concurrency and long-generation gates on the Studio.",
  "verdict": {
    "scope": "One Mac Studio (M5 Ultra, 36-core CPU, 80-core GPU, 256 GB unified memory, 4 TB), one serving stack (oMLX v0.7.1rc1 on MLX 0.32.4), one model (DeepSeek V4 Flash 0731, FP8), one pool run. The comparator is the two-Spark venue from Lab 014, measured in August on vLLM with speculative decoding on. The two venues differ in hardware, serving software and speculation together, so the speed comparison is directional. Turn counts and summed task time are not comparable across the two arms, because the model reasoning reached the agent on one path and not the other. Timing is compared per turn, and even that is partly confounded, as stated below. Prices are US list prices as of October 2026, partly from third-party captures of the vendor configurators.",
    "independence": "Self-funded editorial. The Mac Studio was bought by the practice, and both DGX Sparks were bought at retail for Lab 014. No vendor commissioned, funded or previewed this lab or had any say in it. Apple and NVIDIA hardware are both under test here and both are criticised by name. Anthropic Claude Code is the agent harness on both arms. No vendor named here is a client of this practice.",
    "calls": [
      {
        "kind": "do",
        "text": "Buy the Studio if you want one system for a model this size and can accept slower turns once sessions overlap. It held the 156 GiB model in one box, cleared 22 of 22, and costs $12,299 as tested against $13,900 for two Sparks before the interconnect cable. Plan a separate host or VM for agent code: this lab did not run the harness on the Studio."
      },
      {
        "kind": "dont",
        "text": "Do not buy it as lab or development infrastructure if you already run NVIDIA. At two concurrent sessions each agentic turn took 35.5 seconds on the Studio against about 18 on the Spark pair, and eleven weeks after the Spark stack served this model with working speculation, the Mac stack still cannot run speculation on it."
      },
      {
        "kind": "dont",
        "text": "Do not trust the serving defaults on Apple silicon. Speculative decoding was on by default with an open memory bug, reasoning effort defaulted to low rather than the maximum the Spark arm ran (the pool was set to maximum), and the server renamed its own process so restarts failed without an error. None of it raised a warning."
      }
    ]
  },
  "objection": {
    "q": "The Studio decodes faster than the Spark pair. How does it lose on speed?",
    "a": [
      "It decodes faster under one condition. With speculative decoding off on both, the Studio decoded a single stream at 40.6 tok/s against the pair at 27.1, about 1.5x. Faster unified memory is the likely reason; bandwidth was not isolated. The two figures come from different prompts and settings, so treat the ratio as directional.",
      "The pair does not run with speculation off. Its production configuration drafts three tokens ahead with the model’s own multi-token prediction head and reaches 52.0 tok/s on one stream, 1.28x the Studio. The Studio’s server has the same feature, and on this model it fails with an open bug that strands about 63 GB of GPU memory during long tool-calling turns, so the lab ran with it off.",
      "The rest of the gap opened under load. At two concurrent sessions the Studio dropped from 40.6 to 29.4 tok/s per stream on short prompts, and its server averaged 20.0 tok/s over the pool, where average contexts ran 35K to 49K tokens. The pair delivered 31 to 34 tok/s of output per stream on the same pool.",
      "So the doubling is speculation plus the Studio losing more speed to concurrency and context. This lab did not separate how much comes from each, or how much of the Studio’s concurrency loss is its GPU and how much is the serving software."
    ]
  },
  "numbers": [
    {
      "label": "Certified repair pool, Mac Studio",
      "value": "22 of 22",
      "note": "One run, sf_dsv4_studio_r1, 2026-10-17, one continuous pass. Zero timeouts, zero session errors, zero out-of-scope edits. The Spark pair cleared 22 of 22 on both of its Lab 014 runs; its first run was resumed after an interruption, skipping five tasks already done."
    },
    {
      "label": "Seconds per agentic turn, two sessions",
      "value": "35.5 against 17.6 to 18.6",
      "note": "Studio against the Spark pair, PAR=2, contexts of 35K to 49K tokens. Summed task time divided by turns. Output per turn 602 against 578 and 591 tokens."
    },
    {
      "label": "Effective output per stream under load",
      "value": "17.0 against 31.1 to 33.6 tok/s",
      "note": "Total output tokens divided by summed task time. Includes prefill and harness time. The Studio server’s own generation average over the pool was 20.0 tok/s."
    },
    {
      "label": "Single-stream decode, speculation off on both",
      "value": "40.6 against 27.1 tok/s",
      "note": "Studio short prompt, temperature 0, 1,024 tokens out, against the pair’s controlled profile (1K prompt, 512 tokens out, no speculation). Directional: the settings differ. Lab 014 published 35 tok/s single-stream for the pair from an earlier measurement."
    },
    {
      "label": "Single-stream decode, production configuration",
      "value": "40.6 against 52.0 tok/s",
      "note": "Studio with speculation off (temperature 0, short prompt, 1,024 tokens out) against the pair with three-token multi-token-prediction drafting (sampled, maximum reasoning effort, 8K output). Directional: the settings differ."
    },
    {
      "label": "Aggregate output at concurrency",
      "value": "84.2 @4 against 211.4 @16",
      "note": "Studio 58.6 at two streams and 84.2 at four, the highest tested. Pair 132.2 at six and 211.4 at sixteen. No matched concurrency point above one."
    },
    {
      "label": "Cold prefill",
      "value": "1,263 to 1,354 against 1,929 tok/s",
      "note": "Studio at 22K and 66K tokens with unique prompts. Pair at 131K."
    },
    {
      "label": "Prefix cache, share of prompt tokens served",
      "value": "90.9% against about 98%",
      "note": "Studio server counter, 17.7M prompt tokens over 511 requests including preflight, against the pair’s run-2 cache counters."
    },
    {
      "label": "Long-generation gate, Studio",
      "value": "24,000 tokens",
      "note": "One request, no Metal resource error, 35.9 tok/s. Twice the failure point of a known MLX buffer leak on this model."
    },
    {
      "label": "Setup, first remote login to pool task running",
      "value": "1 h 19 min",
      "note": "First token at 30 minutes. Hands-on steps: enable remote login, install one SSH key, install Xcode. The clock starts after the checkpoint had migrated onto the Studio, and the run reused the Spark’s harness and proxy. Lab 014: about a day, plus an interconnect project."
    },
    {
      "label": "Reasoning reaching the agent",
      "value": "756,398 against 0 characters",
      "note": "Studio against the Spark arm. Same harness, same proxy version and configuration; the endpoint the proxy called on vLLM was not confirmed. Tool calls 463 against 836, one per turn on both. Tool errors 10 against 26."
    },
    {
      "label": "Price, US list, October 2026",
      "value": "$12,299 against $13,900",
      "note": "Studio as tested (80-core GPU, 256 GB, 4 TB) against two DGX Sparks at $6,950 each (8 TB between them), before the interconnect cable. A 1 TB Studio is $10,799. Third-party configurator captures; check live."
    },
    {
      "label": "Metered spend",
      "value": "$0",
      "note": "Owned hardware throughout."
    }
  ],
  "opened": [
    {
      "q": "Does speculative decoding on the Studio close the gap?",
      "a": "It is the largest single lever on this workload, about 2x on the pair. oMLX ships it and it fails on this model with an open memory-stranding bug. When that is fixed, the pool should be rerun with speculation on. If per-turn time approaches the pair’s, the Studio becomes one simpler box at near-pair speed for low-concurrency buyers. It would close the gap for this model only, and the next model restarts the lag."
    },
    {
      "q": "Does seeing the model’s reasoning change how many actions an agent takes?",
      "a": "The Studio sessions saw their model’s reasoning and took 45 percent fewer tool calls than the Spark sessions, which received empty reasoning blocks from the same proxy. That is a correlation across two venues. The test is one venue with reasoning stripped from what the agent receives. If actions climb, reasoning passthrough is an apparatus variable that affects every earlier arm run through this proxy, and turn counts across the corpus need auditing."
    }
  ],
  "not_proved": [
    "One Studio pool run. The Spark pair was run twice and did not flip a task. The Studio’s 22 of 22 is a single observation, and this pool moves by about two tasks between identical runs for some models.",
    "The speed comparison changes hardware, serving software and speculation at once. Per-turn timing and per-stream output measure the two venues as configured, not the hardware alone. The 1.5x decode figure with speculation off on both is the closest hardware-only number, and it compares the Studio’s short-prompt gate against the pair’s controlled profile, not identical prompts.",
    "Turn counts and elapsed time are not comparable across the arms, because reasoning reached the agent on the Studio and not on the Spark pair. Summed task time (4.78 hours against 4.19 to 4.49) is used only as the denominator of the per-turn and per-stream figures, which normalize by turns and output tokens. Even those are partly confounded: the Spark’s extra turns were small, high-cache-hit steps.",
    "One of the pair’s two runs was resumed after an interruption, skipping five tasks already done, as Lab 014 records. Its summed task time is used here, its elapsed time is not. Elapsed time for the clean runs, 2 hours 27 minutes on the Studio against 2 hours 10 minutes on the pair, is reported in the detail and not used as a venue comparison, because the pair took 77 percent more turns.",
    "Where reasoning dropped is not fully located. The proxy called oMLX’s Responses API; which endpoint it called on vLLM was not confirmed.",
    "Synthetic decode and prefill figures on the two venues come from different prompt lengths, temperatures and output lengths. The ratios are directional.",
    "The Spark figures come from Lab 014 runs in August and the qualification record of the same serving kit. They were not re-measured alongside the Studio.",
    "The concurrency loss may not apply to every model. A dense 31B model measured separately on the same Studio barely slowed at two sessions, 44.9 to 43.1 tok/s per stream on 1,024-token runs, against 40.6 to 29.4 for DeepSeek V4 Flash. That comparison does not separate architecture from size and precision (an 18.4 GB 4-bit checkpoint against 149.8 GB FP8), and the dense model’s own pool run on the Studio has not completed: its first attempt stopped in a tool-call loop and is still being diagnosed.",
    "How the Studio scales past four concurrent requests was not measured, and whether its concurrency loss comes from the GPU or from oMLX’s batching is not separated. Holding the hardware fixed and changing the serving software would separate it.",
    "The Studio was not used as a single box here. The harness ran on a DGX Spark because bench code is not run on a machine on the personal network. A buyer replacing two Sparks still needs a separate host or VM for agent code.",
    "The setup-effort comparison is confounded in the Studio’s favor: the checkpoint was already on disk before the clock started, the harness and proxy were already running on a Spark, and the model’s quirks and the reference configuration were already known from Lab 014. A cold start would take longer. How much longer was not measured.",
    "Responsiveness of the Studio as a desk machine while serving was not measured here. During the pool it held about 166 GB wired with about 90 GB and its CPU cores free. Peak cases, a four-way batch or a long cold prefill during office work, remain unmeasured. Lab 021 observed ordinary desk use during lighter pools (15 GB and 105 GB models) but did not instrument it either.",
    "Prices are US list prices observed in October 2026, partly from third-party captures of the vendor configurators. The Spark price changed twice in 2026, and the Spark’s current $6,950 was confirmed by the author rather than a vendor page. The interconnect cable is not priced. Storage differs: 8 TB across two Sparks against 4 TB on the Studio as tested.",
    "Which platform makes the better lab is a requirements judgment, not a measurement. This author weighs testing new models as they arrive, wall time under concurrent load, and two Sparks already owned. Another architect weighing one system, list price, desk use or single-session work could read the same results and choose the Studio.",
    "No claim about Apple silicon generally, other models, or other serving stacks. One model, one server version, one configuration."
  ],
  "executive_summary": [
    "A Mac Studio with an M5 Ultra and 256 GB of unified memory served DeepSeek V4 Flash 0731 from its original FP8 checkpoint, the same files Lab 014 served across two clustered DGX Sparks. The serving stack was oMLX, a community-built server on Apple’s MLX framework, which maps the checkpoint’s FP8 weights and block scales onto MLX’s native mxfp8 format without dequantizing. The model loaded in 18.8 seconds at 157.7 GB resident with the speculative head included, and sat at 149.8 GB with it off, the configuration the pool ran.",
    "On the certified 22-task repair pool, driven by the same Claude Code harness, proxy and launcher shape as Lab 014, the Studio cleared 22 of 22 with no timeouts, no session errors and no out-of-scope edits. The Spark pair cleared 22 of 22 on both of its runs. On solves the two venues tie.",
    "The Studio decoded faster with speculation off on both venues: 40.6 tok/s single-stream against 27.1. With each venue in its production configuration the order reversed, because the Spark pair drafts with the model’s multi-token prediction head and reaches 52.0 tok/s. Speculation is off on the Studio because the oMLX implementation has an open memory-stranding bug on this model that matches an error the venue raised on its first request. The two decode figures come from different prompt lengths, temperatures and output lengths, so the ratios are directional.",
    "Under the agentic load, two sessions at a time, the pair turned work around about twice as fast: 17.6 to 18.6 seconds per turn against 35.5, and 31.1 to 33.6 tok/s of effective output per stream against 17.0. Output per turn was nearly identical, 578 to 602 tokens. Most of the gap is decode speed under concurrency and long context. An estimated 2 seconds per turn is prefill: from the cache counters, the Studio re-prefilled about 3,150 uncached tokens per turn against about 820 on the pair.",
    "Compute-bound work favored the pair. Cold prefill ran at 1,929 tok/s on the pair at 131K tokens against 1,263 to 1,354 on the Studio at 22K to 66K. Aggregate output reached 211.4 tok/s on the pair at 16 concurrent requests. The Studio reached 84.2 at four, the highest it was tested, and the two venues share no measured concurrency point above one. On this workload prefill mattered little, an estimated 2 seconds of a 35.5-second turn, because the prefix cache served 91 to 98 percent of every turn’s context.",
    "Setup effort favored the Studio, with confounds. The Studio went from first remote login to a pool task behind a passing preflight in 1 hour 19 minutes, first token at 30 minutes, with no networking, clustering or container work. Lab 014 took about a day after the vendor’s multi-node playbook deadlocked, plus a separate interconnect project. The comparison favors the Studio unfairly: its clock started after the checkpoint had migrated onto it, and it reused the Spark’s harness, proxy and reference configuration.",
    "The Studio’s costs were quiet. Speculative decoding was on by default with the open bug. Reasoning effort defaulted to low rather than the maximum the Spark arm ran, visible only as a prompt-token count of 9 instead of 101. The server process renamed itself, so stop-by-name commands matched nothing and restarts failed while the old process kept serving. None of these raised an error. The Spark side had silent failures of its own, described next.",
    "The two arms also differed in what the agent saw. On the Spark arm every reasoning block that reached the harness was empty: 321 blocks, zero characters. On the Studio arm the reasoning arrived intact, 756,398 characters. The Studio sessions took 45 percent fewer tool calls, 463 against 836, at one tool call per turn on both, with 10 tool errors against 26. Turn counts and elapsed time therefore compare two apparatus states, not two venues. The loss sat on the Spark path: the proxy version and configuration were identical, and which endpoint the proxy called on vLLM was not confirmed.",
    "At October 2026 US list prices, the Studio as tested costs $12,299. Two Sparks cost $13,900 at $6,950 each, plus the interconnect cable, with 8 TB of storage between them against the Studio’s 4 TB. A 1 TB Studio is $10,799. Adding a workstation to the Spark side, about $4,100 for a 14-inch M5 Max laptop, only counts if the Studio really replaces one. This lab did not test it as a desk machine. Lab 021 observed the author using it as one while it served a 105 GB model, without instrumenting responsiveness."
  ],
  "dapm": [
    {
      "instrument": "4plus1",
      "reading": "portability",
      "layer": "layer0",
      "placement": "Retained",
      "cells": {
        "studio": "Retained",
        "pair": "Retained"
      },
      "note": "Retained on both, because the same checkpoint files, the same harness and an OpenAI-compatible interface moved from NVIDIA hardware to Apple silicon without converting the files, so nothing at this layer tied the workload to one vendor’s silicon. The Studio’s loader maps the weights to its native format at load time. Commodity NVIDIA hardware is Retained by the instrument’s rule. On the Studio the runtime is Apple-only, but it is open source and served the unmodified checkpoint. The software lag on Apple silicon is a cost of the venue, not a cession of authority."
    },
    {
      "instrument": "4plus1",
      "reading": "portability",
      "layer": "layer2c",
      "placement": "Retained",
      "cells": {
        "studio": "Retained",
        "pair": "Retained"
      },
      "note": "Retained on both, because open weights ran on self-operated serving with the configuration written down. Both serving stacks are community-built, a pinned vLLM image on the pair and oMLX on the Studio, so on both venues somebody in the organization has to own the runtime."
    }
  ],
  "seam_map": null,
  "writeup": [
    "The pitch for the Studio is consolidation. Lab 014 needed two DGX Sparks and a 200 Gb/sec link to hold DeepSeek V4 Flash 0731, a 156 GiB mixture-of-experts checkpoint. A Mac Studio with 256 GB of unified memory holds it in one box, costs less than the pair, and is also a workstation. This lab tested whether one box replaces two for local agentic work, and on which measures.",
    "The Studio served the original FP8 checkpoint, the same files the Sparks ran, through oMLX, a community-built server on Apple’s MLX framework. Upstream MLX does not support this model architecture yet. Support sits in an unmerged pull request, and oMLX ships it as a patch. The server maps the FP8 weights and their block scales onto MLX’s native mxfp8 format at load time, so nothing was dequantized to 16-bit and the model fit at 149.8 GB resident with speculation off. Whether that mapping is bit-exact was not verified.",
    "Before the pool, the venue passed four gates. A long generation of 24,000 tokens completed without error, which matters because a known MLX buffer leak killed this model at about 11,500 tokens. A tool call parsed and round-tripped. Cold prefill measured 1,263 to 1,354 tok/s at 22K and 66K tokens. Single-stream decode measured 40.6 tok/s.",
    "The serving envelope was diffed against the run-time configuration file from the Spark arm rather than reconstructed from the published record, which does not state it. That diff found two divergences. The Spark arm ran three-token speculative decoding with the model’s own multi-token prediction head, and it ran maximum reasoning effort. oMLX defaults to low effort, so the Studio was set to maximum and verified by prompt length. Speculation was left off, because oMLX’s implementation on this model has an open bug that strands about 63 GB of GPU memory during long tool-calling turns, and the venue raised the matching error on its first request.",
    "The pool ran through the same harness, proxy and launcher as Lab 014 at two concurrent sessions, with the harness on a Spark and the model reached over a relayed tunnel. It cleared 22 of 22 with no timeouts and no session errors. No other model ran on the Studio during the pool. A file copy capped at 60 MB/s wrote to its disk for about four minutes in two intervals mid-run, and the GPU wired-memory limit stayed at Apple’s default.",
    "Speed under load went to the pair. Each turn produced about 600 output tokens on both venues, and the prefix cache supplied 91 to 98 percent of each turn’s context, so turn time is mostly decode. With speculation off on both, the Studio decoded a single stream about 1.5x faster. With the pair’s speculation on, the pair led a single stream by 1.28x. At two concurrent sessions over long contexts the Studio’s per-stream decode fell to about 20 tok/s, and the pair turned work in about 18 seconds per turn against 35.5. The Studio also re-prefilled an estimated four times as many uncached tokens per turn, worth about 2 seconds. The doubling is speculation plus concurrency and context loss on the Studio, in proportions this lab did not separate.",
    "Compute-bound work also went to the pair. Two GB10 GPUs prefilled faster, at a longer context than the Studio was tested, and reached 211.4 tok/s aggregate at sixteen concurrent requests. The Studio was tested only to four, where it reached 84.2. Whether the Studio’s scaling is limited by the GPU or by oMLX’s batching path was not separated here.",
    "The two arms differed in one more way, and it was found only by reading the session logs. On the Spark arm, every reasoning block the harness received was empty. On the Studio arm, the reasoning came through. The proxy version and configuration were identical. The proxy called oMLX’s Responses API, and which endpoint it called on vLLM was not confirmed, so the loss sits in how the Spark’s backend and that route returned reasoning. The Studio sessions took 45 percent fewer actions at the same one tool call per turn. That makes turn counts and elapsed time incomparable across the arms, and it is why this lab compares timing per turn. Per-turn timing is not fully clean either: the Spark’s extra turns were small, high-cache-hit steps, which flatters its per-turn time somewhat. Whether visible reasoning caused the reduction was not tested. The loss happened on the Spark path, silently, through the same proxy, which is a mark against that stack’s maturity too.",
    "The Studio’s bring-up was faster, from a warmer start. It took 1 hour 19 minutes from first remote login to a pool task running, against about a day for the Spark pair plus a separate interconnect project. No step on the Studio failed outright the way the Spark playbook did. Stock MLX could not load the model, as its open pull request already says, and the community server’s defaults were wrong in three silent ways. The time it lost went to a redundant download and a restart failure caused by the server renaming its own process. The Studio also started with advantages the Spark pair did not have: the checkpoint on disk, the harness and proxy already running on a Spark, the model’s quirks known, and a reference configuration to diff against. Without that reference the effort default would not have been caught.",
    "On list price the Studio is cheaper, before normalizing for storage, the cable, power or an execution host. At October 2026 US list prices the Studio as tested costs $12,299. Two Sparks cost $13,900 after NVIDIA’s repricing to $6,950 per unit, before the interconnect cable. The Studio’s price advantage grows by about $4,100 only for a buyer for whom it genuinely replaces a workstation, which this lab did not test and Lab 021 observed but did not measure.",
    "For a lab the deciding difference is how this model reached each platform. On NVIDIA it was served with working speculation, though the Spark side was not clean: the vendor’s multi-node playbook deadlocked, the working image is community-built, only one of five candidate models qualified on the pair, one of its two pool runs was resumed after an interruption, and its proxy path dropped the model’s reasoning without an error. On Apple silicon the model runs only through a patch of an unmerged upstream change, with speculation not yet safe to enable. Basic availability was not much later: an MLX conversion of this release existed within days. Completeness is what lagged. The Spark serving kit was qualified with working speculation on August 1, 2026, and eleven weeks later upstream MLX still had no support for the model and the community server’s speculation path failed on it. That is one model. Treating it as the pattern a lab should plan for is a judgment, not a measurement, and it is the judgment this lab’s verdict rests on."
  ],
  "abstraction": [],
  "method": [
    "Self-funded. The Mac Studio was bought by the practice. Both DGX Sparks were bought at retail for Lab 014. No vendor was briefed, reviewed this, or was given advance sight.",
    "The repair pool, the reproduce-or-drop certification and the deterministic gate are the instrument used in Labs 011 to 014, unchanged, run through the same v1 Claude Code harness, the same litellm proxy version (1.93.0) and the same launcher shape as Lab 014. The launcher and serving configuration are recorded with the results.",
    "The Studio serving envelope was diffed against the Spark arm’s run-time configuration file, not reconstructed from the published record. Divergences are declared: speculation off, MLX key-value cache rather than NVFP4, oMLX rather than vLLM.",
    "Pins: oMLX v0.7.1rc1 (commit 7a5a3d7), MLX 0.32.4, mlx-lm git 94cdcae, custom Metal kernels built with Xcode 27.1 and the Metal Toolchain component, macOS 27.0.1. Checkpoint deepseek-ai/DeepSeek-V4-Flash-0731 revision 9e165c30, SHA-verified.",
    "The harness ran on a DGX Spark and reached the Studio through an SSH relay, because bench code is not run on a machine on the author’s personal network. The relay adds a LAN hop the Spark arm did not have. During the pool another lab’s harness sessions also ran on that Spark, and a file copy capped at 60 MB/s wrote to the Studio’s disk for about four minutes in two intervals. The Studio’s GPU wired-memory limit was left at Apple’s default.",
    "Public runbooks were consulted before the pool and are cited in the lab detail, including an independent M5 Ultra against DGX Spark comparison on a 4-bit conversion of the same model.",
    "The harness, the gate and the certification tooling are public. The assessment methodology, the vendor grades and the judgment that turns a score into a placement are not.",
    "The essay on this page was drafted by Claude Opus 5.5, an Anthropic model, from this record under the author’s voice specification, passed the deterministic post gate, and was validated by the author before publication. Anthropic’s Claude Code is the agent harness on both arms of this lab, so the drafting model’s vendor also appears on the bench."
  ],
  "assessments": [],
  "publisher": "The Advisor Bench LLC",
  "program": "Layer2C Labs",
  "url": "https://labs.layer2c.com/labs/studio-or-spark",
  "markdown_url": "https://labs.layer2c.com/labs/studio-or-spark.md",
  "json_url": "https://labs.layer2c.com/labs/studio-or-spark.json"
}
