Public

suitedaces/dorabot

Updated: 8/18/2026

Languages

TypeScript97.2%CSS1.8%JavaScript0.8%Shell0.1%HTML<0.1%
4 Models30 Tasks

macOS app for 24/7 AI agents in an IDE with memory, scheduled tasks, browser use + access to Whatsapp, Telegram, Slack.

Harness

1

Mini-SWE-agent
20 / 30

$0.52

3m43s

2

Mini-SWE-agent
19 / 30

$0.03

3m34s

3

Mini-SWE-agent
19 / 30

$0.47

7m50s

4

Mini-SWE-agent
19 / 30

$2.37

8m22s

Key Takeaways

  • Deepseek V4 Flash 0731 with Mini-SWE-agent matches the 19-task results at the lowest cost per test, $0.03, and lowest latency, 214.01 seconds.
  • Muse Spark 1.2 with Mini-SWE-agent scores 66.67%, compared with 63.33% for each of the three 19-task results.

Model Comparison

Accuracy

66.67%

Muse Spark 1.2

63.33%

DeepSeek V4 Flash 0731

Task outcomes

30 tasks

Both
Muse Spark 1.2 only
DeepSeek V4 Flash 0731 only
Neither
Not attempted

Cost / test

$0.52

Muse Spark 1.2

$0.03

DeepSeek V4 Flash 0731

Cost distribution

$0.00$0.82$1.65

Latency

3m 43s

Muse Spark 1.2

3m 34s

DeepSeek V4 Flash 0731

Latency distribution

0s8m 40s17m 20s

Cost Analysis

Cost / Test vs. Accuracy
ACCURACYCOST

Average Token Use / Test

Token Usage
InputOutputReasoningCache readCache write
Muse Spark 1.2
2.3M
Claude Opus 4.8
2.1M
GLM 5.2
2.0M
DeepSeek V4 Flash 0731
943K

Cost is the clearest tradeoff in this comparison. Muse Spark 1.2 leads at 66.67% for $0.52 per test. DeepSeek V4 Flash 0731 is the lower-cost option at 63.33% for $0.03 per test.

Latency Analysis

Latency vs. Accuracy
ACCURACYLATENCY

Average Response Time / Test

Response Time
Claude Opus 4.8
8m 22s
GLM 5.2
7m 50s
Muse Spark 1.2
3m 43s
DeepSeek V4 Flash 0731
3m 34s

Latency separates several models with similarly strong scores. Muse Spark 1.2 leads at 66.67%, while DeepSeek V4 Flash 0731 is fastest at 3m 34s with 63.33% accuracy.

Tasks with failures

Models
Muse Spark 1.2
DeepSeek V4 Flash 0731
GLM 5.2
Claude Opus 4.8

Task detail

6ce6383

Issue statement

Update the desktop Codex model catalog for the GPT-5.6 family. GPT-5.6 Terra should be the default Codex model and the catalog should offer Sol, Terra, and Luna with their user-facing names, default reasoning effort, and supported effort levels. Sol defaults to low and supports low, medium, high, xhigh, max, and ultra; Terra defaults to medium and supports the same levels; Luna defaults to medium and supports those levels except ultra. Mark Terra as the catalog default. The reasoning-effort option helper must preserve max and ultra when a model advertises them. Also mark gpt-5.3-codex as deprecated because it is no longer bundled.

View Hidden Tests
diff --git a/valsmith_tests/model_catalog.test.mjs b/valsmith_tests/model_catalog.test.mjsnew file mode 100644index 0000000..ff4de9a--- /dev/null+++ b/valsmith_tests/model_catalog.test.mjs@@ -0,0 +1,45 @@+import assert from 'node:assert/strict';+import {+  CODEX_MODELS,+  DEFAULT_CODEX_MODEL,+  codexReasoningEffortOptions,+} from '../desktop/src/lib/modelCatalog.ts';++export function testCodex56Catalog() {+  assert.equal(DEFAULT_CODEX_MODEL, 'gpt-5.6-terra');++  const byId = new Map(CODEX_MODELS.map((model) => [model.value, model]));+  const expected = {+    'gpt-5.6-sol': {+      label: 'GPT-5.6 Sol',+      defaultReasoningEffort: 'low',+      supportedReasoningEfforts: ['low', 'medium', 'high', 'xhigh', 'max', 'ultra'],+    },+    'gpt-5.6-terra': {+      label: 'GPT-5.6 Terra',+      defaultReasoningEffort: 'medium',+      supportedReasoningEfforts: ['low', 'medium', 'high', 'xhigh', 'max', 'ultra'],+      isDefault: true,+    },+    'gpt-5.6-luna': {+      label: 'GPT-5.6 Luna',+      defaultReasoningEffort: 'medium',+      supportedReasoningEfforts: ['low', 'medium', 'high', 'xhigh', 'max'],+    },+  };++  for (const [id, contract] of Object.entries(expected)) {+    assert.ok(byId.has(id), `${id} should be offered in the Codex model catalog`);+    const model = byId.get(id);+    for (const [field, value] of Object.entries(contract)) {+      assert.deepEqual(model[field], value, `${id}.${field}`);+    }+    assert.deepEqual(+      codexReasoningEffortOptions(model).map((option) => option.value),+      contract.supportedReasoningEfforts,+      `${id} should expose all of its supported reasoning efforts`,+    );+  }++  assert.equal(byId.get('gpt-5.3-codex')?.deprecated, true);+}diff --git a/valsmith_tests/run.mjs b/valsmith_tests/run.mjsnew file mode 100644index 0000000..19f1706--- /dev/null+++ b/valsmith_tests/run.mjs@@ -0,0 +1,20 @@+import { writeFileSync } from 'node:fs';+import { testCodex56Catalog } from './model_catalog.test.mjs';++const tests = [['Codex 5.6 models expose current defaults and reasoning efforts', testCodex56Catalog]];+const escapeXml = (value) => String(value)+  .replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;')+  .replaceAll('\"', '&quot;').replaceAll("'", '&apos;');+let failures = 0;+const cases = [];+for (const [name, test] of tests) {+  try {+    test();+    cases.push(`<testcase classname="modelCatalog" name="${escapeXml(name)}"/>`);+  } catch (error) {+    failures += 1;+    cases.push(`<testcase classname="modelCatalog" name="${escapeXml(name)}"><failure message="${escapeXml(error.message)}">${escapeXml(error.stack)}</failure></testcase>`);+  }+}+writeFileSync('valsmith-junit.xml', `<?xml version="1.0" encoding="UTF-8"?><testsuite name="modelCatalog" tests="${tests.length}" failures="${failures}">${cases.join('')}</testsuite>`);+process.exitCode = failures ? 1 : 0;