Skip to main content

Foundation Model Token Cost Comparison: 14 Amazon Bedrock Models Measured with a Coding-Agent Ralph Loop

68 min read
Reference Benchmark

This benchmark was built with reference to the Ralph loop completion by model report by Jung Do Hyun (정도현, Roboco) and its public repository. The task (a RealWorld backend implementation), the completion criteria, the structure of the Ralph loop harness and the Hurl tests used for grading follow the reference report. Running on Amazon Bedrock in us-east-1, the builder-plus-verifier two-agent setup, five runs per model and Bedrock-price cost calculation were defined for this report. The numbers here are therefore not results of the reference report and were not measured under its conditions.

Measurement Status

Measured — 14 models ran five times each on Amazon Bedrock in us-east-1, 70 runs in total, of which 69 completed. Thirteen models ran between 2026-10-12 22:28 and 2026-10-13 00:18 UTC. Claude Fable 5.1 ran separately from 2026-10-13 04:36 to 05:21 UTC, after the account's data retention setting was changed. Every number in the tables was generated by script from the run records (token usage, grading results, session transcripts).

  • Completed69/7014 models
  • Cheapest modelGPT-6 LunaMedian $0.027 per run
  • Priciest modelGPT-6 AstraMedian $3.495 per run
  • Cost ratio (max/min)130.4×
  • Cache-read token share94%
  • Total spend$106.02results $88.42 + discarded first attempt $17.60

Overview​

This report measures, on Amazon Bedrock, how many tokens, how much cost and how many LLM requests each model needs for an AI coding agent to finish the same backend implementation task.

A Ralph loop gives the same prompt to a fresh agent session over and over. Only the repository (files and git history) carries over between iterations; the conversation does not. The agent therefore has to read the repository each time, work out what is left, and create a completion marker file when it judges the task done. The harness grades the result with the official tests after every iteration.

The models compared are frontier models callable on Amazon Bedrock (group 1) and Chinese open-weight models callable on Amazon Bedrock (group 2). Open-weight means the trained weights are published. The reference report ran each model with a different agent harness and provider API; this report ran every model with the same harness (pi coding agent) and the same API (Bedrock Converse), so the differences shown are differences between models under one set of conditions.

Summary​

  • Scope [fact]
    • 14 models ran the Ralph loop five times each on Amazon Bedrock in us-east-1, 70 runs in total.
    • Thirteen models ran between 2026-10-12 22:28 and 2026-10-13 00:18 UTC. Claude Fable 5.1 ran separately from 2026-10-13 04:36 to 05:21 UTC, after the account's Bedrock data retention mode was changed.
    • Each run used two agents built on the same model: a builder and a verifier.
    • Group 1 (frontier models callable on Bedrock) has 12 models; group 2 (Chinese open-weight models callable on Bedrock) has 2.
  • Completion [fact]
    • 69 of 70 runs passed the official grader, which requires all 13 RealWorld Hurl test files (154 requests) to pass.
    • 13 models completed 5/5; GLM 5.3 completed 4/5.
    • Every model's median Ralph iteration count is 1. Only 3 completed runs needed two or more iterations.
  • Cost [calculated: reported tokens × Bedrock US cross-Region inference prices as of 2026-10-12, median per run]
    • Lowest: GPT-6 Luna $0.027 and Claude Haiku 5.5 $0.065
    • Highest: GPT-6 Astra $3.495, Claude Fable 5.1 $2.566 and Claude Opus 4.8 $2.018
    • The most expensive model cost about 130 times as much as the cheapest.
  • Group comparison [calculated]
    • The 2 Chinese open-weight models (Kimi K3 $1.422 and GLM 5.3 $1.821) have a group value (median of model medians) of $1.621, about 2.0 times the frontier group value ($0.831).
    • They used about 2.3 times the output tokens, 2.3 times the total tokens and 1.5 times the LLM requests.
    • The spread inside the frontier group (about 130×) is far larger than the gap between groups. The two models rank 9 and 10 of 14 by cost (cheapest first) and were cheaper than Claude Opus 5, Claude Opus 4.8, Claude Fable 5.1 and GPT-6 Astra.
    • Cost decisions should therefore be made per model, not per group.
  • What drove cost [calculated]
    • 94% of all tokens in completed runs were cache reads: prompt prefixes stored by an earlier request and read again at a lower price than regular input.
    • Cache-read prices and volumes therefore mattered as much as output prices. For GLM 5.3, about 68% of the run cost came from cache reads.
  • Claude Fable 5.1 [fact/calculated]
    • It became callable after the account's us-east-1 data retention mode was changed from inherit to aws_review, and completed 5 of 5 runs.
    • Its median cost per run was $2.566, rank 13 of 14 (cheapest first). Its input/output prices ($11/$55) equal GPT-6 Astra's and are the highest among the Claude models.
    • In aws_review mode, prompts and outputs of Fable 5 and 5.1 requests are retained inside the AWS boundary for up to 30 days and may be reviewed by AWS staff. They are not shared with the model provider.
  • Comparison with the published benchmark [calculated]
    • Published runs of 6 models that the reference report ran with the same pi harness were re-priced at Bedrock prices and compared with this measurement.
    • Claude Opus 5.5, Claude Sonnet 5.5, Claude Haiku 5.5 and GPT-6 Sol matched this measurement (verifier included) within ±10%.
    • GPT-6.1 Sol came out about 1.6× higher and Kimi K3 came out about 1.9× higher.
  • Total spend [calculated]
    • Runs used in the results cost $88.42 (including $12.87 for Claude Fable 5.1); the discarded first attempt cost $17.60; the total is $106.02.
    • The largest per-model spend, GPT-6 Astra at $16.82, stayed within the $500 per-model cap. The actual bill must be checked in AWS Cost Explorer.

Notation​

This report labels values by their nature.

  • [fact]: Observed directly by running or querying something, with the time of observation.
  • [calculated]: Derived by a fixed rule, such as reported token counts multiplied by published prices. Not a billed amount.
  • [estimate]: Involves an assumption, which is stated.
  • [source]: The material a number or judgment rests on.

Values that cannot be confirmed from the material are not invented; they are marked "not verifiable" or "n/a".

Reference Benchmark and Task​

Task and completion criteria [source: the reference report, PROMPT-en.md and harness scripts in its repository]​

Every model receives the same task: implement the RealWorld backend API with TypeScript, Fastify, Prisma and SQLite. The scope covers JWT authentication, users and profiles, article CRUD, comments, favorites, tags and feeds.

A run counts as completed only if both conditions hold:

  1. The agent verifies the completion conditions itself and creates a .ralph-done file at the repository root.
  2. The harness grader re-runs the official RealWorld Hurl API tests (13 files, 154 requests) and all 13 files pass. Hurl is a test tool that runs HTTP requests and expected responses written in plain text files.

If .ralph-done exists but grading does not pass all 13 files, the harness deletes the file and starts the next iteration.

Safeguards​

The reference harness has three safeguards, and this report used the same values.

  • Stall watchdog: ends a session when none of the session transcript, logs or repository files change for 300 seconds.
  • Run time cap: ends a run that exceeds 20 minutes (1,200 seconds).
  • Cost guard: stops a run when the running cost estimate exceeds the configured limit.

Metrics in the reference report [fact: reference page data, checked 2026-10-12 15:40 UTC]​

For each condition (model × harness), the reference report gives per-run elapsed time, commit count, output tokens, cost at each provider's public list prices, completion and iteration count. It has 28 conditions, 19 models and 117 runs, all completed. Because its costs are not Bedrock prices, this report re-priced the published token counts of the same models at Bedrock prices for comparison.

Models Compared​

Classification and Bedrock availability [fact: checked 2026-10-12]​

Availability was checked in three steps. First, the model cards and per-Region availability tables in the Bedrock User Guide: none of the target models is offered on an in-Region endpoint in us-east-1, so they are called through the US geographic cross-Region inference profiles (model IDs starting with us.). Second, a read-only role in the test account queried each model's agreement, authorization, entitlement and Region availability. Third, a short prompt was sent to every model.

The Bedrock model cards describe Kimi K3 and GLM 5.3 as an "open-weight model" and an "open weight text generation model" [source]. GLM 5.3 is not in the reference report: its glm-5.3-flash is not offered on Bedrock, so GLM 5.3, the model from the same family that Bedrock offers, was added.

Model in the reference reportProviderClassificationus-east-1 BedrockIn this report
Opus 5.5AnthropicGroup 1 frontierCallableMeasured
Sonnet 5.5AnthropicGroup 1 frontierCallableMeasured
Haiku 5.5AnthropicGroup 1 frontierCallableMeasured
Fable 5.1AnthropicGroup 1 frontierCallable (requires account data retention aws_review)Measured
Opus 5AnthropicGroup 1 frontierCallableMeasured
Sonnet 5AnthropicGroup 1 frontierCallableMeasured
Opus 4.8AnthropicGroup 1 frontierCallableMeasured
gpt-6.1-solOpenAIGroup 1 frontierCallableMeasured
gpt-6-astraOpenAIGroup 1 frontierCallableMeasured
gpt-6-solOpenAIGroup 1 frontierCallableMeasured
gpt-6-lunaOpenAIGroup 1 frontierCallableMeasured
gpt-5.6-solOpenAIGroup 1 frontierCallableMeasured
kimi-k3Moonshot AIGroup 2 Chinese open-weightCallableMeasured
DeepSeek V4-ProDeepSeekChinese model (open-weight status not verified)Not offeredExcluded
DeepSeek V4.1-FlashDeepSeekChinese model (open-weight status not verified)Not offeredExcluded
qwen3.8-maxAlibaba (Qwen)Chinese model (open-weight status not verified)Not offeredExcluded
qwen3.8-27bAlibaba (Qwen)Chinese model (open-weight status not verified)Not offeredExcluded
glm-5.3-flashZ.AIChinese model (open-weight status not verified)Not offered (GLM 5.3 from the same family is offered)Excluded; GLM 5.3 measured instead
gemini-3.8-flashGoogleNeither groupNot offeredExcluded
GLM 5.3 (not in the reference report)Z.AIGroup 2 Chinese open-weightCallableMeasured

DeepSeek, Qwen and glm-5.3-flash were excluded because us-east-1 Bedrock did not offer them as of 2026-10-12. Whether their weights are published was not checked, because the lack of Bedrock availability is reason enough. gemini-3.8-flash is a Google model, belongs to neither group, and is not offered on Bedrock.

Claude Fable 5.1 and data retention​

When first checked, Bedrock rejected Claude Fable 5.1 with data retention mode 'default' is not available for this model [fact]. According to the Data retention page of the Bedrock User Guide (checked 2026-10-13), Claude Fable 5 and 5.1 can be called only when the account's effective data retention mode is aws_review or higher [source]. The setting is per account and per Region and cannot be changed with a request parameter.

After the account owner changed the us-east-1 data retention mode from inherit to aws_review (2026-10-13 04:25:43 UTC), the new value was confirmed with the query API and a short request succeeded; then the five runs were executed [fact]. The setting behaves as follows [source: same page].

  • It is set through the API, without a console page. Example: aws bedrock put-account-data-retention --region us-east-1 --mode aws_review. Setting --mode inherit reverts it.
  • It applies to every bedrock-runtime request the account sends in that Region.
  • Prompts and outputs of Fable 5 and 5.1 requests are retained inside the AWS boundary for up to 30 days and may be reviewed by AWS staff. They are not shared with the model provider.
  • Other models follow the modes they allow. For example, requests to a model that allows no retention (none) are not retained even with this setting on.
  • With cross-Region inference, retained data is stored in the Region that actually served the request.

Because this changes a data retention policy, anyone repeating the experiment needs the account owner to review this impact and decide.

Test Configuration​

Agent harness [fact]​

  • Every model used pi coding agent 0.87.1, the same version as the reference report's pi conditions.
  • Calls went through the Bedrock Converse API with thinking set to medium. Claude models receive adaptive thinking with effort=medium; for other models pi sends no reasoning field, so the model default applies.
  • One difference from the reference report: pi 0.87.1 has no settings for Claude Haiku 5.5, so Bedrock rejected its requests. haiku-5 was added to two model-name lists in the pi bundle (adaptive thinking and prompt caching). Requests to other models are unaffected.

Multi-agent setup​

The reference report runs a single agent and does not define a multi-agent setup. This report used the following one: two agents on the same model, run one after the other within each iteration, exchanging information through files in the repository.

  1. Builder: receives the reference PROMPT-en.md unchanged and implements the task. From the second iteration on, one sentence is appended telling it that a verification agent reviewed the previous iteration and that it should read REVIEW.md first. Only the builder may create .ralph-done.
  2. Verifier: receives a verification prompt in a fresh session, starts the server, runs the official Hurl tests itself and writes a verdict (PASS/FAIL), failing items, causes and a fix list to REVIEW.md. It does not modify other files.
  3. Grading: a grader with the reference report's criteria decides completion.

Isolation and credentials [fact]​

  • Every agent session and every grading pass ran in its own Docker container built from Amazon Linux 2023, Node 22.23.3, pi 0.87.1 and hurl 8.0.1.
  • Each container was limited to 8 GB of memory, 4 CPUs and 4,096 processes, and mounted only that run's repository, session records and home directory.
  • No AWS access keys entered the containers. They received only a Bedrock short-term API key, usable only for Bedrock calls and expiring within an hour, re-issued every 10 minutes.

Safeguards and scheduling [fact]​

  • Up to 30 iterations per run, a 1,200-second run time cap and a 300-second stall watchdog.
  • Cost limits of $100 per run, $500 per model and $7,000 overall.
  • The 13 models ran with up to seven models in parallel; each model's five runs were sequential. Claude Fable 5.1 ran alone after all other models had finished.
  • English prompts only.

Metric definitions​

  • Completed: a run that passed official grading. Medians and min/max use completed runs only.
  • Tokens [fact]: the usage Bedrock reported with each response, summed over all builder and verifier requests. Input means uncached input tokens; output includes reasoning tokens; cache reads and cache writes are counted separately.
  • Cost [calculated]: token counts multiplied by the prices under "Prices Applied". Cache writes use the 5-minute cache price, because pi does not set a cache duration and Bedrock defaults to 5 minutes.
  • Ralph iterations: the number of iterations in which the builder ran, the same definition as the reference report's iteration count.
  • LLM requests: the number of responses the model returned, the model-level "turns", builder and verifier combined.
  • Run time: from the start to the end of a run, including both sessions and grading. The reference report's elapsed time is the agent session time, a different definition.

Results​

Cost and time​

Each point is one model: the median cost per completed run (horizontal, log scale) against the median run time (vertical).

Scatter plot of cost per run (log x-axis) versus run time in minutes (y-axis) for 14 models.0.05.010.015.0$0.01$0.1$1$10Cost per run (USD, log scale)Run minutesKimi K3GLM 5.3Claude Sonnet 5Claude Fable 5.1Claude Opus 5GPT-6.1 SolGPT-6 AstraClaude Haiku 5.5Claude Opus 4.8Claude Opus 5.5GPT-6 LunaGPT-5.6 SolClaude Sonnet 5.5GPT-6 Sol
AnthropicOpenAIMoonshot AIZ.AI
FrontierChinese open-weight
Show data
ModelVendorGroupCost/run (median)Run minutes (median)
Claude Opus 5.5AnthropicFrontier$0.9076.1
Claude Sonnet 5.5AnthropicFrontier$0.3063.8
Claude Haiku 5.5AnthropicFrontier$0.0657.4
Claude Fable 5.1AnthropicFrontier$2.5668.9
Claude Opus 5AnthropicFrontier$1.9998.4
Claude Sonnet 5AnthropicFrontier$1.1799.7
Claude Opus 4.8AnthropicFrontier$2.0187.2
GPT-6.1 SolOpenAIFrontier$0.5278.1
GPT-6 AstraOpenAIFrontier$3.4957.9
GPT-6 SolOpenAIFrontier$0.2913.1
GPT-6 LunaOpenAIFrontier$0.0274.2
GPT-5.6 SolOpenAIFrontier$0.7554.1
Kimi K3Moonshot AIChinese open-weight$1.42210.5
GLM 5.3Z.AIChinese open-weight$1.82110.1
Cost per run versus run time by model
The x-axis is median cost per run on a log scale; the y-axis is median run time in minutes. Color encodes vendor and marker shape encodes group (circle = frontier, diamond = Chinese open-weight). Thin whiskers show each axis min–max range.
Source: This report's 70 measured runs (Amazon Bedrock us-east-1, 2026-10-12 to 2026-10-13 UTC); cost computed at prices checked on 2026-10-12.

Results by model​

Bars span the minimum–maximum of completed runs and the vertical tick marks the median. Switch metrics with the buttons and expand a row for per-run values. The table below gives the same values as numbers: medians over completed runs, with the minimum–maximum of the five runs in parentheses. Cost is [calculated]; the rest are [fact].

Metric
  • Completed run
  • Median
  • Timed out (no completed value)
Model
Completed-run range
Frontier
Claude Opus 5.55/5 completedMedian $0.907Show the five runs
Claude Opus 5.5 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done17.14122,8121,079,865$1.034PASS20
2done15.73020,467689,505$0.872PASS20
3done16.13020,402631,889$0.861PASS20
4done18.04523,7731,088,484$1.054PASS30
5done16.13520,667796,558$0.907PASS20
Claude Sonnet 5.55/5 completedMedian $0.306Show the five runs
Claude Sonnet 5.5 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done13.72513,929489,440$0.319PASS20
2done13.82414,407418,465$0.305FAIL10
3done14.12714,309603,161$0.328FAIL20
4done13.42514,161445,388$0.306PASS30
5done23.92312,677226,794$0.257PASS / PASS21
Claude Haiku 5.55/5 completedMedian $0.065Show the five runs
Claude Haiku 5.5 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done16.23942,8381,155,347$0.046PASS40
2done18.36252,7132,727,358$0.070PASS40
3done17.45054,2572,156,808$0.065PASS40
4done29.97767,5572,711,858$0.084FAIL / PASS70
5done17.04947,8742,032,399$0.059PASS60
Claude Fable 5.15/5 completedMedian $2.566Show the five runs
Claude Fable 5.1 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done18.94429,1871,238,647$2.796PASS20
2done110.95828,5671,564,029$2.837PASS20
3done16.93622,047787,229$2.118PASS70
4done19.34625,5861,183,739$2.555PASS20
5done18.44426,6931,062,192$2.566PASS60
Claude Opus 55/5 completedMedian $1.999Show the five runs
Claude Opus 5 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done16.85024,1651,138,625$1.635PASS20
2done17.35626,4361,452,008$1.876PASS20
3done114.09140,4783,851,983$3.726PASS30
4done110.36932,0531,769,367$2.258PASS20
5done18.45728,5031,555,721$1.999PASS20
Claude Sonnet 55/5 completedMedian $1.179Show the five runs
Claude Sonnet 5 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done111.310236,4923,758,302$1.412PASS10
2done18.38032,1422,787,977$1.128PASS20
3done19.78531,0743,059,198$1.179PASS20
4done18.17731,1272,909,277$1.155PASS20
5done111.49334,7604,019,069$1.455PASS20
Claude Opus 4.85/5 completedMedian $2.018Show the five runs
Claude Opus 4.8 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done16.66023,6801,749,809$1.971PASS20
2done16.65622,3161,675,909$1.859PASS20
3done19.67529,3332,735,633$2.678none21
4done17.66227,1401,873,275$2.134PASS20
5done17.26023,8041,877,268$2.018PASS20
GPT-6.1 Sol5/5 completedMedian $0.527Show the five runs
GPT-6.1 Sol — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done18.85322,8471,385,667$0.559PASS60
2done16.74618,4901,112,514$0.457PASS50
3done18.14520,6211,164,468$0.536PASS70
4done18.44422,1891,096,209$0.527PASS40
5done16.54919,0831,251,798$0.495PASS50
GPT-6 Astra5/5 completedMedian $3.495Show the five runs
GPT-6 Astra — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done17.54622,2211,325,517$3.495PASS40
2done17.34821,1511,208,409$3.153PASS40
3done17.94821,2991,139,606$3.102PASS60
4done18.85023,6851,340,715$3.511PASS50
5done18.05522,2501,479,623$3.562PASS50
GPT-6 Sol5/5 completedMedian $0.291Show the five runs
GPT-6 Sol — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done13.2328,428456,816$0.281PASS20
2done12.9369,605592,640$0.326PASS30
3done12.5337,967432,181$0.258PASS20
4done13.3519,441818,653$0.358PASS20
5done13.1418,544564,091$0.291PASS20
GPT-6 Luna5/5 completedMedian $0.027Show the five runs
GPT-6 Luna — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done15.85916,8471,227,597$0.029FAIL20
2done14.04314,265848,865$0.025PASS30
3done315.711345,6431,979,669$0.066FAIL / FAIL / PASS50
4done14.24313,8181,057,982$0.027PASS20
5done14.15014,272961,021$0.024PASS20
GPT-5.6 Sol5/5 completedMedian $0.755Show the five runs
GPT-5.6 Sol — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done14.13412,032664,801$0.818PASS40
2done15.82712,787524,621$0.755FAIL20
3done13.43210,223584,537$0.708PASS20
4done15.83112,480775,728$0.908FAIL20
5done13.72910,402505,256$0.667PASS30
Chinese open-weight
Kimi K35/5 completedMedian $1.422Show the five runs
Kimi K3 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done19.86139,5051,658,186$1.422PASS50
2done112.06147,0561,856,453$1.640PASS40
3done110.66535,0081,637,495$1.326PASS20
4done110.56340,0081,815,345$1.479PASS40
5done18.35732,6401,276,997$1.154PASS40
GLM 5.34/5 completedMedian $1.821Show the five runs
GLM 5.3 — Show the five runs
RunStatusIterationsMinutesLLM requestsOutput tokensTotal tokensCostVerifierCommitsSelf-terminated
1done110.37448,7932,876,201$1.402PASS40
2done19.98968,3864,364,926$2.062none41
3done18.28650,7773,389,784$1.595PASS50
4timeout220.18552,8922,491,280$1.433FAIL30
5done115.07377,9144,143,819$2.046PASS60
GroupModelCompletedCost per run (USD)Output tokensTotal tokensLLM requestsRalph iterationsRun time (min)
FrontierClaude Opus 5.55/5$0.907 ($0.861–$1.054)20,667 (20,402–23,773)796,558 (631,889–1,088,484)35 (30–45)16.1 (5.7–8.0)
FrontierClaude Sonnet 5.55/5$0.306 ($0.257–$0.328)14,161 (12,677–14,407)445,388 (226,794–603,161)25 (23–27)1–23.8 (3.4–4.1)
FrontierClaude Haiku 5.55/5$0.065 ($0.046–$0.084)52,713 (42,838–67,557)2,156,808 (1,155,347–2,727,358)50 (39–77)1–27.4 (6.2–9.9)
FrontierClaude Fable 5.15/5$2.566 ($2.118–$2.837)26,693 (22,047–29,187)1,183,739 (787,229–1,564,029)44 (36–58)18.9 (6.9–10.9)
FrontierClaude Opus 55/5$1.999 ($1.635–$3.726)28,503 (24,165–40,478)1,555,721 (1,138,625–3,851,983)57 (50–91)18.4 (6.8–14.0)
FrontierClaude Sonnet 55/5$1.179 ($1.128–$1.455)32,142 (31,074–36,492)3,059,198 (2,787,977–4,019,069)85 (77–102)19.7 (8.1–11.4)
FrontierClaude Opus 4.85/5$2.018 ($1.859–$2.678)23,804 (22,316–29,333)1,873,275 (1,675,909–2,735,633)60 (56–75)17.2 (6.6–9.6)
FrontierGPT-6.1 Sol5/5$0.527 ($0.457–$0.559)20,621 (18,490–22,847)1,164,468 (1,096,209–1,385,667)46 (44–53)18.1 (6.5–8.8)
FrontierGPT-6 Astra5/5$3.495 ($3.102–$3.562)22,221 (21,151–23,685)1,325,517 (1,139,606–1,479,623)48 (46–55)17.9 (7.3–8.8)
FrontierGPT-6 Sol5/5$0.291 ($0.258–$0.358)8,544 (7,967–9,605)564,091 (432,181–818,653)36 (32–51)13.1 (2.5–3.3)
FrontierGPT-6 Luna5/5$0.027 ($0.024–$0.066)14,272 (13,818–45,643)1,057,982 (848,865–1,979,669)50 (43–113)1–34.2 (4.0–15.7)
FrontierGPT-5.6 Sol5/5$0.755 ($0.667–$0.908)12,032 (10,223–12,787)584,537 (505,256–775,728)31 (27–34)14.1 (3.4–5.8)
Chinese open-weightKimi K35/5$1.422 ($1.154–$1.640)39,505 (32,640–47,056)1,658,186 (1,276,997–1,856,453)61 (57–65)110.5 (8.2–12.0)
Chinese open-weightGLM 5.34/5$1.821 ($1.402–$2.062)59,582 (48,793–77,914)3,766,802 (2,876,201–4,364,926)80 (73–89)110.1 (8.2–15.0)

Token composition (medians)​

ModelInput (uncached)OutputCache readCache writeTotalCache-read share
Claude Opus 5.57420,667722,47453,343796,55891%
Claude Sonnet 5.55414,161392,24038,933445,38888%
Claude Haiku 5.510452,7132,008,10793,1622,156,80893%
Claude Fable 5.19226,6931,096,62061,4371,183,73993%
Claude Opus 511428,5031,467,82159,2831,555,72194%
Claude Sonnet 517032,1422,960,55170,7043,059,19897%
Claude Opus 4.812023,8041,787,19258,4401,873,27595%
GPT-6.1 Sol9220,6211,074,52559,8431,164,46892%
GPT-6 Astra9622,2211,236,90158,0481,325,51793%
GPT-6 Sol728,544525,90130,494564,09193%
GPT-6 Luna10014,272982,78460,3911,057,98293%
GPT-5.6 Sol6212,032528,73349,072584,53790%
Kimi K342739,5051,556,40960,9691,658,18694%
GLM 5.316059,5823,612,80687,2813,766,80296%

Builder and verifier split (medians)​

"Self-terminated sessions" counts sessions in which the agent killed its own process and exited with code 143 (see "Limitations").

ModelBuilder LLM requestsVerifier LLM requestsBuilder costVerifier costVerifier shareSelf-terminated sessions
Claude Opus 5.52311$0.772$0.13515%0
Claude Sonnet 5.5178$0.269$0.03712%1
Claude Haiku 5.54110$0.061$0.0058%0
Claude Fable 5.13313$2.192$0.37515%0
Claude Opus 54414$1.773$0.20310%0
Claude Sonnet 57110$1.101$0.0615%0
Claude Opus 4.8529$1.887$0.1337%1
GPT-6.1 Sol388$0.442$0.05510%0
GPT-6 Astra419$3.196$0.2788%0
GPT-6 Sol287$0.259$0.04716%0
GPT-6 Luna4410$0.022$0.00725%0
GPT-5.6 Sol228$0.552$0.18124%0
Kimi K34716$1.300$0.1229%0
GLM 5.36416$1.729$0.0824%1

Group comparison​

Each value is the median of the group's per-model medians; parentheses show the range across models in the group. Group 2 has only 2 models, so per-model values are the better basis for comparison.

GroupModelsCost per runOutput tokensTotal tokensLLM requestsRun time (min)
Frontier12$0.831 ($0.027–$3.495)21,444 (8,544–52,713)1,174,104 (445,388–3,059,198)47 (25–85)7.3 (3.1–9.7)
Chinese open-weight2$1.621 ($1.422–$1.821)49,543 (39,505–59,582)2,712,494 (1,658,186–3,766,802)70 (61–80)10.3 (10.1–10.5)

Comparison with published runs of the same model [calculated]​

The published runs that the reference report ran with the same pi harness (single agent) were re-priced at Bedrock prices and compared with this measurement's medians (builder plus verifier). "Builder-only ratio" divides this measurement's builder cost, without the verifier, by the re-priced published cost. The other models are not compared directly because their published runs used other harnesses (Claude Code, Codex) or have no token records.

Dumbbell chart comparing, per model, the published single-agent pi run cost, this measurement's median cost, and the builder-only median. 6 models.$0.00$0.50$1.00$1.50Cost per run (USD)Claude Opus 5.51.01xClaude Sonnet 5.51.09xClaude Haiku 5.50.97xGPT-6.1 Sol1.59xGPT-6 Sol0.98xKimi K31.90x
Published runThis runBuilder only
Show data
ModelPublished runThis runBuilder onlyRatio (this/published)
Claude Opus 5.5$0.896$0.907$0.7721.01x
Claude Sonnet 5.5$0.282$0.306$0.2691.09x
Claude Haiku 5.5$0.067$0.065$0.0610.97x
GPT-6.1 Sol$0.332$0.527$0.4421.59x
GPT-6 Sol$0.298$0.291$0.2590.98x
Kimi K3$0.749$1.422$1.3001.90x
Same-model cost comparison (dumbbell)
For each model, compares the published single-agent pi run cost (re-priced at Bedrock prices), this measurement’s median cost, and the builder-only median on one axis. The multiplier at the end of each row is this median divided by the published cost.
Source: Published runs: token counts from the public repository by Jung Do Hyun (정도현, Roboco); this measurement: this report's measured tokens. Both priced at Amazon Bedrock us-east-1 prices checked on 2026-10-12.
ModelReference experimentPublished run, re-pricedThis measurementRatioBuilder-only ratioOutput tokens (published → this)
Claude Opus 5.5EXP-030$0.896$0.9071.010.8618,990 → 20,667
Claude Sonnet 5.5EXP-032$0.282$0.3061.090.9512,223 → 14,161
Claude Haiku 5.5EXP-038$0.067$0.0650.970.9154,120 → 52,713
GPT-6.1 SolEXP-034$0.332$0.5271.591.3313,251 → 20,621
GPT-6 SolEXP-030$0.298$0.2910.980.877,599 → 8,544
Kimi K3EXP-029$0.749$1.4221.901.7418,667 → 39,505

Model overview​

Card values are medians over completed runs, with the minimum–maximum in parentheses. The notes come from per-run metrics, exit codes, verifier verdicts and session transcripts.

  • Claude Opus 5.5

    Frontier · Anthropic
    us.anthropic.claude-opus-5-5
    Cost
    $0.907 ($0.861–$1.054)
    Cost rank
    7 of 14 (1 = cheapest)
    Output tokens
    20,667 (20,402–23,773)
    Total tokens
    796,558 (631,889–1,088,484)
    Cache-read tokens
    722,474 (558,985–1,008,530)
    Run minutes
    6.1 (5.7–8.0)
    LLM requests
    35 (Builder 23 / Verifier 11)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    15%

    All five runs completed in the first iteration, and the verifier said PASS every time.

  • Claude Sonnet 5.5

    Frontier · Anthropic
    us.anthropic.claude-sonnet-5-5
    Cost
    $0.306 ($0.257–$0.328)
    Cost rank
    4 of 14 (1 = cheapest)
    Output tokens
    14,161 (12,677–14,407)
    Total tokens
    445,388 (226,794–603,161)
    Cache-read tokens
    392,240 (178,476–548,677)
    Run minutes
    3.8 (3.4–4.1)
    LLM requests
    25 (Builder 17 / Verifier 8)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 2
    Verifier cost share
    12%

    Run 5: in iteration 1 the builder killed its own process (exit 143); it completed in iteration 2. Runs 2, 3: the server listened on another port than PORT, so the verifier said FAIL, but official grading passed.

  • Claude Haiku 5.5

    Frontier · Anthropic
    us.anthropic.claude-haiku-5-5
    Cost
    $0.065 ($0.046–$0.084)
    Cost rank
    2 of 14 (1 = cheapest)
    Output tokens
    52,713 (42,838–67,557)
    Total tokens
    2,156,808 (1,155,347–2,727,358)
    Cache-read tokens
    2,008,107 (1,034,505–2,581,355)
    Run minutes
    7.4 (6.2–9.9)
    LLM requests
    50 (Builder 41 / Verifier 10)
    Completed
    5/5
    Iterations
    1, 1, 1, 2, 1
    Verifier cost share
    8%

    Run 4: iteration 1 ended without a completion claim (grader 0/13 files); it completed in iteration 2. pi 0.87.1 sends a thinking format that Bedrock rejects for Haiku 5.5, so haiku-5 was added to two model-name lists in the pi bundle.

  • Claude Fable 5.1

    Frontier · Anthropic
    us.anthropic.claude-fable-5-1
    Cost
    $2.566 ($2.118–$2.837)
    Cost rank
    13 of 14 (1 = cheapest)
    Output tokens
    26,693 (22,047–29,187)
    Total tokens
    1,183,739 (787,229–1,564,029)
    Cache-read tokens
    1,096,620 (713,581–1,472,841)
    Run minutes
    8.9 (6.9–10.9)
    LLM requests
    44 (Builder 33 / Verifier 13)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    15%

    Ran alone, about 4 h 18 min after the other 13 models finished, once the account's us-east-1 data retention mode had been set to aws_review. All five runs completed in the first iteration, and the verifier said PASS every time.

  • Claude Opus 5

    Frontier · Anthropic
    us.anthropic.claude-opus-5
    Cost
    $1.999 ($1.635–$3.726)
    Cost rank
    11 of 14 (1 = cheapest)
    Output tokens
    28,503 (24,165–40,478)
    Total tokens
    1,555,721 (1,138,625–3,851,983)
    Cache-read tokens
    1,467,821 (1,057,977–3,729,782)
    Run minutes
    8.4 (6.8–14.0)
    LLM requests
    57 (Builder 44 / Verifier 14)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    10%

    All five runs completed in the first iteration, and the verifier said PASS every time. Run 3 cost about 1.9× the median (91 LLM requests, 1 iteration).

  • Claude Sonnet 5

    Frontier · Anthropic
    us.anthropic.claude-sonnet-5
    Cost
    $1.179 ($1.128–$1.455)
    Cost rank
    8 of 14 (1 = cheapest)
    Output tokens
    32,142 (31,074–36,492)
    Total tokens
    3,059,198 (2,787,977–4,019,069)
    Cache-read tokens
    2,960,551 (2,689,255–3,906,673)
    Run minutes
    9.7 (8.1–11.4)
    LLM requests
    85 (Builder 71 / Verifier 10)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    5%

    All five runs completed in the first iteration, and the verifier said PASS every time.

  • Claude Opus 4.8

    Frontier · Anthropic
    us.anthropic.claude-opus-4-8
    Cost
    $2.018 ($1.859–$2.678)
    Cost rank
    12 of 14 (1 = cheapest)
    Output tokens
    23,804 (22,316–29,333)
    Total tokens
    1,873,275 (1,675,909–2,735,633)
    Cache-read tokens
    1,787,192 (1,600,449–2,645,739)
    Run minutes
    7.2 (6.6–9.6)
    LLM requests
    60 (Builder 52 / Verifier 9)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    7%

    Run 3: the verifier session killed its own process (exit 143) and left no verdict; the run still passed official grading.

  • GPT-6.1 Sol

    Frontier · OpenAI
    us.openai.gpt-6.1-sol
    Cost
    $0.527 ($0.457–$0.559)
    Cost rank
    5 of 14 (1 = cheapest)
    Output tokens
    20,621 (18,490–22,847)
    Total tokens
    1,164,468 (1,096,209–1,385,667)
    Cache-read tokens
    1,074,525 (1,011,677–1,302,871)
    Run minutes
    8.1 (6.5–8.8)
    LLM requests
    46 (Builder 38 / Verifier 8)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    10%

    All five runs completed in the first iteration, and the verifier said PASS every time.

  • GPT-6 Astra

    Frontier · OpenAI
    us.openai.gpt-6-astra
    Cost
    $3.495 ($3.102–$3.562)
    Cost rank
    14 of 14 (1 = cheapest)
    Output tokens
    22,221 (21,151–23,685)
    Total tokens
    1,325,517 (1,139,606–1,479,623)
    Cache-read tokens
    1,236,901 (1,062,948–1,399,215)
    Run minutes
    7.9 (7.3–8.8)
    LLM requests
    48 (Builder 41 / Verifier 9)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    8%

    All five runs completed in the first iteration, and the verifier said PASS every time.

  • GPT-6 Sol

    Frontier · OpenAI
    us.openai.gpt-6-sol
    Cost
    $0.291 ($0.258–$0.358)
    Cost rank
    3 of 14 (1 = cheapest)
    Output tokens
    8,544 (7,967–9,605)
    Total tokens
    564,091 (432,181–818,653)
    Cache-read tokens
    525,901 (393,654–778,994)
    Run minutes
    3.1 (2.5–3.3)
    LLM requests
    36 (Builder 28 / Verifier 7)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    16%

    All five runs completed in the first iteration, and the verifier said PASS every time.

  • GPT-6 Luna

    Frontier · OpenAI
    us.openai.gpt-6-luna
    Cost
    $0.027 ($0.024–$0.066)
    Cost rank
    1 of 14 (1 = cheapest)
    Output tokens
    14,272 (13,818–45,643)
    Total tokens
    1,057,982 (848,865–1,979,669)
    Cache-read tokens
    982,784 (774,123–1,778,975)
    Run minutes
    4.2 (4.0–15.7)
    LLM requests
    50 (Builder 44 / Verifier 10)
    Completed
    5/5
    Iterations
    1, 1, 3, 1, 1
    Verifier cost share
    25%

    Run 3: In iteration 1 the builder ran npm run dev in the foreground and the session hung until the 300-second stall watchdog ended it. After iteration 2 the grader passed 5 of 13 files; the run completed in iteration 3. Run 1: the server listened on another port than PORT, so the verifier said FAIL, but official grading passed. Run 3 cost about 2.5× the median (113 LLM requests, 3 iterations).

  • GPT-5.6 Sol

    Frontier · OpenAI
    us.openai.gpt-5.6-sol
    Cost
    $0.755 ($0.667–$0.908)
    Cost rank
    6 of 14 (1 = cheapest)
    Output tokens
    12,032 (10,223–12,787)
    Total tokens
    584,537 (505,256–775,728)
    Cache-read tokens
    528,733 (451,226–704,329)
    Run minutes
    4.1 (3.4–5.8)
    LLM requests
    31 (Builder 22 / Verifier 8)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    24%

    Runs 2, 4: the server listened on another port than PORT, so the verifier said FAIL, but official grading passed.

  • Kimi K3

    Chinese open-weight · Moonshot AI
    us.moonshotai.kimi-k3
    Cost
    $1.422 ($1.154–$1.640)
    Cost rank
    9 of 14 (1 = cheapest)
    Output tokens
    39,505 (32,640–47,056)
    Total tokens
    1,658,186 (1,276,997–1,856,453)
    Cache-read tokens
    1,556,409 (1,190,363–1,739,007)
    Run minutes
    10.5 (8.3–12.0)
    LLM requests
    61 (Builder 47 / Verifier 16)
    Completed
    5/5
    Iterations
    1, 1, 1, 1, 1
    Verifier cost share
    9%

    All five runs completed in the first iteration, and the verifier said PASS every time. Run 3 hit 2 transient Bedrock stream errors; pi retried automatically. Its model card says explicit prompt caching is not offered through Converse, yet Bedrock reported cache-read and cache-write tokens (mechanism not verified).

  • GLM 5.3

    Chinese open-weight · Z.AI
    us.zai.glm-5.3
    Cost
    $1.821 ($1.402–$2.062)
    Cost rank
    10 of 14 (1 = cheapest)
    Output tokens
    59,582 (48,793–77,914)
    Total tokens
    3,766,802 (2,876,201–4,364,926)
    Cache-read tokens
    3,612,806 (2,752,084–4,200,005)
    Run minutes
    10.1 (8.2–15.0)
    LLM requests
    80 (Builder 65 / Verifier 16)
    Completed
    4/5
    Iterations
    1, 1, 1, ×, 1
    Verifier cost share
    4%

    Run 4: In iteration 1 the builder started a node test server in the foreground and hung; the 300-second stall watchdog ended the session. Iteration 2 hit the 20-minute run cap before the builder created .ralph-done. Grading right after the cap passed all 13 files, but under the completion rule (.ralph-done plus 13 passing files) the run counts as incomplete. Run 2: the verifier session killed its own process (exit 143) and left no verdict; the run still passed official grading.

Interpretation​

Between groups.

The Chinese open-weight models sent more LLM requests (about 1.5× by group value), produced more output tokens (about 2.3×) and took longer (about 1.4×) to finish the same task. Their Bedrock prices were not low either.

  • Kimi K3's input/output prices ($3.3/$16.5 per million tokens) are higher than those of Claude Sonnet 5.5 and GPT-6.1 Sol ($2.2/$11).
  • GLM 5.3 has a low output price ($5.808), but its cache-read price ($0.3432) is about 3× Sonnet 5.5's ($0.11) and it read many cached tokens (median 3,612,806). About 68% of its run cost came from cache reads. [calculated: median cache-read tokens × price divided by median run cost]

As a result its cost per run was about 2.0× the frontier group value. Two caveats apply:

  • The comparison uses Bedrock prices. The cost of self-hosting the open-weight models is not covered.
  • Group 2 contains only 2 models, so its group value is weak evidence.

Between models (frontier).

  • Price is the main driver of cost differences.
    • GPT-6 Luna and Claude Haiku 5.5 cost $0.11/$0.55 for input/output. They used 1,057,982 and 2,156,808 total tokens, yet cost only $0.027 and $0.065 per run.
    • GPT-6 Astra and Claude Fable 5.1 have the highest input/output prices ($11/$55). Cache reads cost $1.1 for GPT-6 Astra and $0.275 for Fable 5.1. Per run, GPT-6 Astra cost $3.495 and Fable 5.1 $2.566, so GPT-6 Astra was the more expensive of the two. Output tokens were 22,221 and 26,693; cache-read tokens were 1,236,901 and 1,096,620.
  • Within one price tier, usage differences show.
    • Claude Sonnet 5 and Sonnet 5.5 share input/output prices ($2.2/$11); only Sonnet 5's cache-read price is twice as high ($0.22).
    • Sonnet 5 sent 85 LLM requests and used 3,059,198 total tokens for $1.179. Sonnet 5.5 sent 25 requests and used 445,388 tokens for $0.306, so Sonnet 5 cost about 3.9× as much.
    • The gap between Claude Opus 5.5 ($0.907) and Opus 4.8 ($2.018) combines price (input/output $4.4/$22 vs $5.5/$27.5, cache read $0.22 vs $0.55) and usage (35 vs 60 requests).
  • Speed: GPT-6 Sol was both the fastest (3.1 minutes per run) and the model with the fewest output tokens (8,544).

Variation across the five runs. For 12 models the most expensive run cost at most 1.35× the median. The exceptions:

  • Claude Opus 5: run 3 used 91 LLM requests, 3,851,983 total tokens and 1 iteration, costing $3.726 (about 1.9× the median).
  • GPT-6 Luna: run 3 used 113 LLM requests, 1,979,669 total tokens and 3 iterations, costing $0.066 (about 2.5× the median).

Cost and effect of the multi-agent setup.

  • The verifier's median cost was about 4% (GLM 5.3) to 25% (GPT-6 Luna) of the median run cost. [calculated: ratio of per-model medians]
  • Because most runs finished in one Ralph iteration, the builder actually read the verifier's REVIEW.md only in the 4 runs with two or more iterations.
  • Of the 69 iterations that passed the official grader, the verifier also said PASS in 62.
    • In 5, the server listened on port 8000 instead of the PORT environment variable, so the verifier reported FAIL (Claude Sonnet 5.5 2, GPT-6 Luna 1 and GPT-5.6 Sol 2).
    • In 2, the verifier session terminated itself and left no verdict.
    • No iteration had a verifier PASS while the official grader failed to pass all 13 files.
  • There is no control group without a verifier, so the verifier's effect on completion or cost cannot be quantified (not verifiable).

Comparison with published runs of the same model.

  • Claude Opus 5.5, Claude Sonnet 5.5, Claude Haiku 5.5 and GPT-6 Sol stayed within ±10% of the re-priced published runs even with the verifier added, because the builder's cost alone was 0.86–0.95× the published runs.
  • GPT-6.1 Sol produced 20,621 output tokens against 13,251 in the published runs, and cost about 1.6× as much.
  • Kimi K3 produced 39,505 output tokens against 18,667 in the published runs, and cost about 1.9× as much.
  • Which endpoint the published runs used (Bedrock or the provider's API) was not verified.
  • GLM 5.3's published baseline ($0.544) is an [estimate] that borrows glm-5.3-flash's tokens. The measured GLM 5.3 produced 59,582 output tokens, about 2.6× that baseline, and cost $1.821, about 3.3×.

Incomplete runs and anomalies.

  • 1 run(s) did not complete.
    • GLM 5.3 run 4: In iteration 1 the builder started a node test server in the foreground and hung; the 300-second stall watchdog ended the session. Iteration 2 hit the 20-minute run cap before the builder created .ralph-done. Grading right after the cap passed all 13 files, but under the completion rule (.ralph-done plus 13 passing files) the run counts as incomplete.
  • Stall watchdog: GPT-6 Luna run 3. In iteration 1 the builder ran npm run dev in the foreground and the session hung until the 300-second stall watchdog ended it. After iteration 2 the grader passed 5 of 13 files; the run completed in iteration 3.
  • 3 sessions terminated themselves by killing their own process (Claude Sonnet 5.5 builder, Claude Opus 4.8 verifier and GLM 5.3 verifier). Only Claude Sonnet 5.5 run 5 needed an extra iteration as a result.
  • Transient Bedrock stream errors ("Bedrock stream ended without a stop reason") occurred (Kimi K3 run 3, 2×). pi retried automatically and completion was not affected.

Prices Applied [source]​

Prices are for calls to the us-east-1 endpoint through the US cross-Region inference profiles, in USD per million tokens, checked on 2026-10-12. For Anthropic and OpenAI models these prices are 10% higher than the global cross-Region inference prices.

  • Anthropic: the "Geo and In-region Cross-region Inference" table on the Amazon Bedrock pricing page, read for US East (N. Virginia) from the pricing data the page uses (published 2026-10-12T08:40:08Z).
  • OpenAI: the US cross-Region inference row of the standard price table (input up to 272K tokens) in the Bedrock model cards. The largest context of a single request in this measurement (input + cache read + cache write) was 94,172 tokens, so the long-context price above 272K tokens does not apply [fact].
  • Kimi K3: the price table in its Bedrock model card. Cache writes use the 30-minute cache price, the only cache-write price published.
  • GLM 5.3: the Z AI GLM 5.3 table on the Bedrock pricing page.
  • The public AWS Price List API data for us-east-1 Bedrock (published 2026-10-10) has no entries for these models, so the pricing page and model cards were used.
ModelBedrock model IDInputOutputCache readCache write
Claude Opus 5.5us.anthropic.claude-opus-5-5$4.4$22$0.22$5.5
Claude Sonnet 5.5us.anthropic.claude-sonnet-5-5$2.2$11$0.11$2.75
Claude Haiku 5.5us.anthropic.claude-haiku-5-5$0.11$0.55$0.011$0.1375
Claude Fable 5.1us.anthropic.claude-fable-5-1$11$55$0.275$13.75
Claude Opus 5us.anthropic.claude-opus-5$5.5$27.5$0.55$6.875
Claude Sonnet 5us.anthropic.claude-sonnet-5$2.2$11$0.22$2.75
Claude Opus 4.8us.anthropic.claude-opus-4-8$5.5$27.5$0.55$6.875
GPT-6.1 Solus.openai.gpt-6.1-sol$2.2$11$0.11$2.75
GPT-6 Astraus.openai.gpt-6-astra$11$55$1.1$13.75
GPT-6 Solus.openai.gpt-6-sol$2.2$11$0.22$2.75
GPT-6 Lunaus.openai.gpt-6-luna$0.11$0.55$0.011$0.1375
GPT-5.6 Solus.openai.gpt-5.6-sol$4.4$22$0.44$5.5
Kimi K3us.moonshotai.kimi-k3$3.3$16.5$0.33$4.125
GLM 5.3us.zai.glm-5.3$1.848$5.808$0.3432$2.31

Spend [calculated]​

ItemCost (reported tokens × price)Notes
Runs used in the results$88.42All 70 runs in isolated containers, complete or not; includes $12.87 for the five Claude Fable 5.1 runs
Discarded first attempt$17.60Agents ran directly on the host and could interfere with each other, so the results were dropped
Total$106.02Excludes the small pre-flight probe calls (one or two per model)

These amounts are reported token counts multiplied by prices. The actual bill must be checked in AWS Cost Explorer; models billed through AWS Marketplace appear on the bill under each provider.

Limitations​

  1. One task, five runs per model. Rankings are observations for this task and this setup. Even within one model, the most expensive run cost up to about 2.7× the cheapest (GPT-6 Luna).
  2. The setup differs from the reference report. The reference report ran a single agent per model with different harnesses (Claude Code, Codex CLI, pi and others). Here every model ran on pi and Bedrock Converse with a builder plus a verifier, so tokens and cost include the verifier's share. This compares models within one harness, not harnesses.
  3. The first attempt was discarded. The first attempt ran up to seven agents directly on one host without containers. Session records showed agents running host-wide commands such as pkill -f and fuser -k, which could stop other runs' servers or the grader's server. Because contamination could not be ruled out, those results were dropped and the runs repeated in isolated containers. The reference report runs one run at a time and does not have this problem.
  4. The verifier checked the server port more strictly than the original criteria. The verifier prompt asks the server to listen on the PORT environment variable, which the original completion criteria do not require. The official grader finds the port the server actually opened, so this changes only the content of REVIEW.md, not completion.
  5. Some sessions killed their own process (exit 143). pi receives the whole prompt as a command-line argument, as in the reference report. When an agent runs pkill -f with a phrase from its prompt or kills all node processes, it kills itself as well. The verifier's exposure comes from phrases such as npm run dev in this report's verifier prompt. The prompts were not changed mid-experiment so that finished runs stayed comparable.
  6. The verifier's effect cannot be judged. There is no control group without a verifier, and most runs completed in the first iteration, so few builders actually read REVIEW.md.
  7. Group 2 has only 2 models. GLM 5.3 is not in the reference report, so its published baseline is an [estimate] borrowing glm-5.3-flash's tokens.
  8. Kimi K3's caching differed from its model card. The card says explicit prompt caching is offered only through APIs other than Converse, yet Bedrock reported cache-read and cache-write tokens for Converse calls. Costs use the reported values; how caching was applied could not be verified.
  9. Timing and concurrency differ. Claude Fable 5.1 ran alone, about 4 h 18 min after the other 13 models had finished. Bedrock load and the number of concurrent runs on the host may have differed; the effect on run time was not measured. Tokens and cost are assumed to depend less on timing, but this was not verified [estimate].
  10. Costs are calculated. They use 2026-10-12 prices and change when prices change.

Reproduction​

  • Tool versions: pi coding agent 0.87.1 (one change for Haiku 5.5), hurl 8.0.1, Node 22.23.3, container base Amazon Linux 2023
  • Settings: thinking medium, English prompts, up to 30 iterations, 1,200-second run cap, 300-second stall watchdog, five runs per model
  • Prompts: the builder used PROMPT-en.md from the reference repository unchanged; the verifier prompt was written for this report.
  • Per-run values: expand a model row in the "Results by model" chart above to see each of the five runs. The same values are in src/data/ralph-loop-bedrock.json (runs) in this repository.
  • Harness scripts and raw data (session transcripts, per-run metric CSVs, aggregate files) are not included in this repository. The basic harness structure is in the reference repository.

References​