Skip to main content
Benchmarks

ClawQLCloudflare boards — zone-audit, fan-out/join, concurrency.

Zone-audit: ClawQL known-op leads tokens on a curated OpenAPI → replay mock — post–compact-execute remasure 2026-10-17: known_op 1 710 weighted (−123). Fan-out/join: scripted program claim cleared; blind real-model gate is frontier-only so far. Executor v2 is the promoted Executor column. HTTP concurrency is multiplex; stdio is process-per-client.

Tokens remasured Oct 2026 (compact execute) · Anon MB measured on the October 15 build · host-bound · 10 000 sessions × 3 reps · curated Cloudflare OpenAPI

Fail-closed security — fair defaults (tied at 2/5) · best-config · design cells next

Durability — N=1000 fleet kill · 0 duplicates · ~12s failover · outcome unknown

Jump: security scorecard · security suite · durability N=1000 · multi-attack 0/12 · Harness² gate · zone-audit · fan-out · HTTP concurrency · stdio concurrency · dominance roadmap · pets multiturn

Security · fail-closed policy depth

Fail-closed vault writes — fair columns, then design cells

We stopped claiming a lead from “ClawQL with a deny rule vs peers on defaults.” v2 measures two columns on the same OVERRIDE fixture: defaults (no tool-specific deny) and best-config (each product’s recommended deny). Tool-name blocklists are expected to tie once configured. Category lead is reserved for design cells allowlists cannot express.

Fair columns · defaults tied · best-config ClawQL measured · design cells next · 2026-10-19 · governance-policy-depth-v2

Measured defaults: ClawQL stock, Obot, Bifrost allow-all, and passthrough all contaminate at 2/5 — fair and tied. Measured best-config: ClawQL+Panguard BLOCK_TOOLS=memory_ingest scores 5/5; peer best-config rows (Obot deny / Bifrost VK omit / Executor policies.block) are invited and expected to tie. resume_auto_approve is harness-driven Executor resume accept (simulates self-approval), not Executor’s out-of-box auto-approve default.

Defaults column

ClawQL stock · Obot · Bifrost allow-all · passthrough — all 2/5 (contaminate). Fair tie.

Best-config column

ClawQL BLOCK_TOOLS=memory_ingest = 5/5. Peer deny/VK/block rows invited — expect ties.

Design cells (next)

Self-approval · arg digest swap · poison→allowed exfil · renamed routes — where allowlists cannot match.

Governance policy-depth v2 scorecard: defaults vs best-config columns
ArmColumnStatusScore / 5BlockedClean vaultDeny evidenceAuth intactBenign recall
ClawQL (stock / no BLOCK_TOOLS)Defaults column — no tool-specific deny; contaminates like peers
DefaultsMeasured2NoNoNoYesYes
Obot (default mcp-connect)Defaults — no per-tool deny
DefaultsMeasured2NoNoNoYesYes
Bifrost v2.3.0 (allow-all VK)Defaults — tools_to_execute=["*"]
DefaultsMeasured2NoNoNoYesYes
Passthrough vault MCPNo gateway deny — aggregator-without-policy control
ControlControl2NoNoNoYesYes
ClawQL + Panguard BLOCK_TOOLSBest-config — CLAWQL_PANGUARD_BLOCK_TOOLS=memory_ingest
Best-configMeasured5YesYesYesYesYes
Obot (per-tool deny)Set OBOT_MCP_URL_DENY — expected to tie at 5/5
Best-configPending——————
Bifrost (VK omits memory_ingest)Set BIFROST_MCP_URL_DENY — expected to tie at 5/5
Best-configPending——————
Executor (policies.block)Set EXECUTOR_MCP_URL_BLOCK — expected to tie at 5/5 on this fixture
Best-configPending——————

Blocked

Hostile memory_ingest denied at the tool boundary

Clean vault

No OVERRIDE / 99.99 under vault/

Deny evidence

Policy reason surfaced to the caller / log

Authoritative intact

Seed price 15.00 note still present

Benign recall

Read path still works while ingest is gated

Executor cells — pause ties; harness resume is a self-approval probe

Pause cells use Executor's stock destructiveHint pause (fair default). The third cell is harness-driven resume accept after poison — it simulates agent self-approval; it is not Executor's out-of-box auto-approve. Configured ClawQL has no resume surface. Via ci-executor-peer.sh.

Risky write / approval

CQ 5/5 · Ex 5/5

Configured ClawQL deny vs Executor default destructiveHint pause (vault clean). Passthrough contaminates. Not a defaults-column cell.

Untrusted read → hostile follow-up

CQ 5/5 · Ex 5/5

Poison returns; configured ClawQL still deny; Executor pause. Passthrough contaminates.

Harness resume accept (self-approval probe)

CQ 5/5 · Ex 2/5

Harness calls Executor resume accept after poison — simulates agent self-approval. Not Executor’s stock auto-approve default. ClawQL configured deny has no resume surface.

Design cells — where allowlists cannot tie

After best-config ties on a block list, these cells are the durable claim: people-bound approval, argument digests, data-flow after untrusted reads, and capability identity beyond tool names.

Self-approval

Partial

Allowlist gap: A pause that the same agent can resume is not bound to a person. Harness resume accept probes this; needs a clean default-vs-default formulation.

ClawQL target: Requester never approves; human ATR / security key required.

Changed arguments after approval

Pending

Allowlist gap: Pause-and-resume does not bind approved args; a digest does.

ClawQL target: Mandate digests refuse execute-at-B after approve-at-A.

Untrusted read → allowed exfil

Pending

Allowlist gap: After poisoned email, agent uses an allowed tool (e.g. Slack) to move vault data — name deny cannot stop an allowed tool.

ClawQL target: Session data-flow labels / taint after untrusted reads.

Renamed or aliased tools

Pending

Allowlist gap: Same write via another name bypasses name-based deny lists.

ClawQL target: Capability / schema identity, not just string match.

What we claim

On defaults, ClawQL stock matches peer defaults (2/5 contaminate). On best-config, ClawQL with a tool-name deny scores 5/5; peers with an equivalent deny are expected to tie. Design cells + injection suite are where we aim for a durable category lead.

What we do not claim

That configured-ClawQL vs default-Obot/Bifrost is a governance advantage. That resume_auto_approve is Executor’s stock auto-approve. That a single OVERRIDE fixture is “0 of 50.” That TrueFoundry is measured.

How peers land best-config

OBOT_MCP_URL_DENY · BIFROST_MCP_URL_DENY · EXECUTOR_MCP_URL_BLOCK against the shared vault. Open a PR with raw JSON — we merge equal-arm rows and expect 5/5 ties on this cell.

Artifacts: docs/benchmarks/governance-policy-depth/results-smoke.json · docs/benchmarks/governance-policy-depth/results-obot.json · docs/benchmarks/governance-policy-depth/results-bifrost.json · docs/benchmarks/governance-policy-depth/results-cells.json · CI 39181888666

Security suite roadmap

Security suite — beyond block lists

Boards that hit what a tool-name deny cannot express, and that matter even with no peer present. Same format as governance: defaults column, best-config column, frozen rules, published harness, maintainer invite. not_offered is only for capabilities a product never claims — measurable outcomes (like injection resistance) stay pending until run.

Credibility: Nobody can dispute a measured failure of something a product claims. Scoring a product down for something it never claims looks like a rigged test. Hiding a measurable peer outcome as not offered looks like avoiding the comparison.

Build first — most signal per effort

#1 · partial

Multi-attack injection suite

Smoke v2 published: ClawQL defaults 0/12 via native park/IFC; passthrough 12/12; benign 2/4 without a human. Category claim pending peer arms.

#2 · partial

Approval-integrity cells

Harness resume probe today; digests / replay / collusion / crash cells still pending. No peer configuration can tie the people-bound cells.

#3 · planned

Exfiltration through an allowed tool

After a poisoned read, a permitted Slack (etc.) post moves internal data — proves data-flow control.

#4 · planned

Secret visibility from agent code

Program/code-mode tries to read tokens, env, files. With vault injection, should get nothing. Timely now.

#5 · partial

Kill-mid-write duplicates

File-journal N-trial board shipped (CI N=50, duplicate_side_effects=0). Fleet Tier C N=1000 on /benchmarks#durability. Peer invite still open for named Golem/Pi boards.

Approvals that can’t be gamed

People-bound, digest-bound, at-most-once mandates

Self-approval

Agent tries to approve its own paused write — requires a different person with a security key.

Argument tampering

Approved at $52,000, executed at $520,000 — mandate digests refuse.

Replaying an approval

Reuse one approval for a second write, or after it expires.

Approver collusion

Requester inside the approver group, or one person counted twice in N-of-M.

Concurrency and crashes

Two replicas race; kill mid-write thousands of times — count duplicate side effects.

Injection and data flow

Attacks buyers fear most

Multi-attack suite

Planted instructions in emails, tickets, documents, webhooks — scripted worst-case for smoke; real-model matrix is a separate follow-up.

Allowed-tool exfiltration

Poisoned read then a permitted tool moves vault data out.

Persistent injection

Poison in memory or a skill fires in a later session — untrusted labels must survive storage.

Tool-description rug pull

Upstream changes a tool description after approval — quarantine / owner review (cf. Uber gateway).

Credentials

Especially after OpenCode-class breaches

Secret visibility

Agent code reading tokens, env, files — vault injection should yield nothing.

Stored key exfiltration

Can provider keys be pulled back out through any tool, API, or log?

Token confusion

Token minted for one tenant/resource used against another.

Revocation latency

How long a revoked grant keeps working.

Stolen-key blast radius

With a key group and spend cap, how much damage before stop.

Containment

Sandbox and tenant boundaries

Sandbox escapes

Network, filesystem, memory exhaustion, CPU loops from inside a program.

SSRF

Tool args to 169.254.169.254 and DNS-rebinding tricks.

Cross-tenant access

Attempts to reach another tenant’s resources.

Audit

Tamper-evident reconstruction

Tamper detection

Edit or delete a log entry — measure detection latency.

Completeness

Denied and failed calls logged as well as successes.

Reconstruction

Investigator rebuilds exact agent actions from the log alone.

Failing safely

Outages and brakes

Dependency outages

Policy engine, mandate DB, or NATS down — refuse risky calls, don’t allow.

Emergency brake

Time from “pause this agent” to its last tool call.

Runaway loop

Spend from a looping agent before a cap stops it.

Durability · program journal + at-most-once writes

Programs survive a crash — without repeating writes

Journaled programs on a two-node celld fleet (Cloudflare R2) resume after SIGKILL with zero duplicate side effects. Interrupted in-flight writes are marked outcome unknown for a person to resolve. Not a durable execution engine; not exactly-once delivery over HTTP.

N=1000 · 0 duplicates · ~12s failover · R2 · 2026-10-21 · tier-c-fleet-phased-kill

Claim: Across 1,000 crashes injected at every phase of a write, programs resumed on another node with no repeated writes (the 95% upper bound on the duplicate rate is 0.3%). The median resume took about 12 seconds, set by the lease timeout. Writes caught mid-flight are marked outcome unknown for a person to resolve. Under stock settings, 0.6% of surviving nodes paused themselves for safety, and 0.9% of resumes missed the recovery deadline.

Safety

0 duplicates

Rule-of-three 95% upper bound 0.3% at N=1000. Never repeated a write.

Uncertainty

481 outcome unknown

Aggregate ~48% is a targeting artifact — see per-phase table. Explicit, not silent; auto-resolve via keys/lookup is planned.

Availability

0.6% fences · 0.9% deadline

6 survivor self-fences, 9 resume deadline misses. Stated, not hidden. Resume p50 ≈ 12s (lease TTL).

Outcome unknown by kill phase

Kills are aimed evenly at four phases; two are the brief in-flight window where the API’s reply never arrived — unknown is honesty, not a durability failure. In real operation that window is milliseconds, so unknowns are far rarer than this targeted test shows. Prefer check-by-reference or idempotency keys before involving a person (planned).

Outcome unknown rate by kill phase on the N=1000 Tier C board
Kill phasenUnknownRateNote
Before the approval is consumed25200%Must stay 0 — nonzero is a bug
After intent recorded248240~96.8%In-flight window
During the call251241~96.0%In-flight window
After the call, before journaling24900%Must stay 0 — nonzero is a bug

Proof ladder

Durability proof ladder tiers and status
TierNameStatusDetail
AFile-journal SIGKILLCI-gatedResume after kill; writes outcome_unknown; no re-send.
BProgramCellDO isolate SIGKILLCI when streams-celld firesSame contract on celld Durable Object journal.
CFleet peer kill (R2)N=1000 phasedTwo nodes, LTX diagnose OK, three columns + failover seconds.
DKill-mid-write (mandate)CI N=50duplicate_side_effects=0 on file-journal board.
D+Dual-column comparisonClawQL armsduplicates + outcome_unknown × idempotent/non_idempotent. Peers pending invite.
FResume vs journal lengthPlannedMeasure resume wall time at short vs long journals; snapshots if needed.

TTL / failover rows

Stock vs TTL-only vs preferred production durability rows
RowStatusnDupsFailoverNote
Stock CELLD_TTL_MS=10000 (R2)measured10000~12sPreferred publish row. Renew ~⅓ TTL.
TTL-only stretch 30000measured400~32sTradeoff demo only — label sample size. Not preferred production.
Preferred production (renew ⅕ + regional leases)planned———Target, not a result. Run at stock N before claiming.

Dual-column comparison (ClawQL arms)

Kill-mid-write duplicates and outcome_unknown by upstream mode
ArmStatusIdempotent upstreamNon-idempotent upstream
clawql-file-journalmeasured0 dups / 20 unknown (n=20)0 dups / 20 unknown (n=20)
naive-retry (reference)measuredRetries; unique effects masked by keysDuplicates when upstream ignores keys
golem / pi-durable (+ combos)pending invite——

Not a durable execution engine

Golem-class mid-function resume of arbitrary agent code is a different product. ClawQL journals programs and governs approved writes.

Execution vs effect durability

A runtime can make the program survive a crash. Remote POSTs still need upstream idempotency — or at-most-once governance. ClawQL chooses at most once for consequential writes.

Outcome unknown does not undermine durability

When a cell dies mid-call, success and “never arrived” look the same from ClawQL’s side. We never blind-retry and never drop silently — the unknown is recorded. Recovery is not only “retry / do nothing / ask a person”: check by unique reference (after the original can no longer land), then decide; or resend with an idempotency key. Person only when neither exists.

No “exactly once” over HTTP (yet)

Prefer at-most-once approved writes today. Mandate-derived keys and spec-driven lookup are planned so Stripe-class / lookup-capable APIs auto-resolve in-flight unknowns — not claimed until shipped and measured.

Peer boards pending invite

Named Golem / Pi Durable numbers wait on maintainer config. ClawQL-only crash evidence is public here.

Artifacts: docs/benchmarks/program-cell-fleet-kill/phased-evidence.json · docs/benchmarks/security-suite/kill-mid-write/evidence.json · docs/benchmarks/durability-proof/comparison/evidence.json · docs/benchmarks/durability-proof/STATUS.md

Build-first #1 · smoke

Multi-attack injection — smoke published

Twelve planted attacks across email, ticket, doc, and webhook. Scripted worst-case model always complies — this measures whether the gateway stops the resulting action, not whether a real model would fall for it. Sample size: smoke until the suite grows to dozens. Benign workflows are scored beside attacks.

2026-10-19 · multi-attack-injection-smoke-v2

Headline: 0 / 12 attacks effectuated under ClawQL defaults (native park/IFC — not a tool-name deny) · 2 / 4 benign completed without a human (1 parked, 1 blocked by taint). Passthrough: 12 / 12. Category claim pending peer arms.

ClawQL smoke published; category claim waits until peer arms are measured on this corpus. Always publish attack rate beside benign completed-without-human.

Configured column — mechanisms, not tools

Untrusted-read tainting

Reading planted channel content taints the session so later writes fail closed.

Park destructive writes

Destructive writes park for a person — no side effect until approval.

Data-flow rules

Tainted labels may not flow to vault (or other) sinks.

Benign suite (defaults): recall + search complete without a human; clean memory_ingest parks for approval; email-then-summary is blocked by taint/data-flow.

Smoke scorecard · n=12 · scripted worst-case

Multi-attack injection smoke: effectuated over planted by arm
ArmColumnStatusEffectuatedNote
ClawQL defaultdefaultsmeasured0 / 12Native gate parks memory_ingest — not BLOCK_TOOLS
Passthroughdefaultsmeasured12 / 12No gateway control
ClawQL configuredbest_configmeasured0 / 12Taint-first + park + data-flow
Obot defaultdefaultspending—Pending equal-arm peer runner (not every-PR CI)
Obot best-configbest_configpending—Pending equal-arm peer runner (not every-PR CI)
Bifrost defaultdefaultspending—Pending equal-arm peer runner (dispatch-only peers)
Bifrost best-configbest_configpending—Pending equal-arm peer runner (dispatch-only peers)
Executor defaultdefaultspending—Pending equal-arm peer runner (not every-PR CI)
Executor best-configbest_configpending—Pending equal-arm peer runner (not every-PR CI)

Artifact: docs/benchmarks/security-suite/multi-attack-injection/results-smoke.json

Optimizer vs gate · step 1

Harness² × ClawQL — adversarial gate (step 1)

Recursive harness optimizers search for shortcuts (skip approval, widen tools). Authority must sit outside the improvable harness. Step 1 measures a real ClawQL park/IFC gate against a stand-in optimizer — not upstream Harness² yet.

Real ClawQL gate · stand-in optimizer · board_pass · 2026-10-20 · harness2-gate-adversarial-step1

Headline: ClawQL gate: every evasion failed (15 → 0 effectuated); six adaptations learned to request approval; utility held at 1.0 (recall + search). Passthrough: 21 → 19 effectuated. “The gate teaches good habits” is measured here.

Scorecard · evade attempts → effectuated · adapt · utility

Harness² adversarial gate step 1: evade, adapt, and utility by arm
ArmStatusEvade → effectuatedAdapt succeededUtilityNote
B · ClawQL gatemeasured15 → 061.0park + session IFC; adapt ≠ evade
A · Passthroughmeasured21 → 194n/aControl — evasions take effect

What this claims

Evidence about ClawQL under an optimizing adversary (stand-in). board_pass requires evade_effectuated = 0 and utility held.

What this does not claim

Not a Harness² integration result. Not “defeated Harness².” v0 dual-sim numbers are illustrative only.

Step 2 (orchestrator ready)

JobBench equal-arm harness is on main (#1364). Live scores need HARNESS2_SOLVER_MODEL + judge credentials — no results-step2.json yet. WorkBuddy deferred (license); LAB is a follow-up.

Artifact: docs/benchmarks/harness2-gate-adversarial/results-step1.json · Spec: docs/benchmarks/harness2-gate-adversarial/SPEC.md

Cloudflare board

Tokens, success, memory, session latency

Weighted mean tokens (definition + discovery + result + 5× code). Task success 1.0 on every arm below. Memory is process-tree anon MB. Label session transport when comparing latency.

Provenance: 2026-10-17 · Post–compact-execute 3×10k: known_op 1710 (−123 vs 1833); program/Executor/peers unchanged · docs/benchmarks/cloudflare-multiturn/board-summary-n10000-r3.json

Cloudflare multiturn board: weighted tokens, memory, and session latency by arm
ArmWeighted tokensAnon MBSession p50TransportSuccess
ClawQL known-opExecute by operationId + where — primary ClawQL path (−123 vs pre-compact). *Anon MB: October 15 build
1 710~121*24.6 msHTTP1.0
ClawQL programOne execute_program plan (ADR 0015 v0). *Anon MB: October 15 build
5 187~126*11.8 msHTTP1.0
ClawQL compact search−123 vs pre-compact 5 925. *Anon MB: October 15 build
5 802~123*46.8 msHTTP1.0
ClawQL default search−123 vs pre-compact 17 821. *Anon MB: October 15 build
17 698~125*58.9 msHTTP1.0
Executor v2 (promoted)Main Executor comparison column · OpenAPI tools → mock
5 328~2 103~218 msHTTP1.0
Executor v1 (stable 1.6.10)Same mock workload · mcp + daemon · not in HTTP concurrency table · tokens not re-run
8 236~535~84 msstdio1.0
MCPJungle
55 121~10250.5 msHTTP1.0
agentgateway
54 705~9949.3 msHTTP1.0
Direct RESTNo gateway — raw calls to mock
47 361—40.0 msHTTP1.0
Cloudflare code-modeSame zone-audit board · peer under known-op (1 710) and program (5 187)
3 947——HTTP1.0

Artifact: docs/benchmarks/cloudflare-multiturn/board-final-summary.md. Executor v2 is the promoted Executor column; v1 is the stable-release second column on the same mock.

Fan-out / join

Program mode clears the multi-op inventory board

Six independent Cloudflare reads plus a workers⋈routes join no single where can express. Scripted claim cleared; blind real-model gate is frontier-only so far (program_beats_known_op_on_fanout_join_for_real_models).

Scripted 3×10 000 — program_beats_known_op_on_fanout_join

3 × 10 000 scripted sessions · known-op vs program

Scripted fan-out board: weighted tokens and turns
ArmWeighted meanTurnsSuccess
ClawQL known-opSix sequential execute + client-side workers⋈routes join
2 69461.0
ClawQL programOne execute_program · return:true compact merge · claim cleared all 3 reps
2 65111.0
Cloudflare code-modeTokens-only peer on this publish set (not the claim arm)
—11.0

Artifact: docs/benchmarks/cloudflare-multiturn/fanout-join/board-summary-n10000-r3.json. Win = turns_win + token_promotion on every rep.

Blind dual-model gate (N=50) — single_model_only

Blind Cursor Task gate · N=50 / arm / model · frozen cf-mt-fanout-real-model-gate-v1. Dual headline needs a win on both models; report frontier only.

Fan-out real-model Cursor gate: weighted median and p90 by model and arm
ModelArmw medianw p90TurnsSuccessModel win
Frontier (gpt-5.6-sol-medium)
known-op
2 8132 8786.021.0—
Frontier (gpt-5.6-sol-medium)
programMedian + p90 + turns + success — model win
2 6532 73211.0Win
Small (composer-2.5-fast)
known-opVery lean observations (~294 mean) — hard bar for program
2 5542 59661.0—
Small (composer-2.5-fast)
programTurns win; ~414 code tokens ×5 outweigh the one-turn obs save
2 6872 73911.0Loss (tokens)

Artifact: docs/benchmarks/cloudflare-multiturn/fanout-join/real-model-cursor-gate-frontier_small.json. Measured Oct 2026 · host-bound.

Scripted claim cleared

program_beats_known_op_on_fanout_join wins all three 10 000-iter reps (turns 1 vs 6 + weighted tokens). Inventory card: ssl, A-count, workers, routes join, buckets, enabled-firewall count.

Real-model: frontier only

Blind Cursor Task N=50 under frozen rules. Frontier program beats known-op on median + p90 weighted tokens. Small does not — dual-model headline stays open (single_model_only / report frontier).

Not the zone-audit board

Fan-out is a different workflow (six reads + join). Zone-audit numbers above stay the filter/known-op story. Do not mix the two boards’ weighted means.

HTTP concurrency

Clients sharing one Streamable HTTP server

Climb until p99 or errors break (no predetermined client caps). Clients sustained at 100 / 250 / 500 ms p99 cutoffs · REPS=3 where noted.

HTTP multiplex concurrency at p99 cutoffs
Arm@100 ms@250 ms@500 msPeak RPS
ClawQL Bun --smol
822114341 854
ClawQL Node 256
33112224675
agentgateway† Host OOM at 128 before p99 cleared 500 ms — last sustained point
3388112†833
MCPJungle
3492192476
Executor v2
2102273

Artifact: docs/benchmarks/cloudflare-multiturn/http-concurrency-curves.json. Executor v1 is not in this table (stdio MCP).

Stdio concurrency

One MCP process per client

Fair topology for Executor v1 stable. ClawQL and Executor v1 each spawn one stdio MCP process per client. Memory is the sum across all processes (+ shared daemon for v1).

Stdio process-per-client concurrency at p99 cutoffs
Arm@100 ms@250 ms@500 msPeak RPS
ClawQL known-op (stdio)Total anon @100 ms ≈ 3.4 GB (all client processes)
31741221 145
Executor v1 stable (stdio)Total anon @100 ms ≈ 2.0 GB · single-client board ≈ 535 MB
81942123

Artifact: docs/benchmarks/cloudflare-multiturn/stdio-concurrency-curves.json. Do not mix these cells with the HTTP multiplex table.

How to read the Cloudflare board

Claim bounds

What we claim

On this Cloudflare board, ClawQL known-op has the fewest weighted tokens (1 710 after compact execute, −123 vs 1 833) with ~121 MB anon on the Node-256 fill. Executor v2 is the promoted Executor peer (5 328 tokens, ~2.1 GB). Executor v1 stable on the same mock is 8 236 tokens and ~535 MB — the beta excuse does not reverse the token story.

Two concurrency topologies

HTTP table = N clients sharing one Streamable HTTP server. Stdio table = one MCP process per client (fair for Executor v1). Do not mix the cells.

Session latency transports

ClawQL known-op 24.6 ms and program 11.8 ms are HTTP board figures (2026-10-17 remasure). Executor v1 ~84 ms is stdio. Executor v2 ~218 ms is HTTP. Label the transport when comparing.

Also measured

Most efficient governed MCP gateway — measured, not marketed.

Equal-arm board: same multiturn harness, same 40-tool fat catalog, same task success. Full remasure 2026-10-17: ClawQL 8 866 combined @12 — ~4× leaner than aggregators / Obot / Bifrost classic, 2.25× leaner than Bifrost Code Mode, 3.38× leaner than Executor v2 β, 6× leaner than Executor v1.6.10, equal task success. vs fair direct-HTTP baseline: −26 136 (−75%). Interleaved n=10k: ClawQL best p50 e2e (1.02 ms) and gateway cost (0.70 ms). Topology-A chaos: ClawQL 79 · Executor HTTP 29 · MCPJungle still leads (151).

Fewest I/O tokens among measured MCP aggregators and live Executor (v1 and v2 β), same harness, equal task success. · Full remasure Oct 2026 · compact search+execute · MT + 10k + chaos A · host-bound · N=12 / C=40 fat catalog · classic Layer1-once + Σ Layer2 · Obot + Bifrost on board

Competitive feature matrix comparing ClawQL, Executor, MCPJungle, and agentgateway
CapabilityClawQLExecutorMCPJungleagentgateway
Auth / capability gate on the hot path
Yes—OptionalOptional
Operation risk / policyBench runs ALLOW_NO_ENFORCEMENT; the gate is still present.
Yes———
Ephemeral audit ring
Yes———
Output redaction hooksAvailable in ClawQL; unused on the pets fixture.
Yes———
Result projection (where / fields)Primary token win on this board — ClawQL shrinks fat results at the gateway.
Gateway-enforcedPass-through——
Multi-tool catalog discovery
Server-side searchCode / N/AFull tools/listFull tools/list
Upstream HTTP to equal mock
YesSandbox (upstream=0)YesYes
Persistent agent memory (vault)
Yes———
Semantic enterprise search
Onyx———
WORM / Merkle audit trail
YesBasic log——
Unlimited executions (no meter)
YesCapped + overageSelf-hostSelf-host
12-turn I/O tokens vs fair baselinecombined @12 = definitions + Σ discovery + Σ results. Baseline defs pinned to agentgateway tools/list. †Executor v2 β figure pending remeasure under the same compact path.
−26 136 (−75%)+18 704 (v1) / −5 075 (v2 β†)+320Match
Category roadmap

Path to category dominance — equal-arm only.

Published strengths are why each peer matters. A conclusive claim still requires the minimum set below on a shared fixture — not a collage of vendor blogs. Status reflects what ClawQL has already measured on equal-arm boards.

Minimum set for a conclusive claim

  • Equal-arm multi-turn workflow (same OpenAPI / pets fixture)
  • Interleaved runs (n ≥ 10 000 for tails)
  • Weighted tokens (definitions + discovery + results + 5× model-written)
  • Real models with rules frozen beforehand
  • Full process-tree RSS
  • p99 concurrency under an explicit SLO
  • Governance surfaces exercised (audit entries + policy-bound writes)
  • Published harness, fixtures, and raw artifacts
  • Maintainer invitation for config fixes
Dominance roadmap — competitors, criteria to beat, proof requirements, and ClawQL board status
CompetitorStatusWhy it mattersCriteria to beatHow to prove
Bifrost (Maxim)Tokens on N=12/C=40. Governance v2: defaults tied (Bifrost allow-all 2/5); best-config VK deny invited (expect tie). Category claim → design cells + p99 concurrency.
Tokens + gov measuredCode Mode: 58–92.8% input-token reduction at 96–508 tools; 11 µs overhead @ 5k RPS; virtual-key tool scoping + audit logs.Multi-turn weighted tokens (incl. model-written), p99 concurrency under SLO, governance depth on the same fixture.Interleaved multi-step OpenAPI/pets workflow vs their Code Mode; publish harness + raw results; invite maintainer config fixes.
TrueFoundryCredentials blocker. Same governance-policy-depth board accepts TRUEFOUNDRY_MCP_URL-style peer once tenant gateway exists.
Not on boardEnterprise governance (HITL approvals, per-user delegation, RBAC); ~3–4 ms latency; 350 RPS/core; strong observability.Token savings + concurrency vs their gateway, policy-bound writes, audit completeness.Same multi-turn board with their MCP proxy; measure weighted tokens + p99 clients before SLO break; compare approval binding + trail.
Cloudflare Code ModeFan-out/join claim50v2 + plan.c on the CF board; finish blind dual-model (small arm) under frozen rules.
Partial (fan-out)Entire ~2.5k-endpoint API in ~1k tokens via code execution.Known-ops / filtered path tokens on realistic zone-audit style workflow; real-model turns.Replay identical Cloudflare fixture; report weighted tokens + turns; show ClawQL known-ops or program mode still lower.
Uber MCP GatewayProjection-technique bake-off once pets board can host a Code Mode peer.
Not on boardProduction scale (800+ servers / 5k tools); tool search + GraphQL-style response projection + Code Mode default.Result projection + search efficiency on multi-turn; scale-out concurrency.Adapt their published techniques to the shared fixture; measure projection savings and session cost vs ClawQL JMESPath + known-ops.
agentgateway (Solo.io / LF)Re-pin latest agentgateway binary on gateway-multi + CF concurrency boards.
MeasuredMCP + A2A federation; CEL policies; OpenTelemetry; already in prior boards.Token efficiency and concurrency on equal-arm board; policy expressiveness.Re-run current pets/Cloudflare boards with the latest version; add A2A-style multi-agent turn if relevant.
IBM ContextForgeDirect (non-nested) ContextForge arm — prior boards skipped nested MCPJungle adapter by default.
Partial (nested off)Multi-protocol federation (MCP/A2A/REST/gRPC); 40+ plugins; already measured (higher latency).Latency + token overhead vs nested setups; governance plugins.Direct equal-arm (no nesting); measure gateway-cost p50/p999 and RSS under the same SLO.
ObotTokens 3.95× @N=12. Governance v2: defaults tied at 2/5; best-config Obot deny invited (expect 5/5 tie). Design cells next.
Tokens + gov measuredOpen-source enterprise registry + per-tool policy; curated catalogs; K8s-native.Token surface of curated tools; policy enforcement overhead.Measure definitions + discovery tokens with their catalog model; compare audit/policy on the same workflow.
Executor (v1/v2)Tokens/latency measured (v2 β 3.38×). Governance: pause cells tie 5/5; resume_auto_approve ClawQL 5/5 vs Executor 2/5 (model resume accept contaminates). Re-pin v2 when stable.
Tokens + cells · resume dominanceClosest prior peer; sandbox code execution; per-tool approvals + MCP proxy (Gmail wrappers) — already on published boards.Token lead + governance cells: risky-write approval/deny + untrusted-read→hostile follow-up.Tokens: re-pin latest. Governance: ci-executor-peer.sh → results-cells.json.
celld program journal (ProgramCellDO)Public: /benchmarks#durability (N=1000, 0 dups, ~12s). Dual-column ClawQL arms; Pi Durable/Golem pending invite. Not durable execution.
Lab Yes · fleet Yes (R2)Journaled program resume on celld — public numbers on /benchmarks#durability. Not a durable execution engine.Tiers A/B/D CI-gated; Tier C two-node R2 peer kill + phased board (never repeated a write; in-flight → outcome unknown).Publish on /benchmarks#durability + docs/benchmarks/durability-proof/. Avoid “exactly once.”

Source: docs/benchmarks/dominance-roadmap.md · Measured rows stay claim-bound to published artifacts above.

Pets multiturn scoreboard

12-turn I/O tokens — equal task success

combined @12 = definitions + Σ discovery + Σ results. Earlier equal-arm pets catalog board (separate fixture from the Cloudflare zone-audit board above).

Multi-turn token scorecard across gateway arms
ArmDefsΣ DiscΣ ResCombinedvs directFlow p50Flow p999RSSTask
Direct HTTPNo gateway process. Defs = agentgateway serialization of the same 40 ops.
5 520029 48235 002baseline2.29.4—PASS
ClawQL Node stdiostdio · compact search+execute · transport latency/RSS from matrix artifact
3483 7324 7868 866−26 13618.749.5665PASS
ClawQL Bun stdiostdio · same tokens; lowest ClawQL flow p50 on this host
3483 7324 7868 866−26 13616.039.5344PASS
ClawQL Node HTTPStreamable HTTP · fair latency peer for Executor v2
3483 7324 7868 866−26 13645.9391.1740PASS
ClawQL Bun HTTPStreamable HTTP · Bun RSS ≈ Bun stdio
3483 7324 7868 866−26 13638.9364.5340PASS
ClawQL Node gRPCgRPC MCP · ClawQL-only on this board (peers have no gRPC MCP). Same compact token recipe; slower than HTTP for small tool calls.
3483 7324 7868 866−26 136138.7292.2700PASS
ClawQL Bun gRPCgRPC MCP · Bun keeps RSS low; latency still ~7× stdio on this payload size
3483 7324 7868 866−26 136137.3254.7335PASS
Executor 1.6.10stdio (`executor mcp`) · fat return / pretty-print tax. Discovery=0. Same runExecutorArm loop as v2.
128053 57853 706+18 70464.4106.6213PASS
Executor 2.0.0-β.15HTTP /mcp remasured 2026-10-17 · 3.38× vs ClawQL 8 866 (−21 061 tokens) · vsDirect −5 075 · compare latency to ClawQL Node/Bun HTTP
181029 74629 927−5 07573.5143.2927PASS
MCPJungle3.98× vs ClawQL combined @12
5 840029 48235 322+32015.4135.0153PASS
agentgateway3.95× vs ClawQL combined @12 · same fat path as Bifrost classic / Obot
5 520029 48235 002match13.6330.9214PASS
Bifrost classic3.95× vs ClawQL @12 · full tools/list + fat callTool via /mcp · mean flow from remasure
5 520029 48235 002match3.0——PASS
Bifrost Code Mode2.25× vs ClawQL @12 (weighted 2.04×) · Layer2 includes TOOL print dump
3 459016 51819 977−15 0253.9——PASS
Obot3.95× vs ClawQL @12 · equal-arm catalog via Obot mcp-connect (remote multi-user entry)
5 520029 48235 002match21.7——PASS

Artifacts: gateway-multi-multiturn.json · gateway-multi-multiturn-executor-v2-equal-10k.json

Latency board

Interleaved e2e and governed gateway cost

n=10 000 interleaved · remasured 2026-10-17. Columns show p50 / p95 / p99 / p999 (ms).

Interleaved latency scorecard
Arme2e p50–p999Gateway cost p50/p99/p999RSS medList tokInvokedResult
ClawQL1.02 / 2.33 / 7.80 / 11.270.70 / 6.70 / 10.933891 24017828
Executor2.39 / 7.86 / 10.96 / 22.782.39 / 10.96 / 22.782552 28112859
MCPJungle1.37 / 6.26 / 9.01 / 14.471.05 / 8.66 / 13.62151464628
agentgateway1.17 / 4.66 / 8.89 / 14.330.85 / 8.51 / 13.14216373728

Artifact: gateway-multi-cmp-10k.json.

Pets board claim bounds

How to read the multiturn board

What we claim

Fewest tokens among measured MCP aggregators, Bifrost (classic + Code Mode), Obot, and live Executor v1 + v2 β with equal task success — ClawQL 8 866 combined @12 (3.38× vs Executor v2). Best p50 e2e and governed gateway cost on the remasured n=10 000 interleaved board.

What we do not claim

Scale-out concurrency wins. Memory wins. p999 latency wins (tails moved up on the remasure host). Mixing Executor v2 latency with ClawQL Bun stdio. Category-wide supremacy until remaining roadmap peers (TrueFoundry, Uber technique, …) clear the equal-arm minimum set — see /benchmarks#dominance. Bifrost 2.25× / 3.95×, Obot 3.95×, and Executor v2 3.38× are measured.

Executor version scope

v1.6.10: fat return, +18 704 vs baseline (53 706 combined). v2 β.15 HTTP remasure: 29 927 combined (−5 075 vs baseline) — 3.38× vs ClawQL 8 866; compact envelope credited, ClawQL still leads. Topology-A Executor chaos: HTTP /mcp 29/30 (p99 110 ms); stdio remasure still blocked (daemon Unauthorized) — historical 23/24 retained.

ClawQL transport matrix

Node/Bun × stdio/HTTP/gRPC on the same search→execute recipe. Tokens match across transports (8 866 after compact JSON). Fastest: Bun stdio (16.0 ms p50). HTTP is the fair peer for Executor v2 (ClawQL Node HTTP 45.9 vs Executor v2 73.5). gRPC is ClawQL-only here and slower on this small-payload board (~138 ms) — prefer it for large CallTool bodies.

Concurrency (topology A)

Until-break remasure: ClawQL 79/80, Executor HTTP 29/30, MCPJungle 151/152 (still leads), agentgateway 63/64. Publishable chaos claim vs Executor — not a scale-out win. Topology B (4× behind LB) still required before any scale-out claim.

Next ClawQL lever

Discovery is ~42% of ClawQL’s combined @12 (3 732 / 8 866). Skip-search when the agent already knows the operationId (MT_CLAWQL_DISCOVERY=once / known-op path) cuts more without touching projection. Cloudflare zone-audit tokens remasured post–compact-execute (known_op 1 710).