Local Model Benchmarks

Local test machine: Apple M5 Pro · 64 GB unified memoryRun window 29 September — 18 October 202622 recorded runs

17 October 2026 · Agentic task loop · video edit

Custom Characters Promo · TensorFold native (Zig) 1.0.12

Session partial Local run

The orchestrator ended COMPLETE_WITH_GAPS after 8 h 36 min of run time. 18 tasks are done and the project's verify passes 25 checks, but the second and last final review asked for three more fixes that were not made: captions cover the call-to-action button and the result card's name, and a label overlaps the form footage. The render passes 15 of 20 hidden acceptance cases. It leaves out the generation wait and the dark call screens, which the Opus 5.5 render of the Spanish brief did not, but its captions vanish in pauses and two of its texts are hidden.

Opening frame of the vertical promo: a child's drawing of a vampire with sparkles, the headline What if their drawing could talk to them? and the first caption
Custom Characters Promo · TensorFold native 1.0.12 · rendered video, hook at 1.5 s

What was checked

  • Bootstrap was accepted on its first session: 32 requirements, 12 task cards and a verify script. T001 (the composition skeleton) was later split twice into 5 smaller tasks.
  • Each task was accepted only after verify --all and verify --task <ID> passed and a fresh reviewer returned ACCEPT. One review returned CHANGES (T010). Final review cycle 1 added T013 and T014; cycle 2 added T015, T016 and T017, which the two-cycle limit left undone.
  • verify covers ./hf lint and ./hf check, the asset hashes, the chosen source windows against the timings in the notes, a draft render's size, frame rate and length, and stills at each beat and spoken sentence for the reviewers.
  • Independent check after the run: verify --all passed 25/25 in 55 s (limit 240 s). The committed render is 1080×1920, 30 fps, 20.000 s with audio, and was made after the last composition change.
  • Hidden acceptance cases: 15 of 20, read from the render with ffprobe, macOS Vision OCR at 4 frames a second and SSIM. Failed: sentence 3's caption collides with the result card's name; captions are hidden in two pauses (2.75–4.0 s and 8.25–8.75 s); the 'Pick a voice' label is partly covered; the caption plate covers 'Create yours at PapaNoel.chat'; the last caption fades out during the final hold. Each failure was confirmed on the frames.
  • Visual judgement (operator, not a score): the story reads beat by beat and the footage windows are correct, but the footage is small on a large dark field and the text collisions are visible. It is plainer than the Opus 5.5 render of the Spanish brief, which had a background per scene, a numbered label and headline in every scene and offset gold shadows, and was made with a storyboard, the hyperframes-creative skill and seven revisions with a person.

Limits of this evidence

Three fixes were made during the run, each logged with a marker in the server log and the run log. (1) TensorFold 1.0.12 decodes JPEG only with libjpeg-turbo 3.1.4.1 and Homebrew had 3.2.0; the operator built 3.1.4.1 into a private prefix and set TENSORFOLD_LIBTURBOJPEG in the LaunchAgent. (2) Sessions read more images than one request may hold (4 by default, up to 28 seen); the server was restarted with --vision-max-images 24 --vision-image-tokens 16384. (3) The orchestrator now continues a session in a fresh one when the engine refuses an image (count, size or format, such as the supplied WebP banner), with the refusal in the new session's prompt; before that change it retried the same session, which under greedy decoding failed the same way until the run blocked. The journal records orchestrator-changed twice, paused twice and image-continuation twice. The supplied footage, narration, generated project, transcripts and engine logs stay on the workstation.

Configuration

The model, serving engine and agent used for this execution.

Recorded configuration and setup details
FieldValueDetail
Model · primaryQwen 3.8 27B · primary · reasoning mediumMLX affine 4-bit, group size 64 · 4 bpw
Checkpoint · primaryTensorFold/Qwen3.8-27B-MLX-4bitprimary model artifact · revision 22d8d538154e0e5b6f8dcb1fcc74a60a0798104c
Model · drafterQwen 3.8 27B DFlash2 · drafterLoaded with --drafter-bits 4
Checkpoint · drafterz-lab/Qwen3.8-27B-DFlash2drafter model artifact · revision 50307d4c4cde6860d4eee73e2547cd786fe8e8a4
RuntimeTensorFold native (Zig) 1.0.12 · OpenAI-compatible server, one stream, greedy sampling (--temperature 0), DFlash2 drafts, 6 GiB prompt cache above the 70% memory cap, vision on, Recall on (empty at start); image limits raised during the run to 24 images and 16,384 image tokens a request modeinference engine and exact build
HarnessPi coding agent, driven by the task-loop orchestrator, with four HyperFrames skills 1.1.0the agent or client that drove the run
HardwareApple MacBook Pro · 64 GB unified memoryhardware recorded for this execution
WorkloadCustom Characters Promo · revision 1First run of the Custom Characters Promo brief and the first video brief for the task-loop orchestrator: a 20-second vertical promo edited with HyperFrames from supplied footage and a supplied English narration, offline, with the hyperframes-core, -cli, -animation and -audio skills loaded in every session. The engine and the orchestrator were fixed three times during the run, so it is recorded as a first attempt, not a protocol result.
Context window65,536 tokensmaximum context configured for the serving runtime
Repetitions1executions recorded for this workload; one means an indicative result, not an estimate

Inference measurements

Engine-side rates for this run. Each figure states its own statistic; figures from different runs are not interchangeable.

Inference measurements: recorded value and measurement definition
MetricValueDefinition
TTFT · median3.02 sMedian engine-measured TTFT from TensorFold /metrics deltas around each response (p90 21.4 s). · n=1005
Decode · output-weighted53.4 tok/sOutput tokens / engine decode seconds over requests with engine timings (output-weighted). · n=1005
Draft acceptance32.08 %Accepted DFlash2 draft tokens / drafted tokens from TensorFold /metrics over requests with engine timings. · n=1005 · 540,101 accepted of 1,683,735 drafted.
Swapped in during the run0.25 GiBPages swapped in during the run, summed over sessions (vm_stat Swapins deltas), over 905 samples. · n=905 · Memory pressure reached warning at least once and free memory fell to 0.05 GiB. Chrome, Codex and Claude desktop apps were open during part of the run.

Agent session counters

Agent-wide usage totals. These include reasoning, tool calls and waiting, and are not model decode speed.

Agent session counters: recorded value and measurement definition
MetricValueDefinition
Run elapsed515.5 minFrom the orchestrator's preflight (2026-10-16 17:40:47 UTC) to the end (2026-10-17 11:25:07 UTC), less 9 h 5 min blocked on engine errors and 3 min of operator pauses. · n=1 · Blocked 18:53–21:13 UTC on JPEG decoding and 01:55–08:40 UTC on a WebP image; the clock time was 17 h 44 min.
Agent sessions83 sessionsFresh Pi sessions started by the orchestrator: 1 bootstrap, 55 builder, 19 reviewer, 3 split, 3 replan, 2 final reviewer. · n=1
Sessions ended by engine errors20 sessionsSessions that ended on an engine error. 19 were refusals (HTTP 400) of an image the model had read: 7 on JPEG decoding (libjpeg-turbo version), 4 on the per-request image limit and 8 on the supplied WebP banner. One (064) was a request aborted at its second context compaction. All were rerun or continued without counting as task attempts. · n=1
Model responses1,034 responsesAssistant responses with usage records across all sessions: 947 tool calls, 60 stops, 6 cut at the output limit and 21 engine errors. · n=1
Matched model requests1,013 requestsPi responses with token usage matched in order to TensorFold's done summaries by prompt total, cached tokens and output tokens, from the log marker at the server's launch for this run. · n=1 · Every such response matched. 90 matched keys also occur elsewhere in the log, because retried sessions replayed identical turns under greedy decoding; each repeat appears once per session in the same order, so the ordered assignment is forced. Twelve done summaries stay unassigned: the orchestrator's preflight, the operator's image probes after each restart, and three responses cut by pauses.
Tool calls1,355 callsPi tool calls across all sessions. · n=1
Context compactions9 compactionsPi context compactions across all sessions. · n=1

Context and token counters

Token totals as reported by the harness or engine. Cached and cumulative figures are not additive with fresh input.

Context and token counters: recorded value and measurement definition
MetricValueDefinition
Maximum prompt context50,162 tokensLargest engine-reported prompt among matched requests. · n=1013
Fresh input2,510,550 tokensSum of Pi uncached input counters across all sessions. · n=1
Cached input22,991,394 tokensTensorFold cached prompt tokens over matched requests (equal to Pi's cache-read counters). · n=1013
Prompt-cache token share90.16 %Cached prompt tokens / prompt tokens over matched requests (22,991,394 / 25,501,944). · n=1013
Output tokens661,829 tokensPi output usage across all sessions; includes reasoning tokens. Equal to TensorFold's output over matched requests. · n=1
of which reasoning output411,544 tokensPi-reported reasoning tokens included in output tokens (62.2%). · n=1

Recorded check counters

Counts from the checks recorded with this run.

Recorded check counters: recorded value and measurement definition
MetricValueDefinition
Tasks completed18 tasksTask cards with status done at the end. Three more were split; three added by the last final review stayed todo. · n=1
Reviews returning changes1 reviewsTask reviewer sessions that returned CHANGES (T010). Both final reviews also returned CHANGES. · n=1
Project checks passing25 checksChecks passed by the project's own ./verify --all at the end (55 s in the independent run). · n=1
Hidden acceptance cases passed15 checksHidden acceptance cases passed, of 20: written from the brief, never shown to the model, and read from the rendered video. · n=1 · No reference render that passes all 20 exists yet. Rescored after two case corrections made with the Sushi attempt (mix compared with the narration alone; OCR tolerant of misread monospace capitals): unchanged at 15.
Request records & provenance

Per-request numbers are not published. All 1,013 Pi responses with token usage were matched in order to the TensorFold 1.0.12 log; TTFT, decode and draft counts come from TensorFold /metrics read before and after each response (1,005 responses).

Run ID: 2026-10-16-qwen38-27b-tensorfold-1012-pi-task-loop-hyperframes-promo

One execution, with checks transcribed from the retained record. A completed session is not a quality score. Measurement method · All runs