From 7776aeb064be2767ba1c743fc3316bea840551ee Mon Sep 17 00:00:00 2001
From: alt-glitch
Date: Thu, 11 Jun 2026 09:36:18 +0530
Subject: [PATCH] bench: render refresh + controller gate-replay results
Re-rendered after committing the verification gate replays so the
report's result-file count matches the results directory.
---
bench/report.html | 2 +-
...26-06-11T0301-cbe703c-gate-ink-ink-r0.json | 405 +++++++++++++++++
...26-06-11T0301-cbe703c-gate-ink-ink-r1.json | 410 ++++++++++++++++++
...1-cbe703c-gate-opentui-otui-capped-r0.json | 225 ++++++++++
...1-cbe703c-gate-opentui-otui-capped-r1.json | 225 ++++++++++
...26-06-11T0340-cbe703c-gate-ink-ink-r0.json | 405 +++++++++++++++++
...26-06-11T0341-cbe703c-gate-ink-ink-r1.json | 410 ++++++++++++++++++
...1-cbe703c-gate-opentui-otui-capped-r0.json | 225 ++++++++++
...1-cbe703c-gate-opentui-otui-capped-r1.json | 225 ++++++++++
...26-06-11T0348-af1e4bb-gate-ink-ink-r0.json | 410 ++++++++++++++++++
...26-06-11T0349-de446a2-gate-ink-ink-r1.json | 405 +++++++++++++++++
...9-de446a2-gate-opentui-otui-capped-r0.json | 225 ++++++++++
...9-de446a2-gate-opentui-otui-capped-r1.json | 225 ++++++++++
13 files changed, 3796 insertions(+), 1 deletion(-)
create mode 100644 bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r0.json
create mode 100644 bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r1.json
create mode 100644 bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r0.json
create mode 100644 bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r1.json
create mode 100644 bench/results/2026-06-11T0340-cbe703c-gate-ink-ink-r0.json
create mode 100644 bench/results/2026-06-11T0341-cbe703c-gate-ink-ink-r1.json
create mode 100644 bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r0.json
create mode 100644 bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r1.json
create mode 100644 bench/results/2026-06-11T0348-af1e4bb-gate-ink-ink-r0.json
create mode 100644 bench/results/2026-06-11T0349-de446a2-gate-ink-ink-r1.json
create mode 100644 bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r0.json
create mode 100644 bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r1.json
diff --git a/bench/report.html b/bench/report.html
index 585c1b61d56..f102d6639a9 100644
--- a/bench/report.html
+++ b/bench/report.html
@@ -29,7 +29,7 @@
Hermes TUI benchmark — Ink (current UI) vs OpenTUI (new engine)
Both UIs were run as real binaries in a real terminal, fed the exact same scripted conversations by a fake
gateway, and measured from outside the process. Every number below is the typical of repeated runs (median)
-unless said otherwise. 103 result files · sha 50e34713b · node v26.3.0 · generated 2026-06-11T04:02:33.335Z
+unless said otherwise. 103 result files · sha 50e34713b · node v26.3.0 · generated 2026-06-11T04:05:28.897Z
The verdict — who won what
diff --git a/bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r0.json b/bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r0.json
new file mode 100644
index 00000000000..a25f94cf5ac
--- /dev/null
+++ b/bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r0.json
@@ -0,0 +1,405 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "ink",
+ "config": "ink",
+ "mode": "digest",
+ "rep": 0,
+ "run_id": "mq8wutgz-0kgl",
+ "utc": "2026-06-11T03:01:05.843Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": null,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2747428,
+ "gw_pid": 2747436,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.32,
+ 0.25,
+ 0.22
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 28,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 56632,
+ "pss_kb": 30499,
+ "private_dirty_kb": 19208,
+ "vmhwm_kb": 56632,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1031,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 6615,
+ "pty_writes": 11,
+ "rss_kb": 109088,
+ "pss_kb": 70171,
+ "private_dirty_kb": 50288,
+ "vmhwm_kb": 109088,
+ "utime_ticks": 22,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1435,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 10142,
+ "pty_writes": 14,
+ "rss_kb": 125888,
+ "pss_kb": 86792,
+ "private_dirty_kb": 66112,
+ "vmhwm_kb": 125904,
+ "utime_ticks": 30,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1487,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 18188,
+ "pty_writes": 17,
+ "rss_kb": 154620,
+ "pss_kb": 115396,
+ "private_dirty_kb": 94716,
+ "vmhwm_kb": 154652,
+ "utime_ticks": 38,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1511,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 22346,
+ "pty_writes": 19,
+ "rss_kb": 161048,
+ "pss_kb": 121792,
+ "private_dirty_kb": 101080,
+ "vmhwm_kb": 161244,
+ "utime_ticks": 42,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "done",
+ "t_ms": 1512,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 22346,
+ "pty_writes": 19,
+ "rss_kb": 161444,
+ "pss_kb": 122188,
+ "private_dirty_kb": 101476,
+ "vmhwm_kb": 161796,
+ "utime_ticks": 42,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2040,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 33845,
+ "pty_writes": 23,
+ "rss_kb": 177008,
+ "pss_kb": 137720,
+ "private_dirty_kb": 117040,
+ "vmhwm_kb": 181412,
+ "utime_ticks": 56,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "final",
+ "t_ms": 2914,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 33890,
+ "pty_writes": 24,
+ "rss_kb": 177020,
+ "pss_kb": 137732,
+ "private_dirty_kb": 117052,
+ "vmhwm_kb": 181412,
+ "utime_ticks": 56,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3042,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 37404,
+ "pty_writes": 26,
+ "rss_kb": 182480,
+ "pss_kb": 143192,
+ "private_dirty_kb": 122512,
+ "vmhwm_kb": 182480,
+ "utime_ticks": 59,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4048,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 48114,
+ "pty_writes": 32,
+ "rss_kb": 182940,
+ "pss_kb": 143652,
+ "private_dirty_kb": 122972,
+ "vmhwm_kb": 182940,
+ "utime_ticks": 63,
+ "stime_ticks": 6
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 177
+ },
+ {
+ "kind": "rpc",
+ "method": "commands.catalog",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "setup.status",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1408
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1434
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1435
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1459
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1459
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1484
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1487
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1509
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1509
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1512
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1534
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1534
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1559
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1559
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1584
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1584
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1584
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 1709
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2940
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2940
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3040
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3091
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 3218
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3319
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3319
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3419
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3494
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4527
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 48340,
+ "pty_data_callbacks": 41,
+ "first_byte_ms": 65,
+ "session_create_ms": 202,
+ "stream_start_ms": 1408,
+ "vmhwm_kb": 182940,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 2,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "7775bee02e57da2be0f73880cfe828666f51e08209a28ba81ec599817b95eb2c"
+ },
+ "digest_text": "Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit┃exercitationincididuntdolorproidentvelitlaborismagnaamet.─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯│┃Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit│exercitationincididuntdolorproidentvelitlaborismagnaamet.┃─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯4"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r1.json b/bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r1.json
new file mode 100644
index 00000000000..5ebccf0ce0a
--- /dev/null
+++ b/bench/results/2026-06-11T0301-cbe703c-gate-ink-ink-r1.json
@@ -0,0 +1,410 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "ink",
+ "config": "ink",
+ "mode": "digest",
+ "rep": 1,
+ "run_id": "mq8wv4sn-riua",
+ "utc": "2026-06-11T03:01:20.520Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": null,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2747731,
+ "gw_pid": 2747739,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.25,
+ 0.23,
+ 0.22
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 26,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 56620,
+ "pss_kb": 30475,
+ "private_dirty_kb": 19184,
+ "vmhwm_kb": 56632,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1030,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 6602,
+ "pty_writes": 8,
+ "rss_kb": 108108,
+ "pss_kb": 68923,
+ "private_dirty_kb": 48920,
+ "vmhwm_kb": 108108,
+ "utime_ticks": 24,
+ "stime_ticks": 1
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1458,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 14276,
+ "pty_writes": 12,
+ "rss_kb": 126536,
+ "pss_kb": 87277,
+ "private_dirty_kb": 66624,
+ "vmhwm_kb": 126572,
+ "utime_ticks": 34,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1508,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 21575,
+ "pty_writes": 14,
+ "rss_kb": 156444,
+ "pss_kb": 117132,
+ "private_dirty_kb": 96468,
+ "vmhwm_kb": 156188,
+ "utime_ticks": 43,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1509,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 21575,
+ "pty_writes": 14,
+ "rss_kb": 156064,
+ "pss_kb": 116752,
+ "private_dirty_kb": 96088,
+ "vmhwm_kb": 156096,
+ "utime_ticks": 43,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "done",
+ "t_ms": 1510,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 21575,
+ "pty_writes": 14,
+ "rss_kb": 156200,
+ "pss_kb": 116888,
+ "private_dirty_kb": 96224,
+ "vmhwm_kb": 156244,
+ "utime_ticks": 44,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2035,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 32545,
+ "pty_writes": 20,
+ "rss_kb": 169464,
+ "pss_kb": 130152,
+ "private_dirty_kb": 109488,
+ "vmhwm_kb": 177332,
+ "utime_ticks": 59,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "final",
+ "t_ms": 2923,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 32590,
+ "pty_writes": 21,
+ "rss_kb": 169480,
+ "pss_kb": 130168,
+ "private_dirty_kb": 109504,
+ "vmhwm_kb": 177332,
+ "utime_ticks": 59,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3044,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 36104,
+ "pty_writes": 23,
+ "rss_kb": 174836,
+ "pss_kb": 135524,
+ "private_dirty_kb": 114860,
+ "vmhwm_kb": 177332,
+ "utime_ticks": 62,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4052,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 46814,
+ "pty_writes": 29,
+ "rss_kb": 175716,
+ "pss_kb": 136404,
+ "private_dirty_kb": 115740,
+ "vmhwm_kb": 177332,
+ "utime_ticks": 65,
+ "stime_ticks": 5
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 176
+ },
+ {
+ "kind": "rpc",
+ "method": "commands.catalog",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "setup.status",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1431
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1431
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1431
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1458
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1458
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1458
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1481
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1508
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1508
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1531
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1531
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1556
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1556
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1581
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1581
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1581
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1581
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 1732
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2940
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2940
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3042
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3092
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 3218
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3344
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3344
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3445
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3496
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4536
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 47040,
+ "pty_data_callbacks": 33,
+ "first_byte_ms": 64,
+ "session_create_ms": 201,
+ "stream_start_ms": 1406,
+ "vmhwm_kb": 177332,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 2,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "7775bee02e57da2be0f73880cfe828666f51e08209a28ba81ec599817b95eb2c"
+ },
+ "digest_text": "Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit┃exercitationincididuntdolorproidentvelitlaborismagnaamet.─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯│┃Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit│exercitationincididuntdolorproidentvelitlaborismagnaamet.┃─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯4"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r0.json b/bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r0.json
new file mode 100644
index 00000000000..cbb397d14f3
--- /dev/null
+++ b/bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r0.json
@@ -0,0 +1,225 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "opentui",
+ "config": "otui-capped",
+ "mode": "digest",
+ "rep": 0,
+ "run_id": "mq8wvg4o-1gxt",
+ "utc": "2026-06-11T03:01:35.209Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": 3000,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2748029,
+ "gw_pid": 2748038,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.6,
+ 0.3,
+ 0.24
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 26,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 55352,
+ "pss_kb": 29161,
+ "private_dirty_kb": 17928,
+ "vmhwm_kb": 55492,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1036,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 28911,
+ "pty_writes": 12,
+ "rss_kb": 105232,
+ "pss_kb": 65033,
+ "private_dirty_kb": 48440,
+ "vmhwm_kb": 107724,
+ "utime_ticks": 17,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1366,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 31413,
+ "pty_writes": 14,
+ "rss_kb": 110728,
+ "pss_kb": 70492,
+ "private_dirty_kb": 53936,
+ "vmhwm_kb": 110960,
+ "utime_ticks": 19,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1367,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 31413,
+ "pty_writes": 14,
+ "rss_kb": 111020,
+ "pss_kb": 70720,
+ "private_dirty_kb": 54100,
+ "vmhwm_kb": 111044,
+ "utime_ticks": 19,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1393,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 14,
+ "rss_kb": 113564,
+ "pss_kb": 73173,
+ "private_dirty_kb": 56516,
+ "vmhwm_kb": 113600,
+ "utime_ticks": 24,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "done",
+ "t_ms": 1395,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 14,
+ "rss_kb": 113828,
+ "pss_kb": 73437,
+ "private_dirty_kb": 56780,
+ "vmhwm_kb": 113904,
+ "utime_ticks": 24,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2046,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 35562,
+ "pty_writes": 17,
+ "rss_kb": 278488,
+ "pss_kb": 236135,
+ "private_dirty_kb": 217992,
+ "vmhwm_kb": 302824,
+ "utime_ticks": 107,
+ "stime_ticks": 10
+ },
+ {
+ "kind": "final",
+ "t_ms": 2856,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 35634,
+ "pty_writes": 18,
+ "rss_kb": 278520,
+ "pss_kb": 236167,
+ "private_dirty_kb": 218024,
+ "vmhwm_kb": 302824,
+ "utime_ticks": 107,
+ "stime_ticks": 10
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3061,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 46545,
+ "pty_writes": 22,
+ "rss_kb": 278584,
+ "pss_kb": 236231,
+ "private_dirty_kb": 218088,
+ "vmhwm_kb": 302824,
+ "utime_ticks": 108,
+ "stime_ticks": 10
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4076,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 57867,
+ "pty_writes": 27,
+ "rss_kb": 278616,
+ "pss_kb": 236263,
+ "private_dirty_kb": 218120,
+ "vmhwm_kb": 302824,
+ "utime_ticks": 109,
+ "stime_ticks": 10
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 175
+ },
+ {
+ "kind": "rpc",
+ "method": "startup.catalog",
+ "t_ms": 175
+ },
+ {
+ "kind": "rpc",
+ "method": "model.options",
+ "t_ms": 175
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4714
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 62678,
+ "pty_data_callbacks": 32,
+ "first_byte_ms": 124,
+ "session_create_ms": 175,
+ "stream_start_ms": 1364,
+ "vmhwm_kb": 302824,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 3,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "d5e9558583159eac9e72e450848f98505ac9f48804d4f8c80a18baaab0f0f28c"
+ },
+ "digest_text": "⚕ Hermes Agent · opentui · ready ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── $ terminal Culpa cillum commodo enim. · 3.7s (2 lines) ◇ read_file Duis veniam sed anim. · 3.8s (18 lines) ◦ edit_file Tempor ipsum cupidatat voluptate. · 3.9s (7 lines) ◦ grep Sunt esse aliquip aliqua. · 4.0s (2 lines) ● web_search Consequat minim elit mollit. · 0.1s (18 lines) ◆ write_file Eiusmod lorem occaecat reprehenderit. · 0.2s (7 lines) $ terminal Proident velit laboris magna. · 0.3s (2 lines) Minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor. Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation. ⧉ copy ⚕ Tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua. Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. Veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit. - Sunt esse aliquip aliqua consectetur. - Consequat minim elit mollit pariatur aute quis. - Eiusmod lorem occaecat reprehenderit. const x4 = 58 function f3() { return x } Exercitation incididunt dolor proident velit laboris magna amet culpa cillum. Lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet. ⧉ copy ▄ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ● fake-model │ up: Ns │ …/lively-thrush/hermes-agent ❯ Type your message"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r1.json b/bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r1.json
new file mode 100644
index 00000000000..368466bf5df
--- /dev/null
+++ b/bench/results/2026-06-11T0301-cbe703c-gate-opentui-otui-capped-r1.json
@@ -0,0 +1,225 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "opentui",
+ "config": "otui-capped",
+ "mode": "digest",
+ "rep": 1,
+ "run_id": "mq8wvrhs-caou",
+ "utc": "2026-06-11T03:01:49.936Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": 3000,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2748346,
+ "gw_pid": 2748355,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.62,
+ 0.32,
+ 0.25
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 26,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 50580,
+ "pss_kb": 24576,
+ "private_dirty_kb": 13348,
+ "vmhwm_kb": 50644,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1035,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 28911,
+ "pty_writes": 11,
+ "rss_kb": 104296,
+ "pss_kb": 64225,
+ "private_dirty_kb": 47760,
+ "vmhwm_kb": 106956,
+ "utime_ticks": 17,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1392,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 112784,
+ "pss_kb": 72612,
+ "private_dirty_kb": 56120,
+ "vmhwm_kb": 112800,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1394,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 113048,
+ "pss_kb": 72876,
+ "private_dirty_kb": 56384,
+ "vmhwm_kb": 113056,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1394,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 113304,
+ "pss_kb": 73132,
+ "private_dirty_kb": 56640,
+ "vmhwm_kb": 113328,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "done",
+ "t_ms": 1395,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 113424,
+ "pss_kb": 73252,
+ "private_dirty_kb": 56760,
+ "vmhwm_kb": 113484,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2044,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 38037,
+ "pty_writes": 17,
+ "rss_kb": 281988,
+ "pss_kb": 239635,
+ "private_dirty_kb": 221492,
+ "vmhwm_kb": 305196,
+ "utime_ticks": 107,
+ "stime_ticks": 12
+ },
+ {
+ "kind": "final",
+ "t_ms": 2866,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 38109,
+ "pty_writes": 18,
+ "rss_kb": 282008,
+ "pss_kb": 239655,
+ "private_dirty_kb": 221512,
+ "vmhwm_kb": 305196,
+ "utime_ticks": 107,
+ "stime_ticks": 12
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3052,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 49020,
+ "pty_writes": 22,
+ "rss_kb": 282044,
+ "pss_kb": 239691,
+ "private_dirty_kb": 221548,
+ "vmhwm_kb": 305196,
+ "utime_ticks": 109,
+ "stime_ticks": 12
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4066,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 60342,
+ "pty_writes": 27,
+ "rss_kb": 282068,
+ "pss_kb": 239715,
+ "private_dirty_kb": 221572,
+ "vmhwm_kb": 305196,
+ "utime_ticks": 109,
+ "stime_ticks": 12
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 176
+ },
+ {
+ "kind": "rpc",
+ "method": "startup.catalog",
+ "t_ms": 176
+ },
+ {
+ "kind": "rpc",
+ "method": "model.options",
+ "t_ms": 176
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4702
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 65153,
+ "pty_data_callbacks": 32,
+ "first_byte_ms": 133,
+ "session_create_ms": 176,
+ "stream_start_ms": 1366,
+ "vmhwm_kb": 305196,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 4,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "d5e9558583159eac9e72e450848f98505ac9f48804d4f8c80a18baaab0f0f28c"
+ },
+ "digest_text": "⚕ Hermes Agent · opentui · ready ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── $ terminal Culpa cillum commodo enim. · 3.7s (2 lines) ◇ read_file Duis veniam sed anim. · 3.8s (18 lines) ◦ edit_file Tempor ipsum cupidatat voluptate. · 3.9s (7 lines) ◦ grep Sunt esse aliquip aliqua. · 4.0s (2 lines) ● web_search Consequat minim elit mollit. · 0.1s (18 lines) ◆ write_file Eiusmod lorem occaecat reprehenderit. · 0.2s (7 lines) $ terminal Proident velit laboris magna. · 0.3s (2 lines) Minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor. Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation. ⧉ copy ⚕ Tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua. Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. Veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit. - Sunt esse aliquip aliqua consectetur. - Consequat minim elit mollit pariatur aute quis. - Eiusmod lorem occaecat reprehenderit. const x4 = 58 function f3() { return x } Exercitation incididunt dolor proident velit laboris magna amet culpa cillum. Lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet. ⧉ copy ▄ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ● fake-model │ up: Ns │ …/lively-thrush/hermes-agent ❯ Type your message"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0340-cbe703c-gate-ink-ink-r0.json b/bench/results/2026-06-11T0340-cbe703c-gate-ink-ink-r0.json
new file mode 100644
index 00000000000..8c22656ee97
--- /dev/null
+++ b/bench/results/2026-06-11T0340-cbe703c-gate-ink-ink-r0.json
@@ -0,0 +1,405 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "ink",
+ "config": "ink",
+ "mode": "digest",
+ "rep": 0,
+ "run_id": "mq8y9wb4-jfc2",
+ "utc": "2026-06-11T03:40:48.977Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": null,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2790566,
+ "gw_pid": 2790574,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.16,
+ 0.34,
+ 0.3
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 27,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 56576,
+ "pss_kb": 30478,
+ "private_dirty_kb": 19188,
+ "vmhwm_kb": 56576,
+ "utime_ticks": 2,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1037,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 6602,
+ "pty_writes": 11,
+ "rss_kb": 107208,
+ "pss_kb": 68326,
+ "private_dirty_kb": 48444,
+ "vmhwm_kb": 107208,
+ "utime_ticks": 24,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1440,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 6696,
+ "pty_writes": 13,
+ "rss_kb": 123580,
+ "pss_kb": 84520,
+ "private_dirty_kb": 63840,
+ "vmhwm_kb": 123584,
+ "utime_ticks": 30,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1517,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 21092,
+ "pty_writes": 18,
+ "rss_kb": 163196,
+ "pss_kb": 123976,
+ "private_dirty_kb": 103264,
+ "vmhwm_kb": 163276,
+ "utime_ticks": 45,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1518,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 21092,
+ "pty_writes": 18,
+ "rss_kb": 163400,
+ "pss_kb": 124180,
+ "private_dirty_kb": 103468,
+ "vmhwm_kb": 163556,
+ "utime_ticks": 45,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "done",
+ "t_ms": 1519,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 21092,
+ "pty_writes": 18,
+ "rss_kb": 163664,
+ "pss_kb": 124444,
+ "private_dirty_kb": 103732,
+ "vmhwm_kb": 163804,
+ "utime_ticks": 45,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2046,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 32637,
+ "pty_writes": 26,
+ "rss_kb": 180276,
+ "pss_kb": 141024,
+ "private_dirty_kb": 120344,
+ "vmhwm_kb": 182012,
+ "utime_ticks": 59,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "final",
+ "t_ms": 2928,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 32682,
+ "pty_writes": 27,
+ "rss_kb": 180292,
+ "pss_kb": 141040,
+ "private_dirty_kb": 120360,
+ "vmhwm_kb": 182012,
+ "utime_ticks": 59,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3057,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 36196,
+ "pty_writes": 29,
+ "rss_kb": 185356,
+ "pss_kb": 146104,
+ "private_dirty_kb": 125424,
+ "vmhwm_kb": 185356,
+ "utime_ticks": 62,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4065,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 46906,
+ "pty_writes": 35,
+ "rss_kb": 187608,
+ "pss_kb": 148356,
+ "private_dirty_kb": 127676,
+ "vmhwm_kb": 187608,
+ "utime_ticks": 64,
+ "stime_ticks": 5
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 176
+ },
+ {
+ "kind": "rpc",
+ "method": "commands.catalog",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "setup.status",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1413
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1439
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1439
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1464
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1464
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1489
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1489
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1517
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1517
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1519
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1539
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1565
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1565
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1589
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1589
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1615
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1615
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 1715
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2931
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2956
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3031
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3107
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 3233
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3334
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3334
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3434
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3509
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4541
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 47132,
+ "pty_data_callbacks": 46,
+ "first_byte_ms": 73,
+ "session_create_ms": 226,
+ "stream_start_ms": 1413,
+ "vmhwm_kb": 187608,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 5,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "7775bee02e57da2be0f73880cfe828666f51e08209a28ba81ec599817b95eb2c"
+ },
+ "digest_text": "Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit┃exercitationincididuntdolorproidentvelitlaborismagnaamet.─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯│┃Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit│exercitationincididuntdolorproidentvelitlaborismagnaamet.┃─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯4"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0341-cbe703c-gate-ink-ink-r1.json b/bench/results/2026-06-11T0341-cbe703c-gate-ink-ink-r1.json
new file mode 100644
index 00000000000..0b13a8bba5f
--- /dev/null
+++ b/bench/results/2026-06-11T0341-cbe703c-gate-ink-ink-r1.json
@@ -0,0 +1,410 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "ink",
+ "config": "ink",
+ "mode": "digest",
+ "rep": 1,
+ "run_id": "mq8ya7nc-28r5",
+ "utc": "2026-06-11T03:41:03.672Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": null,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2790907,
+ "gw_pid": 2790916,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.12,
+ 0.32,
+ 0.3
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 26,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 56044,
+ "pss_kb": 29891,
+ "private_dirty_kb": 18600,
+ "vmhwm_kb": 56120,
+ "utime_ticks": 2,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1034,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 6602,
+ "pty_writes": 11,
+ "rss_kb": 106464,
+ "pss_kb": 67373,
+ "private_dirty_kb": 47556,
+ "vmhwm_kb": 106464,
+ "utime_ticks": 23,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1463,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 14893,
+ "pty_writes": 16,
+ "rss_kb": 127408,
+ "pss_kb": 88053,
+ "private_dirty_kb": 67396,
+ "vmhwm_kb": 127464,
+ "utime_ticks": 36,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1513,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 18361,
+ "pty_writes": 17,
+ "rss_kb": 173200,
+ "pss_kb": 133823,
+ "private_dirty_kb": 113188,
+ "vmhwm_kb": 173700,
+ "utime_ticks": 42,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1538,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 21601,
+ "pty_writes": 18,
+ "rss_kb": 183660,
+ "pss_kb": 144251,
+ "private_dirty_kb": 123584,
+ "vmhwm_kb": 183936,
+ "utime_ticks": 48,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "done",
+ "t_ms": 1539,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 21601,
+ "pty_writes": 18,
+ "rss_kb": 184172,
+ "pss_kb": 144763,
+ "private_dirty_kb": 124096,
+ "vmhwm_kb": 184380,
+ "utime_ticks": 48,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2044,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 32642,
+ "pty_writes": 23,
+ "rss_kb": 186908,
+ "pss_kb": 147499,
+ "private_dirty_kb": 126832,
+ "vmhwm_kb": 197736,
+ "utime_ticks": 59,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "final",
+ "t_ms": 2916,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 32687,
+ "pty_writes": 24,
+ "rss_kb": 186916,
+ "pss_kb": 147507,
+ "private_dirty_kb": 126840,
+ "vmhwm_kb": 197736,
+ "utime_ticks": 59,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3052,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 36201,
+ "pty_writes": 26,
+ "rss_kb": 190008,
+ "pss_kb": 150599,
+ "private_dirty_kb": 129932,
+ "vmhwm_kb": 197736,
+ "utime_ticks": 62,
+ "stime_ticks": 6
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4059,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 46911,
+ "pty_writes": 32,
+ "rss_kb": 190160,
+ "pss_kb": 150751,
+ "private_dirty_kb": 130084,
+ "vmhwm_kb": 197736,
+ "utime_ticks": 64,
+ "stime_ticks": 6
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 175
+ },
+ {
+ "kind": "rpc",
+ "method": "commands.catalog",
+ "t_ms": 200
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 200
+ },
+ {
+ "kind": "rpc",
+ "method": "setup.status",
+ "t_ms": 200
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 200
+ },
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 200
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 200
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 200
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 225
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 225
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 225
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 225
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 225
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1411
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1436
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1436
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1463
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1463
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1463
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1486
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1513
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1536
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1539
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1561
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1586
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1586
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1586
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1611
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1611
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1611
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 1712
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2924
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2924
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3025
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3101
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 3227
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3328
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3328
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3429
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3479
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4530
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 47137,
+ "pty_data_callbacks": 40,
+ "first_byte_ms": 67,
+ "session_create_ms": 200,
+ "stream_start_ms": 1411,
+ "vmhwm_kb": 197736,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 3,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "7775bee02e57da2be0f73880cfe828666f51e08209a28ba81ec599817b95eb2c"
+ },
+ "digest_text": "Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit┃exercitationincididuntdolorproidentvelitlaborismagnaamet.─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯│┃Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit│exercitationincididuntdolorproidentvelitlaborismagnaamet.┃─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯4"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r0.json b/bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r0.json
new file mode 100644
index 00000000000..4064ec95239
--- /dev/null
+++ b/bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r0.json
@@ -0,0 +1,225 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "opentui",
+ "config": "otui-capped",
+ "mode": "digest",
+ "rep": 0,
+ "run_id": "mq8yaiz0-bh91",
+ "utc": "2026-06-11T03:41:18.349Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": 3000,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2791183,
+ "gw_pid": 2791193,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.17,
+ 0.32,
+ 0.3
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 26,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 55288,
+ "pss_kb": 29060,
+ "private_dirty_kb": 17828,
+ "vmhwm_kb": 55296,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1030,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 28911,
+ "pty_writes": 11,
+ "rss_kb": 104364,
+ "pss_kb": 64318,
+ "private_dirty_kb": 47856,
+ "vmhwm_kb": 106956,
+ "utime_ticks": 17,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1383,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 112312,
+ "pss_kb": 72165,
+ "private_dirty_kb": 55676,
+ "vmhwm_kb": 112188,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1384,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 112040,
+ "pss_kb": 71893,
+ "private_dirty_kb": 55404,
+ "vmhwm_kb": 112040,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1385,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 112040,
+ "pss_kb": 71893,
+ "private_dirty_kb": 55404,
+ "vmhwm_kb": 112040,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "done",
+ "t_ms": 1385,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 112048,
+ "pss_kb": 71901,
+ "private_dirty_kb": 55412,
+ "vmhwm_kb": 112048,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2036,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 35562,
+ "pty_writes": 16,
+ "rss_kb": 283432,
+ "pss_kb": 241104,
+ "private_dirty_kb": 222964,
+ "vmhwm_kb": 303020,
+ "utime_ticks": 110,
+ "stime_ticks": 10
+ },
+ {
+ "kind": "final",
+ "t_ms": 2866,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 35634,
+ "pty_writes": 17,
+ "rss_kb": 283464,
+ "pss_kb": 241136,
+ "private_dirty_kb": 222996,
+ "vmhwm_kb": 303020,
+ "utime_ticks": 111,
+ "stime_ticks": 10
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3048,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 46545,
+ "pty_writes": 21,
+ "rss_kb": 283520,
+ "pss_kb": 241192,
+ "private_dirty_kb": 223052,
+ "vmhwm_kb": 303020,
+ "utime_ticks": 112,
+ "stime_ticks": 10
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4048,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 57867,
+ "pty_writes": 26,
+ "rss_kb": 283560,
+ "pss_kb": 241232,
+ "private_dirty_kb": 223092,
+ "vmhwm_kb": 303020,
+ "utime_ticks": 113,
+ "stime_ticks": 10
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 175
+ },
+ {
+ "kind": "rpc",
+ "method": "startup.catalog",
+ "t_ms": 175
+ },
+ {
+ "kind": "rpc",
+ "method": "model.options",
+ "t_ms": 175
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4722
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 62678,
+ "pty_data_callbacks": 31,
+ "first_byte_ms": 134,
+ "session_create_ms": 175,
+ "stream_start_ms": 1382,
+ "vmhwm_kb": 303020,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 3,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "d5e9558583159eac9e72e450848f98505ac9f48804d4f8c80a18baaab0f0f28c"
+ },
+ "digest_text": "⚕ Hermes Agent · opentui · ready ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── $ terminal Culpa cillum commodo enim. · 3.7s (2 lines) ◇ read_file Duis veniam sed anim. · 3.8s (18 lines) ◦ edit_file Tempor ipsum cupidatat voluptate. · 3.9s (7 lines) ◦ grep Sunt esse aliquip aliqua. · 4.0s (2 lines) ● web_search Consequat minim elit mollit. · 0.1s (18 lines) ◆ write_file Eiusmod lorem occaecat reprehenderit. · 0.2s (7 lines) $ terminal Proident velit laboris magna. · 0.3s (2 lines) Minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor. Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation. ⧉ copy ⚕ Tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua. Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. Veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit. - Sunt esse aliquip aliqua consectetur. - Consequat minim elit mollit pariatur aute quis. - Eiusmod lorem occaecat reprehenderit. const x4 = 58 function f3() { return x } Exercitation incididunt dolor proident velit laboris magna amet culpa cillum. Lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet. ⧉ copy ▄ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ● fake-model │ up: Ns │ …/lively-thrush/hermes-agent ❯ Type your message"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r1.json b/bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r1.json
new file mode 100644
index 00000000000..e33912cac46
--- /dev/null
+++ b/bench/results/2026-06-11T0341-cbe703c-gate-opentui-otui-capped-r1.json
@@ -0,0 +1,225 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "opentui",
+ "config": "otui-capped",
+ "mode": "digest",
+ "rep": 1,
+ "run_id": "mq8yaucb-nuat",
+ "utc": "2026-06-11T03:41:33.083Z",
+ "sha": "cbe703cf4",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": 3000,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2791496,
+ "gw_pid": 2791505,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.13,
+ 0.3,
+ 0.29
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 27,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 54936,
+ "pss_kb": 28731,
+ "private_dirty_kb": 17500,
+ "vmhwm_kb": 54988,
+ "utime_ticks": 2,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1030,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 28911,
+ "pty_writes": 10,
+ "rss_kb": 105056,
+ "pss_kb": 64905,
+ "private_dirty_kb": 48316,
+ "vmhwm_kb": 107724,
+ "utime_ticks": 17,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1381,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 31413,
+ "pty_writes": 12,
+ "rss_kb": 109788,
+ "pss_kb": 69601,
+ "private_dirty_kb": 53048,
+ "vmhwm_kb": 109988,
+ "utime_ticks": 20,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1406,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 31413,
+ "pty_writes": 12,
+ "rss_kb": 118600,
+ "pss_kb": 77131,
+ "private_dirty_kb": 60184,
+ "vmhwm_kb": 118688,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1534,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 12,
+ "rss_kb": 179504,
+ "pss_kb": 137419,
+ "private_dirty_kb": 119564,
+ "vmhwm_kb": 179512,
+ "utime_ticks": 44,
+ "stime_ticks": 6
+ },
+ {
+ "kind": "done",
+ "t_ms": 1535,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 12,
+ "rss_kb": 179584,
+ "pss_kb": 137499,
+ "private_dirty_kb": 119644,
+ "vmhwm_kb": 179592,
+ "utime_ticks": 44,
+ "stime_ticks": 6
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2033,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 41822,
+ "pty_writes": 18,
+ "rss_kb": 277056,
+ "pss_kb": 234752,
+ "private_dirty_kb": 216612,
+ "vmhwm_kb": 322676,
+ "utime_ticks": 114,
+ "stime_ticks": 11
+ },
+ {
+ "kind": "final",
+ "t_ms": 2863,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 41894,
+ "pty_writes": 19,
+ "rss_kb": 277076,
+ "pss_kb": 234772,
+ "private_dirty_kb": 216632,
+ "vmhwm_kb": 322676,
+ "utime_ticks": 114,
+ "stime_ticks": 11
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3042,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 52805,
+ "pty_writes": 23,
+ "rss_kb": 277112,
+ "pss_kb": 234808,
+ "private_dirty_kb": 216668,
+ "vmhwm_kb": 322676,
+ "utime_ticks": 115,
+ "stime_ticks": 11
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4055,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 64127,
+ "pty_writes": 28,
+ "rss_kb": 277464,
+ "pss_kb": 235160,
+ "private_dirty_kb": 217020,
+ "vmhwm_kb": 322676,
+ "utime_ticks": 124,
+ "stime_ticks": 11
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 176
+ },
+ {
+ "kind": "rpc",
+ "method": "startup.catalog",
+ "t_ms": 176
+ },
+ {
+ "kind": "rpc",
+ "method": "model.options",
+ "t_ms": 176
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4692
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 68938,
+ "pty_data_callbacks": 33,
+ "first_byte_ms": 130,
+ "session_create_ms": 176,
+ "stream_start_ms": 1379,
+ "vmhwm_kb": 322676,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 3,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "d5e9558583159eac9e72e450848f98505ac9f48804d4f8c80a18baaab0f0f28c"
+ },
+ "digest_text": "⚕ Hermes Agent · opentui · ready ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── $ terminal Culpa cillum commodo enim. · 3.7s (2 lines) ◇ read_file Duis veniam sed anim. · 3.8s (18 lines) ◦ edit_file Tempor ipsum cupidatat voluptate. · 3.9s (7 lines) ◦ grep Sunt esse aliquip aliqua. · 4.0s (2 lines) ● web_search Consequat minim elit mollit. · 0.1s (18 lines) ◆ write_file Eiusmod lorem occaecat reprehenderit. · 0.2s (7 lines) $ terminal Proident velit laboris magna. · 0.3s (2 lines) Minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor. Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation. ⧉ copy ⚕ Tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua. Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. Veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit. - Sunt esse aliquip aliqua consectetur. - Consequat minim elit mollit pariatur aute quis. - Eiusmod lorem occaecat reprehenderit. const x4 = 58 function f3() { return x } Exercitation incididunt dolor proident velit laboris magna amet culpa cillum. Lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet. ⧉ copy ▄ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ● fake-model │ up: Ns │ …/lively-thrush/hermes-agent ❯ Type your message"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0348-af1e4bb-gate-ink-ink-r0.json b/bench/results/2026-06-11T0348-af1e4bb-gate-ink-ink-r0.json
new file mode 100644
index 00000000000..db8bec6e49f
--- /dev/null
+++ b/bench/results/2026-06-11T0348-af1e4bb-gate-ink-ink-r0.json
@@ -0,0 +1,410 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "ink",
+ "config": "ink",
+ "mode": "digest",
+ "rep": 0,
+ "run_id": "mq8ykasw-c2dn",
+ "utc": "2026-06-11T03:48:54.321Z",
+ "sha": "af1e4bb9a",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": null,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2799721,
+ "gw_pid": 2799729,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.12,
+ 0.19,
+ 0.24
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 29,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 56752,
+ "pss_kb": 30599,
+ "private_dirty_kb": 19308,
+ "vmhwm_kb": 56900,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1033,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 6602,
+ "pty_writes": 11,
+ "rss_kb": 107664,
+ "pss_kb": 68518,
+ "private_dirty_kb": 48444,
+ "vmhwm_kb": 107664,
+ "utime_ticks": 23,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1439,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 10265,
+ "pty_writes": 14,
+ "rss_kb": 124556,
+ "pss_kb": 85357,
+ "private_dirty_kb": 64612,
+ "vmhwm_kb": 124560,
+ "utime_ticks": 30,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1515,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 20671,
+ "pty_writes": 17,
+ "rss_kb": 164112,
+ "pss_kb": 124849,
+ "private_dirty_kb": 104168,
+ "vmhwm_kb": 164220,
+ "utime_ticks": 43,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1541,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 20671,
+ "pty_writes": 17,
+ "rss_kb": 174332,
+ "pss_kb": 135037,
+ "private_dirty_kb": 114324,
+ "vmhwm_kb": 174392,
+ "utime_ticks": 47,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "done",
+ "t_ms": 1542,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 20671,
+ "pty_writes": 17,
+ "rss_kb": 174500,
+ "pss_kb": 135205,
+ "private_dirty_kb": 114492,
+ "vmhwm_kb": 174532,
+ "utime_ticks": 47,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2046,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 31482,
+ "pty_writes": 22,
+ "rss_kb": 180544,
+ "pss_kb": 141217,
+ "private_dirty_kb": 120536,
+ "vmhwm_kb": 186104,
+ "utime_ticks": 59,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "final",
+ "t_ms": 2921,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31527,
+ "pty_writes": 23,
+ "rss_kb": 180552,
+ "pss_kb": 141225,
+ "private_dirty_kb": 120544,
+ "vmhwm_kb": 186104,
+ "utime_ticks": 59,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3051,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 35041,
+ "pty_writes": 25,
+ "rss_kb": 193136,
+ "pss_kb": 153809,
+ "private_dirty_kb": 133128,
+ "vmhwm_kb": 193136,
+ "utime_ticks": 62,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4058,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 45751,
+ "pty_writes": 31,
+ "rss_kb": 200928,
+ "pss_kb": 161601,
+ "private_dirty_kb": 140920,
+ "vmhwm_kb": 200928,
+ "utime_ticks": 65,
+ "stime_ticks": 6
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 177
+ },
+ {
+ "kind": "rpc",
+ "method": "commands.catalog",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 202
+ },
+ {
+ "kind": "rpc",
+ "method": "setup.status",
+ "t_ms": 203
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 203
+ },
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 203
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 203
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1412
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1438
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1438
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1463
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1463
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1463
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1488
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1515
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1515
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1542
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1542
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1563
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1588
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1588
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1588
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1613
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1613
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 1715
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2924
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2949
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3024
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3100
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 3226
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3326
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3326
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3427
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3503
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4534
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 45977,
+ "pty_data_callbacks": 43,
+ "first_byte_ms": 66,
+ "session_create_ms": 203,
+ "stream_start_ms": 1412,
+ "vmhwm_kb": 200928,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 3,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "7775bee02e57da2be0f73880cfe828666f51e08209a28ba81ec599817b95eb2c"
+ },
+ "digest_text": "Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit┃exercitationincididuntdolorproidentvelitlaborismagnaamet.─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯│┃Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit│exercitationincididuntdolorproidentvelitlaborismagnaamet.┃─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯4"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0349-de446a2-gate-ink-ink-r1.json b/bench/results/2026-06-11T0349-de446a2-gate-ink-ink-r1.json
new file mode 100644
index 00000000000..226a606cf7d
--- /dev/null
+++ b/bench/results/2026-06-11T0349-de446a2-gate-ink-ink-r1.json
@@ -0,0 +1,405 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "ink",
+ "config": "ink",
+ "mode": "digest",
+ "rep": 1,
+ "run_id": "mq8ykm4x-3da8",
+ "utc": "2026-06-11T03:49:09.009Z",
+ "sha": "af1e4bb9a",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": null,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2800087,
+ "gw_pid": 2800114,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.16,
+ 0.2,
+ 0.24
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 27,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 55880,
+ "pss_kb": 29751,
+ "private_dirty_kb": 18460,
+ "vmhwm_kb": 55916,
+ "utime_ticks": 2,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1036,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 6607,
+ "pty_writes": 11,
+ "rss_kb": 109100,
+ "pss_kb": 69916,
+ "private_dirty_kb": 49940,
+ "vmhwm_kb": 109100,
+ "utime_ticks": 24,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1467,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 10017,
+ "pty_writes": 14,
+ "rss_kb": 127512,
+ "pss_kb": 88276,
+ "private_dirty_kb": 67628,
+ "vmhwm_kb": 127512,
+ "utime_ticks": 34,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1518,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 18255,
+ "pty_writes": 17,
+ "rss_kb": 156516,
+ "pss_kb": 117207,
+ "private_dirty_kb": 96572,
+ "vmhwm_kb": 156532,
+ "utime_ticks": 43,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1545,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 22158,
+ "pty_writes": 18,
+ "rss_kb": 165096,
+ "pss_kb": 125755,
+ "private_dirty_kb": 105088,
+ "vmhwm_kb": 165320,
+ "utime_ticks": 48,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "done",
+ "t_ms": 1547,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 22158,
+ "pty_writes": 18,
+ "rss_kb": 165488,
+ "pss_kb": 126147,
+ "private_dirty_kb": 105480,
+ "vmhwm_kb": 165596,
+ "utime_ticks": 48,
+ "stime_ticks": 4
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2048,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 33656,
+ "pty_writes": 22,
+ "rss_kb": 169832,
+ "pss_kb": 130491,
+ "private_dirty_kb": 109824,
+ "vmhwm_kb": 175868,
+ "utime_ticks": 62,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "final",
+ "t_ms": 2933,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 33701,
+ "pty_writes": 23,
+ "rss_kb": 169840,
+ "pss_kb": 130499,
+ "private_dirty_kb": 109832,
+ "vmhwm_kb": 175868,
+ "utime_ticks": 62,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3062,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 37215,
+ "pty_writes": 25,
+ "rss_kb": 175672,
+ "pss_kb": 136331,
+ "private_dirty_kb": 115664,
+ "vmhwm_kb": 175868,
+ "utime_ticks": 64,
+ "stime_ticks": 5
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4072,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 47925,
+ "pty_writes": 31,
+ "rss_kb": 176564,
+ "pss_kb": 137223,
+ "private_dirty_kb": 116556,
+ "vmhwm_kb": 176564,
+ "utime_ticks": 66,
+ "stime_ticks": 5
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "commands.catalog",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 201
+ },
+ {
+ "kind": "rpc",
+ "method": "setup.status",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 228
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1441
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1441
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1467
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1467
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1491
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1517
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1518
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1542
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1542
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1567
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1567
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1592
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1592
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1617
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1617
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1617
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 1617
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 1718
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2960
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 2960
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3061
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3111
+ },
+ {
+ "kind": "rpc",
+ "method": "session.active_list",
+ "t_ms": 3236
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3337
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3362
+ },
+ {
+ "kind": "rpc",
+ "method": "terminal.resize",
+ "t_ms": 3438
+ },
+ {
+ "kind": "rpc",
+ "method": "config.get",
+ "t_ms": 3515
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4544
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 48151,
+ "pty_data_callbacks": 34,
+ "first_byte_ms": 71,
+ "session_create_ms": 228,
+ "stream_start_ms": 1416,
+ "vmhwm_kb": 176564,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 6,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "7775bee02e57da2be0f73880cfe828666f51e08209a28ba81ec599817b95eb2c"
+ },
+ "digest_text": "Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit┃exercitationincididuntdolorproidentvelitlaborismagnaamet.─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯│┃Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.│Amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed.│Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.│Esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis.│Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.│Magna amet culpa cillum.│Aute quis eiusmod lorem occaecat.│ └─ ● Terminal(\"Proident velit laboris magna.\") (0.3s)│ └─ Args:│Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla.│Elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident.│Ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit.│Nulla duis veniam sed.│Dolor proident velit laboris magna.│Result:│Pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.│Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute.││┊ Minimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitationincididuntdolor.Officia│fugiatconsequatminimelitmollitpariaturautequiseiusmodloremoccaecatreprehenderitexercitation.│┊ Temporipsumcupidatatvoluptateullamcolaboresitsuntessealiquipaliqua.Excepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresitsuntesse.Veniamsedanimexcepteurirurenostrudtempor│ipsumcupidatatvoluptateullamcolaboresit.││• Suntessealiquipaliquaconsectetur.│• Consequatminimelitmollitpariaturautequis.│• Eiusmodloremoccaecatreprehenderit.││─ ts│constx4=58│functionf3(){│returnx│}││Exercitationincididuntdolorproidentvelitlaborismagnaametculpacillum.Loremoccaecatreprehenderit│exercitationincididuntdolorproidentvelitlaborismagnaamet.┃─ ready │ fake model │ 3s │ voice off ─ …es-agent (…i-native-engine)❯4"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r0.json b/bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r0.json
new file mode 100644
index 00000000000..49d13a8e057
--- /dev/null
+++ b/bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r0.json
@@ -0,0 +1,225 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "opentui",
+ "config": "otui-capped",
+ "mode": "digest",
+ "rep": 0,
+ "run_id": "mq8ykxh7-wzwz",
+ "utc": "2026-06-11T03:49:23.707Z",
+ "sha": "af1e4bb9a",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": 3000,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2800413,
+ "gw_pid": 2800422,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.12,
+ 0.19,
+ 0.23
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 25,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 54316,
+ "pss_kb": 28111,
+ "private_dirty_kb": 16880,
+ "vmhwm_kb": 54448,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1031,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 28911,
+ "pty_writes": 14,
+ "rss_kb": 104400,
+ "pss_kb": 64249,
+ "private_dirty_kb": 47660,
+ "vmhwm_kb": 107340,
+ "utime_ticks": 17,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1386,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 31413,
+ "pty_writes": 16,
+ "rss_kb": 114988,
+ "pss_kb": 74737,
+ "private_dirty_kb": 58120,
+ "vmhwm_kb": 115144,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1388,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 31413,
+ "pty_writes": 16,
+ "rss_kb": 115256,
+ "pss_kb": 75005,
+ "private_dirty_kb": 58388,
+ "vmhwm_kb": 115260,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1388,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 16,
+ "rss_kb": 115388,
+ "pss_kb": 75137,
+ "private_dirty_kb": 58520,
+ "vmhwm_kb": 115468,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "done",
+ "t_ms": 1388,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 16,
+ "rss_kb": 115580,
+ "pss_kb": 75329,
+ "private_dirty_kb": 58712,
+ "vmhwm_kb": 115632,
+ "utime_ticks": 22,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2039,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 35562,
+ "pty_writes": 19,
+ "rss_kb": 265352,
+ "pss_kb": 223048,
+ "private_dirty_kb": 204908,
+ "vmhwm_kb": 289856,
+ "utime_ticks": 107,
+ "stime_ticks": 12
+ },
+ {
+ "kind": "final",
+ "t_ms": 2861,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 35634,
+ "pty_writes": 20,
+ "rss_kb": 265380,
+ "pss_kb": 223076,
+ "private_dirty_kb": 204936,
+ "vmhwm_kb": 289856,
+ "utime_ticks": 107,
+ "stime_ticks": 12
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3041,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 46545,
+ "pty_writes": 24,
+ "rss_kb": 265432,
+ "pss_kb": 223128,
+ "private_dirty_kb": 204988,
+ "vmhwm_kb": 289856,
+ "utime_ticks": 109,
+ "stime_ticks": 12
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4045,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 57867,
+ "pty_writes": 29,
+ "rss_kb": 265472,
+ "pss_kb": 223168,
+ "private_dirty_kb": 205028,
+ "vmhwm_kb": 289856,
+ "utime_ticks": 110,
+ "stime_ticks": 12
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 175
+ },
+ {
+ "kind": "rpc",
+ "method": "startup.catalog",
+ "t_ms": 175
+ },
+ {
+ "kind": "rpc",
+ "method": "model.options",
+ "t_ms": 175
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4708
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 62678,
+ "pty_data_callbacks": 34,
+ "first_byte_ms": 128,
+ "session_create_ms": 175,
+ "stream_start_ms": 1361,
+ "vmhwm_kb": 289856,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 2,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "d5e9558583159eac9e72e450848f98505ac9f48804d4f8c80a18baaab0f0f28c"
+ },
+ "digest_text": "⚕ Hermes Agent · opentui · ready ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── $ terminal Culpa cillum commodo enim. · 3.7s (2 lines) ◇ read_file Duis veniam sed anim. · 3.8s (18 lines) ◦ edit_file Tempor ipsum cupidatat voluptate. · 3.9s (7 lines) ◦ grep Sunt esse aliquip aliqua. · 4.0s (2 lines) ● web_search Consequat minim elit mollit. · 0.1s (18 lines) ◆ write_file Eiusmod lorem occaecat reprehenderit. · 0.2s (7 lines) $ terminal Proident velit laboris magna. · 0.3s (2 lines) Minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor. Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation. ⧉ copy ⚕ Tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua. Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. Veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit. - Sunt esse aliquip aliqua consectetur. - Consequat minim elit mollit pariatur aute quis. - Eiusmod lorem occaecat reprehenderit. const x4 = 58 function f3() { return x } Exercitation incididunt dolor proident velit laboris magna amet culpa cillum. Lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet. ⧉ copy ▄ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ● fake-model │ up: Ns │ …/lively-thrush/hermes-agent ❯ Type your message"
+}
\ No newline at end of file
diff --git a/bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r1.json b/bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r1.json
new file mode 100644
index 00000000000..09223401109
--- /dev/null
+++ b/bench/results/2026-06-11T0349-de446a2-gate-opentui-otui-capped-r1.json
@@ -0,0 +1,225 @@
+{
+ "meta": {
+ "cell": "gate",
+ "ui": "opentui",
+ "config": "otui-capped",
+ "mode": "digest",
+ "rep": 1,
+ "run_id": "mq8yl8u3-r7e3",
+ "utc": "2026-06-11T03:49:38.427Z",
+ "sha": "af1e4bb9a",
+ "node": "/home/daimon/.local/share/fnm/node-versions/v26.3.0/installation/bin/node",
+ "node_version": "v26.3.0",
+ "pty": {
+ "cols": 120,
+ "rows": 40,
+ "term": "xterm-256color"
+ },
+ "heap_mb": 8192,
+ "memory_max": null,
+ "container_cap": false,
+ "container_memory": null,
+ "opentui_cap": 3000,
+ "fixture": {
+ "path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-300.ndjson",
+ "msgs": 300,
+ "sha256": "ac81e975c299da7d50cfda7fc0fee33c356bd31a4e17a7f0f8e49905e205051a"
+ },
+ "sample_every": 100,
+ "mode_params": {},
+ "ui_pid": 2800695,
+ "gw_pid": 2800704,
+ "cgroup": null,
+ "load_avg_at_start": [
+ 0.16,
+ 0.19,
+ 0.24
+ ],
+ "instrumented": false
+ },
+ "samples": [
+ {
+ "kind": "periodic",
+ "t_ms": 27,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 0,
+ "pty_writes": 0,
+ "rss_kb": 55272,
+ "pss_kb": 29040,
+ "private_dirty_kb": 17808,
+ "vmhwm_kb": 55292,
+ "utime_ticks": 1,
+ "stime_ticks": 0
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 1033,
+ "msgs": null,
+ "events": null,
+ "pty_bytes": 28911,
+ "pty_writes": 11,
+ "rss_kb": 105052,
+ "pss_kb": 64904,
+ "private_dirty_kb": 48344,
+ "vmhwm_kb": 107488,
+ "utime_ticks": 17,
+ "stime_ticks": 2
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1386,
+ "msgs": 100,
+ "events": 355,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 113960,
+ "pss_kb": 73712,
+ "private_dirty_kb": 57124,
+ "vmhwm_kb": 113968,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1387,
+ "msgs": 200,
+ "events": 738,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 113968,
+ "pss_kb": 73720,
+ "private_dirty_kb": 57132,
+ "vmhwm_kb": 113968,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "boundary",
+ "t_ms": 1388,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 113976,
+ "pss_kb": 73728,
+ "private_dirty_kb": 57140,
+ "vmhwm_kb": 114044,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "done",
+ "t_ms": 1388,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 31413,
+ "pty_writes": 13,
+ "rss_kb": 114144,
+ "pss_kb": 73805,
+ "private_dirty_kb": 57180,
+ "vmhwm_kb": 114156,
+ "utime_ticks": 23,
+ "stime_ticks": 3
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 2042,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 35562,
+ "pty_writes": 16,
+ "rss_kb": 277980,
+ "pss_kb": 235648,
+ "private_dirty_kb": 217508,
+ "vmhwm_kb": 305116,
+ "utime_ticks": 106,
+ "stime_ticks": 11
+ },
+ {
+ "kind": "final",
+ "t_ms": 2859,
+ "msgs": 300,
+ "events": 1051,
+ "pty_bytes": 35634,
+ "pty_writes": 17,
+ "rss_kb": 278012,
+ "pss_kb": 235680,
+ "private_dirty_kb": 217540,
+ "vmhwm_kb": 305116,
+ "utime_ticks": 106,
+ "stime_ticks": 11
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 3047,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 46545,
+ "pty_writes": 21,
+ "rss_kb": 278076,
+ "pss_kb": 235744,
+ "private_dirty_kb": 217604,
+ "vmhwm_kb": 305116,
+ "utime_ticks": 108,
+ "stime_ticks": 11
+ },
+ {
+ "kind": "periodic",
+ "t_ms": 4054,
+ "msgs": 300,
+ "events": null,
+ "pty_bytes": 57867,
+ "pty_writes": 26,
+ "rss_kb": 278112,
+ "pss_kb": 235780,
+ "private_dirty_kb": 217640,
+ "vmhwm_kb": 305116,
+ "utime_ticks": 108,
+ "stime_ticks": 11
+ }
+ ],
+ "events": [
+ {
+ "kind": "rpc",
+ "method": "session.create",
+ "t_ms": 177
+ },
+ {
+ "kind": "rpc",
+ "method": "startup.catalog",
+ "t_ms": 177
+ },
+ {
+ "kind": "rpc",
+ "method": "model.options",
+ "t_ms": 177
+ }
+ ],
+ "summary": {
+ "result": "completed",
+ "cap_hit": false,
+ "cap_hit_basis": null,
+ "at_messages": null,
+ "exit": {
+ "exitCode": 0,
+ "signal": 0,
+ "t": 4704
+ },
+ "stream_done": true,
+ "msgs_streamed": 300,
+ "events_streamed": 1051,
+ "pty_bytes_total": 62678,
+ "pty_data_callbacks": 31,
+ "first_byte_ms": 127,
+ "session_create_ms": 177,
+ "stream_start_ms": 1360,
+ "vmhwm_kb": 305116,
+ "cg_peak": null,
+ "drain_max_loop_lag_ms": 4,
+ "drain_lag_violations": 0,
+ "drain_ok": true,
+ "digest": "d5e9558583159eac9e72e450848f98505ac9f48804d4f8c80a18baaab0f0f28c"
+ },
+ "digest_text": "⚕ Hermes Agent · opentui · ready ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── $ terminal Culpa cillum commodo enim. · 3.7s (2 lines) ◇ read_file Duis veniam sed anim. · 3.8s (18 lines) ◦ edit_file Tempor ipsum cupidatat voluptate. · 3.9s (7 lines) ◦ grep Sunt esse aliquip aliqua. · 4.0s (2 lines) ● web_search Consequat minim elit mollit. · 0.1s (18 lines) ◆ write_file Eiusmod lorem occaecat reprehenderit. · 0.2s (7 lines) $ terminal Proident velit laboris magna. · 0.3s (2 lines) Minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor. Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation. ⧉ copy ⚕ Tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua. Excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. Veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit. - Sunt esse aliquip aliqua consectetur. - Consequat minim elit mollit pariatur aute quis. - Eiusmod lorem occaecat reprehenderit. const x4 = 58 function f3() { return x } Exercitation incididunt dolor proident velit laboris magna amet culpa cillum. Lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet. ⧉ copy ▄ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ● fake-model │ up: Ns │ …/lively-thrush/hermes-agent ❯ Type your message"
+}
\ No newline at end of file