Compare commits

..

23 Commits

Author SHA1 Message Date
alt-glitch
c97f0a6c82 refactor(apify): move Actor tools into bundled plugin
Re-shelve the three Apify tools from core into plugins/apify/, matching
the Spotify plugin pattern for optional third-party SaaS integrations.
tools/ is reserved for foundational capabilities; third-party service
integrations live in plugins/.

- plugins/apify/{__init__,tools,client}.py + plugin.yaml + README
  (kind: backend, auto-loads; registers via ctx.register_tool())
- remove apify_* from _HERMES_CORE_TOOLS in toolsets.py
  (TOOLSETS["apify"] entry kept, mirroring spotify)
- tests moved tests/tools/test_apify_tool.py -> tests/plugins/test_apify.py,
  import paths updated (34 tests pass)
- add JanHranicky to AUTHOR_MAP in scripts/release.py (CI gate)

The tools_config.py / config.py / lazy_deps.py / pyproject.toml setup +
config UX from the original commit is retained unchanged.

Co-authored-by: JanHranicky <jan.hranicky@seznam.cz>
2026-06-08 15:03:11 +05:30
JanHranicky
58e921a819 feat(apify): Actor execution tools — discover, start, collect
Cherry-picked from PR #41932 (JanHranicky). Original implementation
registered the three Apify tools as built-in core tools; the follow-up
commit moves them into a bundled plugin (plugins/apify/).

Co-authored-by: JanHranicky <jan.hranicky@seznam.cz>
2026-06-08 15:00:57 +05:30
teknium1
00c46b8ff9 test(tui): cover heapdump opt-in gate + retention; add AUTHOR_MAP
On-disk vitest coverage for the auto-heapdump disk-safety guard: opt-in
gating (suppressed diagnostics-only path), truthy-spelling acceptance,
manual-trigger passthrough, and the retention prune. Test approach
adapted from #21780 (briandevans) and #21822 (LeonSGP43), reconciled to
the merged gate semantics. Maps alarcritty into AUTHOR_MAP for CI.
2026-06-08 02:20:49 -07:00
alarcritty
8ae0d054f4 fix(tui): guard automatic heap dumps against disk fill
Automatic heap dumps from the TUI memory monitor could write multi-GiB
  .heapsnapshot files on every threshold cross, growing ~/.hermes/heapdumps
  to tens of GiB. Add four layered safeguards:

  - Gate auto-high/auto-critical snapshots behind HERMES_AUTO_HEAPDUMP=1;
    manual dumps remain unchanged.
  - Always write the lightweight diagnostics JSON sidecar so users still
    get an actionable artifact when the snapshot is suppressed.
  - Cap total bytes in the dump dir (HERMES_HEAPDUMP_MAX_BYTES, default
    2 GiB), evicting oldest first, retaining the newest.
  - Add a cooldown between auto dumps (HERMES_AUTO_HEAPDUMP_COOLDOWN_MS,
    default 10 min) so an oscillating heap can't re-trigger.

  Closes #21767
2026-06-08 02:20:49 -07:00
teknium1
dd0d1222a2 fix(agent): don't retry interrupt-induced transport errors (cascading-interrupt hang)
When agent.interrupt() fires during an active LLM call, the main poll loop
force-closes the worker-local httpx client to stop token generation. That
raises a transport error (RemoteProtocolError) on the worker thread — the
EXPECTED consequence of our own close, not a network bug.

The streaming retry loop misclassified it as a transient connection error
and retried; each doomed retry stalled for the full stream-stale timeout
(up to 300s). Because the gateway caches AIAgent instances per session, the
stale worker outlived the interrupted turn and raced the next turn's request
on shared client state — the root of the multi-minute cascading-interrupt
hang reported in the wild.

Fix: a request-local _request_cancelled token set by the poll loop right
before the force-close, in both interruptible_api_call (non-streaming) and
interruptible_streaming_api_call. The worker's exception handler checks the
token and exits cleanly — no retry, no fallback, no 'reconnecting' status —
instead of treating the forced error as transient. The token is request-
local (not agent._interrupt_requested, which is cleared at turn boundaries)
so a stale worker outliving its turn still recognizes its own forced close.

Original diagnosis and fix by @kristianvast (PR #6600), against the then-
inline methods in run_agent.py. Those were since extracted into
agent/chat_completion_helpers.py, so the fix is reapplied there.

Co-authored-by: Kristian Vastveit <kristianvast@users.noreply.github.com>
2026-06-08 02:19:13 -07:00
Teknium
aa6f2775fa fix(memory): run end-of-turn sync off the turn thread (#41945)
A misconfigured/slow external memory provider could hold the agent in
the 'running' state for minutes after the final response was delivered.
MemoryManager.sync_all / queue_prefetch_all looped provider.sync_turn /
queue_prefetch INLINE on the turn-completion path; a provider making a
blocking network/daemon call (a broken Hindsight daemon was observed
blocking ~298s before failing) blocked run_conversation from returning.
Because every interface (CLI, TUI, gateway) marks the agent 'running'
until run_conversation returns, the agent stayed busy for the full block
and any follow-up message triggered an aggressive interrupt that dropped
the message.

Dispatch provider sync/prefetch to a lazily-created single-worker
background executor. sync_all / queue_prefetch_all return immediately;
work completes (or fails, logged) in the background. A single worker
serializes writes so turn N lands before turn N+1. flush_pending()
provides a barrier for session boundaries and deterministic tests.
shutdown_all() drains the executor with a bounded timeout so a wedged
provider can never hang teardown.

Builtin-only / no-provider sessions spawn no executor (zero new threads
in the common case).
2026-06-08 02:18:59 -07:00
xxxigm
a5c12f5f59 fix(install): move broken checkout aside instead of deleting it
Review feedback (#40998): `rm -rf` / `Remove-Item -Recurse -Force` on the
install dir is destructive -- a user might still want whatever is there.
Rename the broken checkout to a timestamped `<dir>.broken-<ts>` backup and
re-clone fresh, so nothing is ever deleted. Transient cleanup of a clone
attempt that fails within the same run is left as-is.
2026-06-08 02:18:21 -07:00
xxxigm
5d7abf9114 test(install): cover commit-less checkout handling (#40998)
Behavioral coverage for install.sh's clone_repo() guard (removes a
commit-less checkout, keeps a real one, ignores a non-repo dir) plus a
contract check that install.ps1's repo-validity gate requires a resolvable
HEAD.
2026-06-08 02:18:21 -07:00
xxxigm
fc0900d120 fix(install): re-clone interrupted (commit-less) checkout instead of failing
An interrupted previous clone leaves the install dir's .git present but with
no initial commit. rev-parse --is-inside-work-tree and git status both still
succeed there, so the installer entered the update path and ran `git stash`,
which aborts with "You do not have the initial commit yet" and failed the
desktop install at the "Cloning Hermes repository" stage.

- install.ps1: add a `git rev-parse --verify HEAD` probe to the repo-validity
  check so a commit-less checkout is treated as broken and re-cloned fresh.
- install.sh: mirror it at the top of clone_repo() — drop a partial checkout
  with no resolvable HEAD so the fresh-clone path handles it (POSIX parity).

Fixes #40998
2026-06-08 02:18:21 -07:00
teknium1
0904bc7ea2 refactor(cli): extract 32 slash-command handlers into CLICommandsMixin (god-file Phase 4)
Lift the `_handle_*_command` cluster (2,077 LOC) out of HermesCLI into
hermes_cli/cli_commands_mixin.py; HermesCLI now inherits CLICommandsMixin so
every self.<handler> call resolves unchanged via the MRO. Behavior-neutral.

Import discipline mirrors gateway/slash_commands.py (PR #41886): neutral deps
imported at the mixin module top level; cli.py-internal helpers/constants
(_cprint, _ACCENT, save_config_value, ...) imported lazily inside each handler
via 'from cli import ...' so the mixin never imports cli at module scope.

cli.py 16215 -> 14139 LOC. One test mock repointed (cli.is_browser_debug_ready
-> hermes_cli.cli_commands_mixin.is_browser_debug_ready).
2026-06-08 02:13:07 -07:00
kshitij
4eb8972390 Merge pull request #33817 from sweetcornna/fix/28503-busy-input-fifo
fix(gateway): use FIFO queue for busy_input_mode pending messages
2026-06-08 02:02:02 -07:00
Gille
039fbb41fc fix(desktop): show newly configured model providers (#41545) 2026-06-08 01:39:37 -07:00
floory
15c99b437f fix(cli): set PYTHON env for node-gyp native builds on NixOS (#40690)
* fix(cli): set PYTHON env for node-gyp native builds on NixOS

node-gyp (triggered by node-pty during npm ci) looks for python3 on
PATH, which fails on NixOS because python3 lives in the nix store and
is not on the system PATH.

Add _nixos_build_env() — a two-tier helper that detects NixOS and:
1. Fast path: hermes venv python3 (~0s)
2. Fallback: nix-shell which python3 (~2-5s)

Wire it into _run_npm_install_deterministic() via a new env= parameter,
then pass it through cmd_gui() and _update_node_dependencies().

Non-NixOS systems: _nixos_build_env() returns None, behavior unchanged.

* fix(cli): merge _nixos_build_env() with os.environ, fix NixOS detection, add explicit return None

- Critical fix: both Tier 1 (venv) and Tier 2 (nix-shell) now return
  {**os.environ, "PYTHON": ...} instead of {"PYTHON": ...} — subprocess.run
  with env= replaces the entire environment, so the old code wiped PATH
  and broke npm/node on NixOS entirely.
- Uses re.search(r"^ID=nixos$", ...) for anchored NixOS detection instead
  of unanchored substring match (could match ID_LIKE=...nixos).
- Removes redundant Path.exists() guard before read_text(); just catches
  OSError (one filesystem read instead of two).
- Adds explicit return None at end of function for type-hint consistency.
2026-06-08 13:57:37 +05:30
teknium1
7a5827c8b0 test: repoint percentage-clamp source guard to gateway/slash_commands.py
test_gateway_run_clamped read gateway/run.py asserting the /usage stats handler
clamps pct with min(100, ...). That handler moved to gateway/slash_commands.py
in this PR's extraction; repoint the guard so it still fires on clamp removal.

tests/run_agent/ + tests/gateway/ 8024 passed / 0 failed.
2026-06-08 01:25:35 -07:00
teknium1
de5fe2fa7d test(gateway): repoint slash-command mocks after mixin extraction
Tests for the extracted handlers mocked symbols at gateway.run.*; the handlers
now resolve top-level-imported deps (atomic_json_write, fetch_account_usage,
render_account_usage_lines) and __file__ from gateway.slash_commands. Repoint
those mocks. run.py-resident methods (_increment_restart_failure_counts,
_clear_restart_failure_count) keep their gateway.run.atomic_json_write mock —
only the moved handlers' mocks change.

tests/gateway/ 6415 passed / 0 failed.
2026-06-08 01:25:35 -07:00
teknium1
619bd78273 refactor(gateway): extract 42 slash-command handlers into GatewaySlashCommandsMixin (god-file Phase 3b)
The in-session slash commands (/model, /reset, /usage, /compress, /voice, ...)
— 42 _handle_*_command handlers, ~3,200 LOC — move out of gateway/run.py into a
mixin GatewayRunner inherits. self._handle_*_command dispatch + all test
references resolve unchanged via the MRO.

Neutral deps (MessageEvent, EphemeralReply, Platform, t, cfg_get, atomic_*_write,
account-usage helpers, stdlib) imported at the mixin top level. The ~10 run.py-
internal helpers (_hermes_home, _load_gateway_config, _resolve_gateway_model,
_AGENT_PENDING_SENTINEL, ...) imported lazily inside the handlers that need them
to avoid an import cycle.

gateway/run.py 19157 -> 15870 LOC; GatewayRunner direct methods 214 -> 172.

Behavior-neutral: voice/update/model/compress command test suites pass; all 42
resolve to the mixin via MRO.
2026-06-08 01:25:35 -07:00
teknium1
02a4d66951 fix(auxiliary): retry transient transport error once before fallback (#16587)
A one-off transient transport failure (streaming-close / incomplete
chunked read / 5xx / 408) on an auxiliary LLM call escalated straight to
provider/model fallback (or, for context compression, dropped the summary
and entered cooldown), even when an immediate retry on the same provider
would have succeeded.

Add a single same-target retry at the top of call_llm() and
async_call_llm() — before the existing except-chain — gated on a new
_is_transient_transport_error() that reuses the canonical
_is_connection_error() detector plus a 5xx/408 status check. A second
failure (or any non-transient error: auth, other 4xx, malformed payload)
falls through to first_err and the existing fallback handling unchanged.

This lives in call_llm so every auxiliary task (compression, memory flush,
title generation, session search, vision) shares one transient-retry
surface, rather than each caller re-implementing it. The context
compressor needs no change — it calls call_llm and inherits the retry; its
existing fallback-to-main path (#18458) now composes naturally (retry the
aux model once, then fall back to main only if the retry also fails).

Co-authored-by: ARegalado1 <alberto.regalado@ymail.com>
2026-06-08 01:05:45 -07:00
kshitij
4107076128 Merge pull request #41155 from kshitijk4poor/fix/cli-modal-direct-invalidate-41098
fix(cli): paint approval/clarify/sudo/secret modal prompts directly, not via the throttle (#41098)
2026-06-08 01:01:51 -07:00
Teknium
4d18717b6c fix(gateway): drop --replace from systemd unit templates (#41892)
Under systemd's Restart=always, --replace turns every restart into a
self-kill loop: the new instance reads gateway.pid, kills the previous
process, writes its own PID, and on the next restart the cycle repeats.
A process supervisor owns the lifecycle — --replace is for manual
one-shot takeovers and fights the supervisor.

Remove --replace from both the system-level and user-level systemd
ExecStart lines. The --replace flag stays available for manual
'hermes gateway run --replace' and on the macOS launchd fallback path
(#23387), which is a deliberate manual takeover, not a supervised unit.

Also drop RestartMaxDelaySec / RestartSteps from the templates — they
require systemd v255+ and are silently ignored on older versions. The
_strip_optional_systemd_directives normalizer stays so existing installs
whose on-disk unit still carries those directives aren't flagged as
outdated.

Credit: reported and diagnosed by @Skippy-the-Magnificent-one (PR #37145);
reimplemented here under project authorship because the original commit
was authored under a non-existent email.
2026-06-08 00:20:08 -07:00
Siddharth Balyan
d02a59b679 fix(nix): cold npm builds + fix-lockfiles real-build verification + auto-fix workflow (#41867)
* fix(nix): fix-lockfiles real-build verification + point auto-fix at nix/lib.nix

Two related fixes to the npm lockfile-hash tooling that, together, let a
broken nix build slip onto main and stay there:

1. fix-lockfiles trusted prefetch-npm-deps. It computes the hash from the
   lockfile *contents* and early-exited "ok" whenever that matched the pin,
   never running the real fetchNpmDeps + npmConfigHook build. Those two can
   disagree (the --apply path already works around it), so `--check`
   reported "ok" while a cold build was actually broken (e.g. lockfile
   engines/os/cpu fields the pinned nixpkgs strips from the deps cache,
   tripping npmConfigHook's consistency diff). Now, when prefetch says the
   hash matches, confirm with `nix build .#<attr>` before believing it:
   adopt the real fetchNpmDeps hash if nix reports a 'got:' mismatch,
   surface non-hash failures honestly (exit 1) instead of claiming "ok",
   and keep the transient-cache-failure skip.

2. nix-lockfile-fix.yml's auto-fix-main (and the PR-fix job) whitelisted and
   staged nix/tui.nix + nix/web.nix, but the single npmDepsHash moved to
   nix/lib.nix. So fix-lockfiles --apply edited nix/lib.nix, the guard
   flagged it as an "unexpected modified file", and the job exited without
   committing — the auto-healer could never push a fix. Point the guard
   regex and both `git add` lines at nix/lib.nix.

* fix(nix): fix cold npm builds — adopt the deps-cache lockfile in patchPhase

hermes-tui/hermes-agent could not be built from source on the pinned nixpkgs:
prefetch-npm-deps strips advisory lockfile fields (engines/os/cpu/funding/
bin/…) that newer npm writes into package-lock.json, then npmConfigHook
byte-compares the source lockfile against the cache's stripped copy and fails
on the difference. CI only stayed green because it substitutes the prebuilt
hermes-tui from Cachix and never cold-builds it; anyone building cold (e.g. a
local path: input, or a cache miss) hit the failure.

mkNpmPassthru's patchPhase now copies the cache's own normalized
package-lock.json over the source before npmConfigHook runs, so the
consistency check is trivially satisfied. The resolved dependency set
(version/resolved/integrity/dependencies) is identical — fetchNpmDeps derived
the cache from this very lockfile — so `npm ci` installs the same tree; only
advisory metadata is dropped. Genuine drift is still caught by the
fixed-output npmDepsHash check, which runs before this phase.

Verified by cold-building .#tui and .#default (full hermes-agent) from scratch
on the pinned nixpkgs (6201e2) — both succeed where they previously failed at
npmConfigHook.
2026-06-08 12:41:37 +05:30
kshitijk4poor
8e71b5136b fix(cli): paint approval/clarify/sudo/secret modal prompts directly, not via the throttle (#41098)
In classic CLI mode the dangerous-command approval prompt (and the clarify,
sudo, and secret-capture prompts) could fail to render: the user saw
'⏱ Timeout — denying command' after 60s without ever seeing the panel,
making approvals.mode: manual unusable.

Root cause. These prompts run their wait loop on the agent/background thread:
they set modal state that a ConditionalContainer's filter reads, then call
self._invalidate() to repaint so the panel appears. _invalidate() is a
THROTTLED wrapper built for high-frequency background repaints (spinner frames,
streaming) — it (a) returns early while a SIGWINCH resize-recovery is pending,
and (b) otherwise only repaints if 250ms elapsed since the last paint. Under
either condition the modal's entry paint is silently dropped, the
ConditionalContainer never re-evaluates, and the prompt times out unseen.

The throttle never belonged on these paths. Originally the callbacks painted
with a direct self._app.invalidate() and worked; a throttle PR blanket-replaced
every invalidate (including these rare, one-shot, user-blocking modal paints)
with the throttled _invalidate(); a later commit removed an idle 1Hz repaint
that had been masking dropped modal paints, surfacing the bug. Notably the
modal KEY-BINDING handlers (↑/↓/Enter) already paint with a direct
event.app.invalidate(), never the throttle — the background-thread callbacks
were the inconsistent ones.

Fix. Add a small _paint_now() helper that paints directly (guarded for a
missing _app, exception-safe) and route the four modal paths' entry, response,
countdown, and teardown paints through it — matching the key-handler idiom.
This covers approval, clarify, sudo, and the secret-capture teardown
(_submit_secret_response, which previously used the throttled _invalidate() so
its panel could linger after submit). _invalidate() is left untouched and its
docstring now states it is for high-frequency background repaints only;
modal/interactive paints must use _paint_now()/_app.invalidate() directly. This
also fixes the resize-recovery edge case for free (a direct paint never
consults the resize guard) without a throttle-bypass flag that could be
cargo-culted onto hot paths. Countdown refresh cadence tightened 5s->1s so the
timer stays visible while waiting, and a copy-pasted duplicate countdown block
in _clarify_callback is removed.

Tests: TestModalPaintNow drives all three wait-loop callbacks on a background
thread with BOTH gates active (_resize_recovery_pending=True + a recent
_last_invalidate in the throttle window) and asserts the panel paints on entry
AND repaints on teardown; plus a secret-teardown test, a direct
_paint_now-vs-_invalidate gate test, and a no-_app safety test. Each modal test
fails if its paint is reverted to _invalidate(). 17 in-file tests pass; full
tests/cli suite green (900).

Diagnosis credit: the throttle-drop root cause was identified by @sanidhyasin
in #41116; @islam666 independently reached the same direct-invalidate approach
in #41166; original report #41098 by @jodonnel.
2026-06-08 00:46:43 +05:30
Cornna
fec5ca71d8 fix: preserve telegram queue fifo during grace window 2026-06-03 20:30:59 +08:00
Cornna
4d0f2bd241 fix(gateway): use FIFO queue for busy_input_mode pending messages
Closes #28503
2026-06-03 20:25:17 +08:00
336 changed files with 8709 additions and 210411 deletions

View File

@@ -75,9 +75,10 @@ jobs:
run: |
set -euo pipefail
# Ensure only nix files were modified — prevents accidental
# self-triggering if fix-lockfiles ever touches package files.
unexpected="$(git diff --name-only | grep -Ev '^nix/(tui|web)\.nix$' || true)"
# Ensure only nix/lib.nix (home of the single npmDepsHash) was
# modified — prevents accidental self-triggering if fix-lockfiles
# ever touches package files.
unexpected="$(git diff --name-only | grep -Ev '^nix/lib\.nix$' || true)"
if [ -n "$unexpected" ]; then
echo "::error::Unexpected modified files: $unexpected"
exit 1
@@ -89,7 +90,7 @@ jobs:
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
git add nix/tui.nix nix/web.nix
git add nix/lib.nix
git commit -m "fix(nix): auto-refresh npm lockfile hashes" \
-m "Source: $GITHUB_SHA" \
-m "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"
@@ -216,7 +217,7 @@ jobs:
set -euo pipefail
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
git add nix/tui.nix nix/web.nix
git add nix/lib.nix
git commit -m "fix(nix): refresh npm lockfile hashes"
git push

View File

@@ -1,14 +1,12 @@
FROM ghcr.io/astral-sh/uv:0.11.6-python3.13-trixie@sha256:b3c543b6c4f23a5f2df22866bd7857e5d304b67a564f4feab6ac22044dde719b AS uv_source
# Node 26 source stage. Debian trixie's bundled nodejs is pinned to 20.x
# (EOL April 2026), so we copy node + npm + corepack from the upstream node:26
# image instead. Node 26 (Current; LTS promotion ~Oct 2026) is REQUIRED by the
# native OpenTUI TUI engine, which loads its renderer via the experimental
# `node:ffi` API that only exists on Node 26.3+ (the Ink engine + web build run
# on it too). Bookworm-based slim image used so the produced binary links
# against glibc 2.36, which runs cleanly on our Debian 13 (trixie, glibc 2.41)
# runtime. The pinned tag ships v26.3.0. Bumping Node is a one-line change here.
# NOTE: verify the full image build + Ink/web/Playwright on Node 26 in CI.
FROM node:26-bookworm-slim@sha256:79723b41edbedf595f62e943a9f8b0ba9af5b1e61045c5f8f59c2c02c1212a16 AS node_source
# Node 22 LTS source stage. Debian trixie's bundled nodejs is pinned to 20.x
# which reached EOL in April 2026 we copy node + npm + corepack from the
# upstream node:22 image instead so we can stay on a supported LTS without
# waiting for Debian 14 (forky, ~mid-2027). Bookworm-based slim image used
# so the produced binary links against glibc 2.36, which runs cleanly on
# our Debian 13 (trixie, glibc 2.41) runtime. Bumping to a new Node major
# is a one-line ARG change; see #4977.
FROM node:22-bookworm-slim@sha256:7af03b14a13c8cdd38e45058fd957bf00a72bbe17feac43b1c15a689c029c732 AS node_source
FROM debian:13.4
# Disable Python stdout buffering to ensure logs are printed immediately
@@ -92,7 +90,7 @@ RUN useradd -u 10000 -m -d /opt/data hermes
COPY --chmod=0755 --from=uv_source /usr/local/bin/uv /usr/local/bin/uvx /usr/local/bin/
# Node 26: copy the node binary plus the bundled npm + corepack JS
# Node 22 LTS: copy the node binary plus the bundled npm + corepack JS
# installs from the upstream image. npm and npx are recreated as symlinks
# because they're symlinks in the source image (and need to live on PATH).
# See node_source stage at the top of the file for the version-bump
@@ -121,7 +119,7 @@ COPY ui-tui/packages/hermes-ink/ ui-tui/packages/hermes-ink/
# `npm_config_install_links=false` forces npm to install `file:` deps as
# symlinks instead of copies. This is the default since npm 10+, which is
# what the image ships now (via the node:26 source stage). We set it
# what the image ships now (via the node:22 source stage). We set it
# explicitly anyway as defense-in-depth: the previous Debian-bundled npm
# 9.x defaulted to install-as-copy, which produced a hidden
# node_modules/.package-lock.json that permanently disagreed with the root
@@ -176,15 +174,8 @@ RUN uv sync --frozen --no-install-project --extra all --extra messaging --extra
COPY --chown=hermes:hermes . .
# Build browser dashboard and terminal UI assets.
# ui-opentui is the opt-in native OpenTUI engine (HERMES_TUI_ENGINE=opentui;
# default stays Ink). .dockerignore strips its node_modules/dist, so install +
# esbuild-build it here → dist/main.js, then prune devDeps (esbuild/babel/vitest);
# the runtime only needs the prod deps (the external @opentui/core + its native
# blob — the bundle inlines solid/effect). Build needs Node 26.3 (node:ffi floor),
# which this image now ships. (CI must verify the full image build on Node 26.)
RUN cd web && npm run build && \
cd ../ui-tui && npm run build && \
cd ../ui-opentui && npm install --no-audit --no-fund && npm run build && npm prune --omit=dev
cd ../ui-tui && npm run build
# ---------- Permissions ----------
# Make install dir world-readable so any HERMES_UID can read it at runtime.

View File

@@ -105,8 +105,6 @@ You can still bring your own keys per-tool whenever you want — the gateway is
Hermes has two entry points: start the terminal UI with `hermes`, or run the gateway and talk to it from Telegram, Discord, Slack, WhatsApp, Signal, or Email. Once you're in a conversation, many slash commands are shared across both interfaces.
> **TUI engine:** On supported hosts (Linux/macOS with Node 26.3+), the terminal UI defaults to the native **OpenTUI** engine, which the installer provisions for you. The legacy **Ink** engine remains the fallback — it's used automatically on Windows, Termux, or when the native engine can't run, and you can select it explicitly with `HERMES_TUI_ENGINE=ink hermes`. Ink is not going away; it's the kept fallback.
| Action | CLI | Messaging platforms |
| ------------------------------ | --------------------------------------------- | -------------------------------------------------------------------------------- |
| Start chatting | `hermes` | Run `hermes gateway setup` + `hermes gateway start`, then send the bot a message |

View File

@@ -242,17 +242,6 @@ def nous_credits_lines(*, markdown: bool = False, timeout: float = 10.0) -> list
renders from that fixture instead of the real portal (so the block + gauge are
testable without a live account). Throwaway scaffolding.
"""
snapshot = _fetch_nous_credits_snapshot(timeout=timeout)
return render_account_usage_lines(snapshot, markdown=markdown)
def _fetch_nous_credits_snapshot(timeout: float = 10.0) -> Optional[AccountUsageSnapshot]:
"""Auth-gate + portal fetch + snapshot build for the Nous credits block.
Shared by ``nous_credits_lines`` (full block) and
``nous_credits_compact_line`` (one-liner). Honors the
HERMES_DEV_CREDITS_FIXTURE dev override. Fail-open → None.
"""
# Dev fixture short-circuit — render /usage from the injected state, no portal.
try:
from agent.credits_tracker import dev_fixture_credits_state
@@ -261,16 +250,17 @@ def _fetch_nous_credits_snapshot(timeout: float = 10.0) -> Optional[AccountUsage
except Exception:
fixture = None
if fixture is not None:
return _snapshot_from_credits_state(fixture)
snapshot = _snapshot_from_credits_state(fixture)
return render_account_usage_lines(snapshot, markdown=markdown)
try:
from hermes_cli.auth import get_provider_auth_state
tok = (get_provider_auth_state("nous") or {}).get("access_token")
if not (isinstance(tok, str) and tok.strip()):
return None
return []
except Exception:
return None
return []
try:
import concurrent.futures
@@ -280,36 +270,13 @@ def _fetch_nous_credits_snapshot(timeout: float = 10.0) -> Optional[AccountUsage
account = pool.submit(
get_nous_portal_account_info, force_fresh=True
).result(timeout=timeout)
return build_nous_credits_snapshot(account)
snapshot = build_nous_credits_snapshot(account)
return render_account_usage_lines(snapshot, markdown=markdown)
except Exception:
# Fail-open (caller shows nothing), but leave a breadcrumb so a dead
# /usage credits block is diagnosable in agent.log without a dev flag.
logger.debug("credits ▸ /usage portal fetch/render failed (fail-open)", exc_info=True)
return None
def nous_credits_compact_line(*, timeout: float = 10.0) -> Optional[str]:
"""One-line Nous credits summary for the compact /usage view, or None.
Condenses the snapshot's own detail strings (stable, locally-built
formats) into ``Nous credits (Plan): Total usable: $X · Renews: …``.
Same gating/fail-open semantics as ``nous_credits_lines``.
"""
snap = _fetch_nous_credits_snapshot(timeout=timeout)
if snap is None or not snap.available:
return None
picked = [
d for d in snap.details
if d.startswith(("Total usable:", "Renews:", "Status:"))
]
if not picked:
picked = [d for d in snap.details if not d.startswith("Manage / top up:")][:2]
if not picked:
return None
title = snap.title
if snap.plan:
title += f" ({snap.plan})"
return f"{title}: " + " · ".join(picked)
return []
def _snapshot_from_credits_state(state) -> Optional[AccountUsageSnapshot]:

View File

@@ -1620,12 +1620,6 @@ def init_agent(
agent.session_cache_write_tokens = 0
agent.session_reasoning_tokens = 0
agent.session_estimated_cost_usd = 0.0
# Provider-REPORTED cost only (e.g. OpenRouter usage.cost). None means
# "nothing reported" — distinct from a real $0.00.
agent.session_actual_cost_usd = None
# Per-model session usage rows for /usage: {model: {calls, input, output,
# cache_read, cache_write, cost_usd|None}}.
agent.session_model_usage = {}
agent.session_cost_status = "unknown"
agent.session_cost_source = "none"

View File

@@ -2476,6 +2476,25 @@ def _is_connection_error(exc: Exception) -> bool:
return False
def _is_transient_transport_error(exc: Exception) -> bool:
"""Return True for a one-off transport blip worth retrying ONCE on the
same provider before any provider/model fallback.
Covers connection/streaming-close errors (via the canonical
``_is_connection_error`` detector, shared so the two cannot drift) plus a
pure 5xx/408 HTTP status. Deliberately narrow: this is the "retry the
same target once" gate, distinct from ``_is_payment_error`` /
``_is_auth_error`` / ``_is_rate_limit_error`` which the except-chain
handles by switching provider, refreshing creds, or rotating the pool.
"""
if _is_connection_error(exc):
return True
status = getattr(exc, "status_code", None) or getattr(
getattr(exc, "response", None), "status_code", None
)
return isinstance(status, int) and (status == 408 or 500 <= status < 600)
def _is_auth_error(exc: Exception) -> bool:
"""Detect auth failures that should trigger provider-specific refresh."""
status = getattr(exc, "status_code", None)
@@ -5147,8 +5166,28 @@ def call_llm(
# Handle unsupported temperature, max_tokens vs max_completion_tokens retry,
# then payment fallback.
try:
return _validate_llm_response(
client.chat.completions.create(**kwargs), task)
# Retry ONCE on the same provider for a one-off transient transport
# blip (streaming-close / incomplete chunked read / 5xx / 408) before
# the except-chain below escalates to provider/model fallback. A
# single dropped connection shouldn't abandon an otherwise-healthy
# provider. A second failure (or any non-transient error) falls
# through to ``first_err`` and the existing fallback handling
# unchanged. This is the unified home for the transient retry that
# every auxiliary task (compression, memory flush, title-gen,
# session-search, vision) shares. (PR #16587)
try:
return _validate_llm_response(
client.chat.completions.create(**kwargs), task)
except Exception as transient_err:
if not _is_transient_transport_error(transient_err):
raise
logger.info(
"Auxiliary %s: transient transport error; retrying once on "
"the same provider before fallback: %s",
task or "call", transient_err,
)
return _validate_llm_response(
client.chat.completions.create(**kwargs), task)
except Exception as first_err:
if "temperature" in kwargs and _is_unsupported_temperature_error(first_err):
retry_kwargs = dict(kwargs)
@@ -5614,8 +5653,22 @@ async def async_call_llm(
kwargs["messages"] = _convert_openai_images_to_anthropic(kwargs["messages"])
try:
return _validate_llm_response(
await client.chat.completions.create(**kwargs), task)
# Retry ONCE on the same provider for a transient transport blip
# before the except-chain escalates to fallback — see call_llm()
# for the rationale. (PR #16587)
try:
return _validate_llm_response(
await client.chat.completions.create(**kwargs), task)
except Exception as transient_err:
if not _is_transient_transport_error(transient_err):
raise
logger.info(
"Auxiliary %s (async): transient transport error; retrying "
"once on the same provider before fallback: %s",
task or "call", transient_err,
)
return _validate_llm_response(
await client.chat.completions.create(**kwargs), task)
except Exception as first_err:
if "temperature" in kwargs and _is_unsupported_temperature_error(first_err):
retry_kwargs = dict(kwargs)

View File

@@ -139,6 +139,15 @@ def interruptible_api_call(agent, api_kwargs: dict):
result = {"response": None, "error": None}
request_client_holder = {"client": None, "owner_tid": None}
request_client_lock = threading.Lock()
# Request-local cancellation flag. Distinct from agent._interrupt_requested
# because that flag is cleared at run_conversation() turn boundaries, but
# this daemon worker thread can outlive the turn (the gateway caches
# AIAgent instances per session). Tracks whether THIS specific request was
# cancelled by the main thread's interrupt handler, so the transport error
# that is the expected consequence of our own force-close isn't misread as
# a network bug and surfaced to the caller. (PR #6600 — cascading interrupt
# hang.)
_request_cancelled = {"value": False}
def _set_request_client(client):
with request_client_lock:
@@ -229,6 +238,17 @@ def interruptible_api_call(agent, api_kwargs: dict):
)
result["response"] = request_client.chat.completions.create(**api_kwargs)
except Exception as e:
# If the request was cancelled by the main thread's interrupt
# handler, the transport error is the expected consequence of our
# own force-close, NOT a network bug. Swallow it instead of
# surfacing — the main thread raises InterruptedError. (#6600)
if _request_cancelled["value"]:
logger.debug(
"Non-streaming worker caught %s after request cancellation — "
"exiting without surfacing a network error.",
type(e).__name__,
)
return
result["error"] = e
finally:
_close_request_client_once("request_complete")
@@ -506,6 +526,14 @@ def interruptible_api_call(agent, api_kwargs: dict):
break
if agent._interrupt_requested:
# Mark THIS request cancelled before force-closing so the worker's
# exception handler recognizes the forced transport error as a
# cancel and exits cleanly instead of surfacing a network error or
# (in the streaming path) burning full retry cycles. (#6600)
_request_cancelled["value"] = True
logger.debug(
"Force-closing httpx client due to interrupt (not a network error)."
)
# Force-close the in-flight worker-local HTTP connection to stop
# token generation without poisoning the shared client used to
# seed future retries.
@@ -1625,6 +1653,14 @@ def interruptible_streaming_api_call(agent, api_kwargs: dict, *, on_first_delta=
result = {"response": None, "error": None, "partial_tool_names": []}
request_client_holder = {"client": None, "diag": None, "owner_tid": None}
request_client_lock = threading.Lock()
# Request-local cancellation flag — see interruptible_api_call for the full
# rationale. The streaming retry loop is where the 7-minute cascading-
# interrupt hang originated: a force-close raised RemoteProtocolError, the
# loop classified it as a transient network error, and burned full retry
# cycles (and emitted "reconnecting" noise) on a request the user already
# cancelled. The token lets the worker recognize its own forced close and
# exit immediately instead of retrying. (PR #6600.)
_request_cancelled = {"value": False}
def _set_request_client(client):
with request_client_lock:
@@ -2078,6 +2114,21 @@ def interruptible_streaming_api_call(agent, api_kwargs: dict, *, on_first_delta=
result["response"] = _call_chat_completions()
return # success
except Exception as e:
# If the main poll loop force-closed this request because
# of an interrupt, the resulting transport error is the
# expected consequence of our own close — NOT a transient
# network error. Exit immediately: no retry, no fallback,
# no "reconnecting" status. The outer poll loop raises
# InterruptedError. This is the fix for the cascading-
# interrupt hang where doomed retries burned full
# stream-stale-timeout cycles. (#6600)
if _request_cancelled["value"]:
logger.debug(
"Streaming worker caught %s after request "
"cancellation — exiting without retry.",
type(e).__name__,
)
return
_is_timeout = isinstance(
e, (_httpx.ReadTimeout, _httpx.ConnectTimeout, _httpx.PoolTimeout)
)
@@ -2387,6 +2438,15 @@ def interruptible_streaming_api_call(agent, api_kwargs: dict, *, on_first_delta=
)
if agent._interrupt_requested:
# Mark THIS request cancelled before force-closing so the worker's
# exception handler recognizes the forced transport error as a
# cancel and exits without retrying or surfacing a network error.
# (#6600)
_request_cancelled["value"] = True
logger.debug(
"Force-closing streaming httpx client due to interrupt "
"(not a network error)."
)
try:
if agent.api_mode == "anthropic_messages":
agent._anthropic_client.close()

View File

@@ -57,11 +57,7 @@ from agent.process_bootstrap import _install_safe_stdio
from agent.prompt_caching import apply_anthropic_cache_control
from agent.retry_utils import jittered_backoff
from agent.trajectory import has_incomplete_scratchpad
from agent.usage_pricing import (
estimate_usage_cost,
extract_provider_cost_usd,
normalize_usage,
)
from agent.usage_pricing import estimate_usage_cost, normalize_usage
from hermes_constants import PARTIAL_STREAM_STUB_ID
from hermes_logging import set_session_context
from tools.skill_provenance import set_current_write_origin
@@ -1637,37 +1633,6 @@ def run_conversation(
agent.session_cost_status = cost_result.status
agent.session_cost_source = cost_result.source
# ── Real provider-REPORTED cost (never estimated) ──
# OpenRouter usage accounting returns ``usage.cost`` on the
# response when the request carries usage:{include:true}
# (added on OpenRouter routes). When the provider reports
# nothing, this stays None — absent, NOT zero — so cost
# displays hide instead of showing a fabricated $0.00.
reported_cost_usd = extract_provider_cost_usd(response.usage)
if reported_cost_usd is not None:
_prev_actual = getattr(agent, "session_actual_cost_usd", None)
agent.session_actual_cost_usd = (_prev_actual or 0.0) + reported_cost_usd
agent.session_cost_status = "actual"
agent.session_cost_source = "provider_cost_api"
# Per-model session breakdown for /usage — counts are always
# real; cost_usd only accumulates provider-reported values
# and stays None when the provider reports nothing.
_model_usage = getattr(agent, "session_model_usage", None)
if _model_usage is None:
_model_usage = agent.session_model_usage = {}
_mrow = _model_usage.setdefault(agent.model, {
"calls": 0, "input": 0, "output": 0,
"cache_read": 0, "cache_write": 0, "cost_usd": None,
})
_mrow["calls"] += 1
_mrow["input"] += canonical_usage.input_tokens
_mrow["output"] += canonical_usage.output_tokens
_mrow["cache_read"] += canonical_usage.cache_read_tokens
_mrow["cache_write"] += canonical_usage.cache_write_tokens
if reported_cost_usd is not None:
_mrow["cost_usd"] = (_mrow["cost_usd"] or 0.0) + reported_cost_usd
# Persist token counts to session DB for /insights.
# Do this for every platform with a session_id so non-CLI
# sessions (gateway, cron, delegated runs) cannot lose
@@ -1694,14 +1659,8 @@ def run_conversation(
reasoning_tokens=canonical_usage.reasoning_tokens,
estimated_cost_usd=float(cost_result.amount_usd)
if cost_result.amount_usd is not None else None,
# Provider-reported per-call cost delta. NULL
# (not 0) when the provider reported nothing —
# the SQL CASE keeps actual_cost_usd untouched.
actual_cost_usd=reported_cost_usd,
cost_status="actual"
if reported_cost_usd is not None else cost_result.status,
cost_source="provider_cost_api"
if reported_cost_usd is not None else cost_result.source,
cost_status=cost_result.status,
cost_source=cost_result.source,
billing_provider=agent.provider,
billing_base_url=agent.base_url,
billing_mode="subscription_included"

View File

@@ -28,6 +28,8 @@ from __future__ import annotations
import logging
import re
import inspect
import threading
from concurrent.futures import ThreadPoolExecutor
from typing import Any, Dict, List, Optional
from agent.memory_provider import MemoryProvider
@@ -35,6 +37,12 @@ from tools.registry import tool_error
logger = logging.getLogger(__name__)
# How long shutdown_all() waits for in-flight background sync/prefetch work
# to drain before abandoning it. A wedged provider must never block process
# teardown indefinitely — the worker threads are daemon, so anything still
# running past this window dies with the interpreter.
_SYNC_DRAIN_TIMEOUT_S = 5.0
# ---------------------------------------------------------------------------
# Context fencing helpers
@@ -252,6 +260,13 @@ class MemoryManager:
self._providers: List[MemoryProvider] = []
self._tool_to_provider: Dict[str, MemoryProvider] = {}
self._has_external: bool = False # True once a non-builtin provider is added
# Background executor for end-of-turn sync/prefetch. Lazily created on
# first use so the common builtin-only path spawns no extra threads.
# A single worker serializes a provider's writes (turn N must land
# before turn N+1) and caps thread growth at one per manager. See
# _submit_background() and the sync_all/queue_prefetch_all rationale.
self._sync_executor: Optional[ThreadPoolExecutor] = None
self._sync_executor_lock = threading.Lock()
# -- Registration --------------------------------------------------------
@@ -375,15 +390,27 @@ class MemoryManager:
return "\n\n".join(parts)
def queue_prefetch_all(self, query: str, *, session_id: str = "") -> None:
"""Queue background prefetch on all providers for the next turn."""
for provider in self._providers:
try:
provider.queue_prefetch(query, session_id=session_id)
except Exception as e:
logger.debug(
"Memory provider '%s' queue_prefetch failed (non-fatal): %s",
provider.name, e,
)
"""Queue background prefetch on all providers for the next turn.
Provider work is dispatched to a background worker so a slow or
wedged provider can never block the caller. See ``sync_all`` for
the full rationale (agent stuck "running" minutes after a turn).
"""
providers = list(self._providers)
if not providers:
return
def _run() -> None:
for provider in providers:
try:
provider.queue_prefetch(query, session_id=session_id)
except Exception as e:
logger.debug(
"Memory provider '%s' queue_prefetch failed (non-fatal): %s",
provider.name, e,
)
self._submit_background(_run)
# -- Sync ----------------------------------------------------------------
@@ -407,27 +434,120 @@ class MemoryManager:
session_id: str = "",
messages: Optional[List[Dict[str, Any]]] = None,
) -> None:
"""Sync a completed turn to all providers."""
for provider in self._providers:
"""Sync a completed turn to all providers.
Runs on a background worker thread, NOT inline on the
turn-completion path. A provider's ``sync_turn`` may make a
blocking network/daemon call (a misconfigured Hindsight daemon
was observed blocking ~298s before failing); doing that inline
held ``run_conversation`` open long after the user saw their
response, so every interface (CLI, TUI, gateway) kept the agent
marked "running" for minutes and any follow-up message triggered
an aggressive interrupt. Dispatching off-thread means a slow or
broken provider can never stall the turn — the sync simply
completes (or fails, logged) in the background.
Writes are serialized through a single worker so turn N lands
before turn N+1; provider implementations don't need their own
ordering guarantees.
"""
providers = list(self._providers)
if not providers:
return
def _run() -> None:
for provider in providers:
try:
if messages is not None and self._provider_sync_accepts_messages(provider):
provider.sync_turn(
user_content,
assistant_content,
session_id=session_id,
messages=messages,
)
else:
provider.sync_turn(
user_content,
assistant_content,
session_id=session_id,
)
except Exception as e:
logger.warning(
"Memory provider '%s' sync_turn failed: %s",
provider.name, e,
)
self._submit_background(_run)
# -- Background dispatch -------------------------------------------------
def _submit_background(self, fn) -> None:
"""Run ``fn`` on the manager's background worker.
The executor is created lazily and shared across calls. If the
executor can't be created or has already been shut down, ``fn``
runs inline as a last-resort fallback — losing the async benefit
but never losing the write itself. ``fn`` must do its own
per-provider error handling; this wrapper only guards executor
plumbing.
"""
executor = self._get_sync_executor()
if executor is None:
# Executor unavailable (shut down / creation failed) — run
# inline rather than drop the work. Slow, but correct.
try:
if messages is not None and self._provider_sync_accepts_messages(provider):
provider.sync_turn(
user_content,
assistant_content,
session_id=session_id,
messages=messages,
fn()
except Exception as e: # pragma: no cover - fn guards internally
logger.debug("Inline memory background task failed: %s", e)
return
try:
executor.submit(fn)
except RuntimeError:
# Executor was shut down between the get and the submit
# (teardown race). Fall back to inline.
try:
fn()
except Exception as e: # pragma: no cover - fn guards internally
logger.debug("Inline memory background task failed: %s", e)
def _get_sync_executor(self) -> Optional[ThreadPoolExecutor]:
"""Lazily create the single-worker background executor."""
if self._sync_executor is not None:
return self._sync_executor
with self._sync_executor_lock:
if self._sync_executor is None:
try:
self._sync_executor = ThreadPoolExecutor(
max_workers=1,
thread_name_prefix="mem-sync",
)
else:
provider.sync_turn(
user_content,
assistant_content,
session_id=session_id,
)
except Exception as e:
logger.warning(
"Memory provider '%s' sync_turn failed: %s",
provider.name, e,
)
except Exception as e: # pragma: no cover - resource exhaustion
logger.warning("Failed to create memory sync executor: %s", e)
return None
return self._sync_executor
def flush_pending(self, timeout: Optional[float] = None) -> bool:
"""Block until queued sync/prefetch work has drained.
Single-worker executor means submitting a sentinel and waiting on
it guarantees every previously-submitted task has run. Returns
True if the barrier completed within ``timeout`` (or no executor
exists), False on timeout. Used at real session boundaries and by
tests that need to assert provider state deterministically.
"""
executor = self._sync_executor
if executor is None:
return True
try:
fut = executor.submit(lambda: None)
except RuntimeError:
# Executor already shut down — nothing pending.
return True
try:
fut.result(timeout=timeout)
return True
except Exception:
return False
# -- Tools ---------------------------------------------------------------
@@ -653,7 +773,15 @@ class MemoryManager:
)
def shutdown_all(self) -> None:
"""Shut down all providers (reverse order for clean teardown)."""
"""Shut down all providers (reverse order for clean teardown).
Drains the background sync/prefetch executor first (bounded by
``_SYNC_DRAIN_TIMEOUT_S``) so a turn's final sync has a chance to
land before providers are torn down. The worker threads are
daemon, so anything still wedged past the drain window dies with
the interpreter rather than blocking exit.
"""
self._drain_sync_executor()
for provider in reversed(self._providers):
try:
provider.shutdown()
@@ -663,6 +791,52 @@ class MemoryManager:
provider.name, e,
)
def _drain_sync_executor(self) -> None:
"""Shut down the background executor, waiting briefly for drain.
Bounded by ``_SYNC_DRAIN_TIMEOUT_S``: a wedged provider must never
hang process/session teardown. We stop accepting new work and
cancel anything still queued, then wait at most the drain timeout
for the currently-running task on a watcher thread. The worker is
daemon, so an over-running task dies with the interpreter.
"""
with self._sync_executor_lock:
executor = self._sync_executor
self._sync_executor = None
if executor is None:
return
try:
# Stop accepting new work and drop anything still queued, but
# do NOT block here — cancel_futures cancels not-yet-started
# tasks; the in-flight one keeps running on its daemon thread.
executor.shutdown(wait=False, cancel_futures=True)
except TypeError:
# Older Python without cancel_futures kwarg.
try:
executor.shutdown(wait=False)
except Exception as e: # pragma: no cover
logger.debug("Memory sync executor shutdown failed: %s", e)
return
except Exception as e: # pragma: no cover
logger.debug("Memory sync executor shutdown failed: %s", e)
return
# Give an in-flight sync a bounded chance to finish on a watcher
# thread so we don't block the caller past the drain timeout.
drainer = threading.Thread(
target=lambda: self._bounded_executor_wait(executor),
daemon=True,
name="mem-sync-drain",
)
drainer.start()
drainer.join(timeout=_SYNC_DRAIN_TIMEOUT_S)
@staticmethod
def _bounded_executor_wait(executor: ThreadPoolExecutor) -> None:
try:
executor.shutdown(wait=True)
except Exception as e: # pragma: no cover
logger.debug("Memory sync executor drain wait failed: %s", e)
def initialize_all(self, session_id: str, **kwargs) -> None:
"""Initialize all providers.

View File

@@ -388,13 +388,6 @@ class ChatCompletionsTransport(ProviderTransport):
if provider_prefs and is_openrouter:
extra_body["provider"] = provider_prefs
# OpenRouter usage accounting — response `usage.cost` carries the REAL
# charged cost (credits are 1:1 USD). Parity with the profile path in
# plugins/model-providers/openrouter/__init__.py; this branch only runs
# when the OpenRouter profile isn't loaded.
if is_openrouter:
extra_body["usage"] = {"include": True}
# Pareto Code router plugin — model-gated. Same shape as the
# profile path in plugins/model-providers/openrouter/__init__.py;
# this branch only runs when the OpenRouter profile isn't loaded.

View File

@@ -849,73 +849,6 @@ def estimate_usage_cost(
)
def _finite_nonneg_number(value: Any) -> Optional[float]:
"""Return ``value`` as a float when it is a real, finite, non-negative
number (int/float, not bool); otherwise None."""
if isinstance(value, bool) or not isinstance(value, (int, float)):
return None
try:
f = float(value)
except (TypeError, ValueError):
return None
if f != f or f in (float("inf"), float("-inf")) or f < 0:
return None
return f
def extract_provider_cost_usd(response_usage: Any) -> Optional[float]:
"""Provider-REPORTED cost (USD) from a response ``usage`` object, or None.
Reads the ``usage.cost`` field that OpenRouter's usage accounting returns
(``usage: {"include": true}`` request param; OpenRouter credits are 1:1
USD). OpenRouter-compatible aggregators use the same field. This NEVER
estimates: when the provider reports nothing, the result is None — callers
must treat None as "no cost data", not zero. A reported ``0`` is a real
zero (e.g. free-tier models) and is returned as ``0.0``.
"""
if response_usage is None:
return None
cost = getattr(response_usage, "cost", None)
if cost is None and isinstance(response_usage, dict):
cost = response_usage.get("cost")
return _finite_nonneg_number(cost)
def real_session_cost_usd(agent: Any) -> Optional[float]:
"""Session-cumulative provider-REPORTED cost in USD, or None.
Combines the two real sources Hermes has — no estimation, ever:
- ``agent.session_actual_cost_usd``: per-response ``usage.cost``
accumulator (OpenRouter usage accounting).
- Nous ``x-nous-credits-*`` header delta via
``agent.get_credits_spent_micros()`` (account-level spend since the
session first saw a header; clamped at 0 so a mid-session top-up
doesn't render a negative cost).
Returns None when neither source has reported anything — callers must
hide their cost display in that case rather than showing $0.00.
"""
total: Optional[float] = None
actual = _finite_nonneg_number(getattr(agent, "session_actual_cost_usd", None))
if actual is not None:
total = actual
try:
spent_micros = agent.get_credits_spent_micros()
except Exception:
spent_micros = None
if spent_micros is not None:
try:
spent_usd = max(0, int(spent_micros)) / 1_000_000
except (TypeError, ValueError):
spent_usd = None
if spent_usd is not None:
total = (total or 0.0) + spent_usd
return total
def has_known_pricing(
model_name: str,
provider: Optional[str] = None,

View File

@@ -24,6 +24,7 @@ import {
$visibleModels,
collapseModelFamilies,
DEFAULT_VISIBLE_PER_PROVIDER,
effectiveVisibleKeys,
type ModelFamily,
modelVisibilityKey,
setModelVisibilityOpen
@@ -86,13 +87,17 @@ export function ModelMenuPanel({ gateway, onSelectModel, requestGateway }: Model
: null
const providers = modelOptions.data?.providers
const effectiveVisibleModels = useMemo(
() => effectiveVisibleKeys(visibleModels, providers ?? []),
[visibleModels, providers]
)
const switchTo = (model: string, provider: string) =>
onSelectModel({ model, persistGlobal: !activeSessionId, provider })
const groups = useMemo(
() => groupModels(providers ?? [], search, { model: optionsModel, provider: optionsProvider }, visibleModels),
[providers, search, optionsModel, optionsProvider, visibleModels]
() => groupModels(providers ?? [], search, { model: optionsModel, provider: optionsProvider }, effectiveVisibleModels),
[providers, search, optionsModel, optionsProvider, effectiveVisibleModels]
)
return (

View File

@@ -0,0 +1,37 @@
import { describe, expect, it } from 'vitest'
import type { ModelOptionProvider } from '@/types/hermes'
import { effectiveVisibleKeys, modelVisibilityKey } from './model-visibility'
const provider = (slug: string, models: string[]): ModelOptionProvider => ({
models,
name: slug,
slug
})
describe('model visibility', () => {
it('keeps newly configured providers visible when stored choices are stale', () => {
const stored = new Set([modelVisibilityKey('copilot', 'claude-sonnet-4.6')])
const visible = effectiveVisibleKeys(stored, [
provider('copilot', ['claude-sonnet-4.6']),
provider('local-ollama', ['qwen3:latest', 'llama3.2:latest'])
])
expect(visible.has(modelVisibilityKey('copilot', 'claude-sonnet-4.6'))).toBe(true)
expect(visible.has(modelVisibilityKey('local-ollama', 'qwen3:latest'))).toBe(true)
expect(visible.has(modelVisibilityKey('local-ollama', 'llama3.2:latest'))).toBe(true)
})
it('does not re-add models from a provider that already has stored choices', () => {
const stored = new Set([modelVisibilityKey('local-ollama', 'qwen3:latest')])
const visible = effectiveVisibleKeys(stored, [
provider('local-ollama', ['qwen3:latest', 'llama3.2:latest'])
])
expect(visible.has(modelVisibilityKey('local-ollama', 'qwen3:latest'))).toBe(true)
expect(visible.has(modelVisibilityKey('local-ollama', 'llama3.2:latest'))).toBe(false)
})
})

View File

@@ -104,5 +104,30 @@ export function effectiveVisibleKeys(
stored: Set<string> | null,
providers: readonly ModelOptionProvider[]
): Set<string> {
return stored ?? defaultVisibleKeys(providers)
if (!stored) {
return defaultVisibleKeys(providers)
}
if (stored.size === 0) {
return new Set()
}
const next = new Set(stored)
for (const provider of providers) {
const providerPrefix = `${provider.slug}::`
const hasStoredProvider = [...stored].some(key => key.startsWith(providerPrefix))
if (hasStoredProvider) {
continue
}
const families = collapseModelFamilies(provider.models ?? [])
for (const family of families.slice(0, DEFAULT_VISIBLE_PER_PROVIDER)) {
next.add(modelVisibilityKey(provider.slug, family.id))
}
}
return next
}

3
bench/.gitignore vendored
View File

@@ -1,3 +0,0 @@
node_modules/
.cache/
*.cpuprofile

View File

@@ -1,148 +0,0 @@
# TUI benchmark suite — Ink (`ui-tui`) vs OpenTUI (`ui-opentui`)
Methodology (settled, binding): `docs/plans/opentui-bench-suite.md`. This
directory is the implementation: real binaries over a real node-pty PTY
(120×40, xterm-256color), a fake gateway substituted via `HERMES_PYTHON`
(ZERO changes to either UI), external `/proc` sampling, cgroup-v2 memory caps.
No tmux anywhere in measurement — except the `pipeline` cell, whose entire
point is measuring the tmux emulator leg (see its note below).
## Pieces
| file | role |
|---|---|
| `fake-gateway.mjs` | NDJSON JSON-RPC gateway stand-in. Both UIs spawn it as `$HERMES_PYTHON -m tui_gateway.entry`. Answers every startup RPC with canned results, then streams the fixture (burst / paced / load-then-idle). Never writes stderr (the UIs render gateway stderr). |
| `fixture-stream.mjs` | Serializes the deterministic lumpy-turn fixture (`ui-opentui/scripts/fixture.ts`, imported directly via Node ≥26 type stripping — no port) to NDJSON. Cached under `.cache/`, sha256-stamped. |
| `harness.mjs` | One scenario = one UI boot: node-pty PTY, tight drain loop (event-loop starvation probe, 10ms budget asserted), `/proc/PID/{smaps_rollup,status,stat}` samples on 100-msg boundaries (UI PID only), `systemd-run --user --scope -p MemoryMax=… -p MemorySwapMax=0` caps, SGR wheel injection, resize-jiggle digest capture. |
| `run.mjs` | The matrix runner (protocol: determinism gate first, sequential SUTs, randomized per-rep config order, 10s cooldowns, load gate). |
| `render.mjs` | `results/*.json` → self-contained `report.html` (inline SVG, no CDN) + PNGs in `report-assets/`. |
## Running cells
Node 26 is required (`BENCH_NODE_BIN` overrides the default fnm path). Build
both UIs first; results land in `results/<utc>-<sha7>-<cell>-<ui>-<config>-r<rep>.json`.
```sh
cd ui-opentui && node scripts/build.mjs && cd ../ui-tui && node scripts/build.mjs && cd ../bench
npm install # node-pty (bench-local devDep)
node run.mjs --cell gate # determinism gate (digest replay ×2 per UI) — run FIRST
node run.mjs --cell mem3000 # clean memory runs, 3 reps × 3 configs, 2GB cap
node run.mjs --cell slope10k # one 10k-msg slope run: ink + otui-uncapped (cap-hit IS a datapoint)
node run.mjs --cell nodes # instrumented node counts (ink fd-3 sampler; opentui headless walk)
node run.mjs --cell cpu # paced 30 ev/s streaming ×3
node run.mjs --cell scroll # SGR wheel 30Hz×15s on a 3000-msg transcript ×3
node run.mjs --cell startup # ×10, fake gateway
node run.mjs --cell chaos # stability: gw SIGKILL mid-stream/mid-tool, SIGSTOP 30s, resize storm, PTY EOF — 5 scenarios × {ink, otui-capped}
node run.mjs --cell pipeline # total-pipeline CPU: UI inside a DEDICATED tmux server (the user's real emulator leg), /proc utime+stime for UI + gateway + tmux @1Hz
node run.mjs --cell echo # M7 input latency: 30 keystrokes → first echoed paint (p50/p95/p99) + one \r submit → first-token-paint
node render.mjs # report.html + report-assets/*.png
```
### Chaos / pipeline / echo cell notes
- **chaos** (5 scenarios × ink/otui-capped, one JSON each, `summary.chaos`):
gateway death is SELF-inflicted (`HERMES_FAKE_DIE_AT=<msg>:<kill|tool-kill>`
→ SIGKILL at fixture msg N, or at the first `tool.*` event after N) because
self-termination is deterministic vs racy external timing; a die-once flag
file keeps the auto-heal respawn from dying again. SIGSTOP (gw-stop) is
external via `HERMES_FAKE_PIDFILE`. Respawn detection = the respawned
gateway REWRITING that pidfile. Both UIs auto-heal (budget 3 respawns/60s):
OpenTUI with exponential backoff (`ui-opentui/src/boundary/gateway/liveGateway.ts`
`onExit`), Ink immediately (`ui-tui/src/app/useMainApp.ts` `exitHandler`).
`transcript_preserved` = after a forced full repaint (resize jiggle), the
screen still shows a recent pre-kill turn (`const xN` fixture markers).
`summary.result` keeps its usual semantics — for pty-eof the UI *should*
die, so read `summary.chaos`, not `summary.result`, for the verdicts.
- **pipeline**: the ONLY cell that uses tmux — deliberately. The user's real
stack runs the TUI inside tmux (verified via /proc environ), so a dedicated
`tmux -L hermes-bench-<runId> -f /dev/null` server is the locally measurable
terminal-emulator leg. The harness PTY attaches a client (unattached tmux
skips most output work; `data_flowing` asserts bytes actually arrived) and
samples /proc utime+stime at 1Hz for UI, fake gateway, and the tmux server
(`summary.pipeline.cpu_s`). Only that socket's server is killed at the end.
Note tmux re-encodes the UI's output for the outer client, so `pty_bytes_total`
here is the post-tmux byte count, not the UI's raw output.
- **frame pacing (M6)**: cpu-paced and pipeline record every PTY chunk
timestamp+size; bursts separated by >4ms gaps are frames →
`summary.frame_pacing` (fps, interframe p50/p95, bytes/frame p50/p95,
coalesced count). Scroll runs record the wheel phase only. There is no
env-gated renderer frame counter in ui-opentui to use as ground truth —
@opentui/core keeps `renderStats.fps` internally but nothing exports it;
wiring it would need a ui-source patch (out of scope here).
- **echo (M7)**: keystroke chars avoid `u`/`p`/`s`/digits (the OpenTUI status
clock repaints `up: Ns` at 1Hz) and matching runs on ANSI-stripped output
(raw chunks are full of CSI final letters). The submit leg works because the
fake gateway answers `prompt.submit` with a tiny streamed reply carrying the
marker token `zqxjv` when `HERMES_FAKE_SUBMIT_RESPONSE=1`.
Configs: `ink` · `otui-capped` (`HERMES_TUI_MAX_MESSAGES=3000`, the default) ·
`otui-uncapped` (`=100000`). Launch parity with `hermes_cli/main.py`:
Ink = `node --expose-gc ui-tui/dist/entry.js`, OpenTUI =
`node --experimental-ffi --no-warnings ui-opentui/dist/main.js`, both with
`NODE_OPTIONS=--max-old-space-size=<heap>` (8192 on the unconstrained host —
what the launcher picks outside a container).
## E3 (constrained Docker survival)
`E3-lite` runs the same harness inside a generic `node:26` container (NOT the
shipped image) with the worktree bind-mounted read-only and `--memory=1g
--memory-swap=1g`; the whole container (UI + fake gateway + harness) shares the
limit. See `run-e3.sh` if present, or the report's survival table for the exact
invocation used.
## What actually ran on 2026-06-11 (E1 host + E3-lite) — deviations from the plan
- **3 reps** for mem3000 (not 5) and **scroll at 2000 msgs** (not 3000): the
OpenTUI engine on this tree (sha 197d499, dist built from 50e3471 tree state)
**crashes at ≈3000 fixture msgs** — an uncaught `Error: Failed to create
SyntaxStyle` (native handle allocation fails; every `TextBufferRenderable`
creates one in @opentui/core 0.4.0), masked by a second
`Failed to create optimized buffer` crash inside the renderer's
uncaughtException handler. Postmortems are in each result's `pty_tail`;
RSS at crash ≈880MB — far below the 2GB cap, so it is a handle/pool limit,
not memory. This dominates every OpenTUI cell past ~3000 msgs.
- **OpenTUI headless node-count: not run.** `scripts/mem-bench.tsx` under Node
FFI dies on the first fixture turn with `ERR_INVALID_ARG_VALUE …
textBufferViewSetViewport` (the known Bun→Node u32-coordinate class; the
production binary carries the ffiSafe clamp, the headless test renderer path
does not) and then hangs. The Ink fd-3 sampler ran fine.
- **Startup real-gateway variant: probed, not run as a cell.** A full run would
forge real sessions in the user's `~/.hermes` store. Measured standalone:
the real `tui_gateway` (venv python) emits `gateway.ready` in **131ms median**
(×10, range 130138ms) — add that to the fake-gateway startup numbers.
- **No cgroup OOM kills observed** anywhere (Ink at 10k msgs peaks ~321MB;
OpenTUI crashes before reaching the cap), so the cap-hit machinery
(memory.events / journal fallback) never fired in anger; E3-lite classified
the OpenTUI death correctly as a crash (`oom_kill=0`, exit 7).
- E2 (shipped Docker image): not run — image build time prohibitive in this
session; E3-lite (generic node:26) covers the constrained-memory question.
- Drain-loop starvation: a handful of OpenTUI burst runs recorded 1118ms max
event-loop lag in the harness (>10ms budget, flagged `drain_ok:false` in
those results); all paced/scroll/startup runs stayed under 10ms.
## Accounting + known deviations (by design)
- **"messages" = fixture rows** (`rowsPerTurn` accounting, identical to
`ui-opentui/scripts/mem-bench.tsx`), so numbers are comparable with the
pre-registered expectations. ~46% of fixture rows are user/system rows.
- **User/system rows are not streamed**: they are composer-local in both UIs
(no wire event exists), so PTY runs mount only the assistant/tool rows —
the renderable-heavy part that carries the memory claim. Consequence: the
OpenTUI store cap (3000 rows) binds at ≈6.6k fixture-msgs in PTY runs.
- **Digest gate**: final-screen digest after a resize-forced repaint, ANSI
stripped, cut at the composer hint, `up: Ns` normalized (the OpenTUI status
bar has a 1Hz uptime clock; the transcript region itself is deterministic).
- The headless `scripts/mem-bench.tsx` numbers are diagnostic-only and flagged
`instrumented`/`diagnostic_only` — never headlined.
## Build/run parity vs an installed hermes (audit, 2026-06-11)
- Both UIs are built by their own repo build scripts (same artifacts an install produces) and
spawned at their real entries: otui `node --experimental-ffi --no-warnings dist/main.js`
(identical to production); ink `dist/entry.js` with env mirroring `_launch_tui`
(NODE_ENV=production).
- Two deviations: (1) ink's spawn adds `--expose-gc` — audited: nothing ever calls gc(), the
flag is inert; kept for the instrumented sampler runs, harmless in clean runs. (2) both UIs
run on the pinned Node 26.3 per protocol ("never compare across Node majors") — installed ink
commonly runs Node 20/22, so ink's ABSOLUTE numbers are "ink on Node 26"; the relative
comparison is unaffected. An as-installed-Node ink re-run is a worthwhile extra cell.

View File

@@ -1,239 +0,0 @@
#!/usr/bin/env node
// Fake tui_gateway — substituted via HERMES_PYTHON so BOTH UIs spawn THIS
// executable as `$HERMES_PYTHON -m tui_gateway.entry` (argv ignored) and speak
// the identical NDJSON JSON-RPC wire over stdio. ZERO changes to either UI.
//
// Wire contract (mirrors tui_gateway/entry.py + both UI clients):
// - unsolicited {jsonrpc:"2.0",method:"event",params:{type:"gateway.ready",payload:{skin:{}}}}
// - events: {jsonrpc:"2.0",method:"event",params:{type,payload?}} (no id)
// - responses: {jsonrpc:"2.0",id,result} for every request, canned per method.
//
// NEVER writes to stderr (both UIs surface gateway stderr lines INTO the UI as
// activity rows / gateway.stderr events, which would perturb the rendered
// transcript). Progress/telemetry goes to HERMES_FAKE_PROGRESS (append-only
// NDJSON file the harness tails).
//
// Env config:
// HERMES_FAKE_FIXTURE NDJSON fixture path (from fixture-stream.mjs). Optional.
// HERMES_FAKE_MODE burst | paced | load-then-idle (default burst)
// HERMES_FAKE_RATE events/sec for paced mode (default 30)
// HERMES_FAKE_START_DELAY_MS delay after session.create reply before streaming (default 1500)
// HERMES_FAKE_SAMPLE_EVERY fixture-msg boundary cadence for progress lines (default 100)
// HERMES_FAKE_PROGRESS progress NDJSON file path (required for harness runs)
// HERMES_FAKE_PIDFILE write own pid here at startup (harness discovers the
// gateway pid; a REWRITE by a respawned instance is the
// harness's auto-heal detection signal)
// HERMES_FAKE_DIE_AT "<msgIndex>:<kill|tool-kill>" — chaos cells: self-SIGKILL
// at fixture msg N (kill), or at the first tool.* event
// after msg N (tool-kill). Self-termination is deterministic
// vs racy external timing. SIGSTOP stays external (a stopped
// process can't stop itself usefully).
// HERMES_FAKE_DIE_FLAG die-once flag file: created just before the self-kill so
// the UI's auto-heal RESPAWN (same env) does not die again
// HERMES_FAKE_SUBMIT_RESPONSE "1" → answer prompt.submit with a tiny streamed reply
// carrying the marker token "zqxjv" (echo-latency cells)
//
// Modes: burst = write as fast as the pipe accepts (await 'drain' on
// backpressure, so emission tracks UI ingestion within the ~64KB pipe buffer);
// paced = HERMES_FAKE_RATE events/sec; load-then-idle = burst, then sit idle
// (scroll-latency runs drive input afterwards). Exits on stdin EOF (the UIs
// close stdin to stop the gateway) — same lifecycle as the real child.
import { appendFileSync, existsSync, readFileSync, writeFileSync } from 'node:fs'
import { createInterface } from 'node:readline'
const FIXTURE = process.env.HERMES_FAKE_FIXTURE || ''
const MODE = process.env.HERMES_FAKE_MODE || 'burst'
const RATE = Math.max(1, Number.parseInt(process.env.HERMES_FAKE_RATE ?? '30', 10) || 30)
const START_DELAY_MS = Number.parseInt(process.env.HERMES_FAKE_START_DELAY_MS ?? '1500', 10) || 1500
const SAMPLE_EVERY = Math.max(1, Number.parseInt(process.env.HERMES_FAKE_SAMPLE_EVERY ?? '100', 10) || 100)
const PROGRESS = process.env.HERMES_FAKE_PROGRESS || ''
const PIDFILE = process.env.HERMES_FAKE_PIDFILE || ''
const DIE_FLAG = process.env.HERMES_FAKE_DIE_FLAG || ''
const SUBMIT_RESPONSE = process.env.HERMES_FAKE_SUBMIT_RESPONSE === '1'
// Chaos self-termination (deterministic, no external kill races). Die-once:
// if the flag file exists a previous instance already died here — this is the
// auto-heal respawn, which must stream to completion.
let dieAtMsgs = null
let dieKind = 'kill'
{
const m = (process.env.HERMES_FAKE_DIE_AT || '').match(/^(\d+):(kill|tool-kill)$/)
if (m) {
dieAtMsgs = Number(m[1])
dieKind = m[2]
}
if (dieAtMsgs !== null && DIE_FLAG && existsSync(DIE_FLAG)) dieAtMsgs = null
}
if (PIDFILE) {
try {
writeFileSync(PIDFILE, String(process.pid))
} catch {
/* best-effort */
}
}
const t0 = Date.now()
const progress = obj => {
if (!PROGRESS) return
try {
appendFileSync(PROGRESS, JSON.stringify({ ...obj, t: Date.now() - t0, wall: Date.now() }) + '\n')
} catch {
/* progress is best-effort; never crash the wire */
}
}
// UI gone (pipe closed) → exit quietly like the real child on stdin EOF.
process.stdout.on('error', () => process.exit(0))
const writeFrame = obj => {
const ok = process.stdout.write(JSON.stringify(obj) + '\n')
return ok ? null : new Promise(r => process.stdout.once('drain', r))
}
const emitEvent = params => writeFrame({ jsonrpc: '2.0', method: 'event', params })
// ── Canned RPC results (recon'd from both UIs' startup sequences) ──────
const SESSION_ID = 'bench-session-0001'
const INFO = {
model: 'bench/fake-model',
version: '0.0.0-bench',
cwd: process.env.HERMES_CWD || process.cwd(),
skills: {},
tools: { core: ['terminal', 'read_file'] },
usage: { calls: 0, input: 0, output: 0, total: 0 }
}
function resultFor(method, params) {
switch (method) {
case 'setup.status':
return { provider_configured: true }
case 'session.create':
return { session_id: SESSION_ID, info: INFO }
case 'session.resume':
case 'session.activate':
return { session_id: SESSION_ID, messages: [], info: INFO }
case 'session.most_recent':
return {}
case 'session.list':
case 'session.active_list':
return { sessions: [] }
case 'config.get':
if (params && params.key === 'mtime') return { mtime: 1 }
if (params && params.key === 'full') return { config: { display: {} } }
return { value: '' }
case 'commands.catalog':
return { pairs: [['help', 'show help']], canon: {}, categories: [], sub: {}, skill_count: 0 }
case 'startup.catalog':
return { tools: {}, skills: {}, mcp_servers: [] }
case 'model.options':
return { providers: [] }
case 'session.title':
return { title: 'bench' }
case 'prompt.submit':
return { ok: true }
case 'session.interrupt':
return { ok: true }
case 'complete.slash':
case 'complete.path':
return { items: [] }
default:
return {}
}
}
// ── Chaos self-kill ────────────────────────────────────────────────────
// Flag first (sync — survives SIGKILL), then a 'dying' progress line (gives
// the harness the precise kill wall-clock), then SIGKILL self.
function dieNow(msgs) {
if (DIE_FLAG) {
try {
writeFileSync(DIE_FLAG, '1')
} catch {
/* best-effort */
}
}
progress({ k: 'dying', kind: dieKind, msgs })
process.kill(process.pid, 'SIGKILL')
}
// ── Fixture streaming ──────────────────────────────────────────────────
let streaming = false
async function streamFixture() {
if (streaming || !FIXTURE) return
streaming = true
const lines = readFileSync(FIXTURE, 'utf8').split('\n')
let msgs = 0
let events = 0
let nextBoundary = SAMPLE_EVERY
const paced = MODE === 'paced'
const interval = paced ? 1000 / RATE : 0
let nextAt = Date.now()
progress({ k: 'stream_start', mode: MODE })
for (const raw of lines) {
if (!raw) continue
const item = JSON.parse(raw)
if (item.k === 'e') {
if (paced) {
const wait = nextAt - Date.now()
if (wait > 0) await new Promise(r => setTimeout(r, wait))
nextAt += interval
}
const drained = emitEvent(item.v)
if (drained) await drained
events++
// tool-kill: die exactly as a tool-call event goes over the wire (the
// first tool.* event after the armed msg index — the UI is left with a
// started, never-completed tool).
if (dieAtMsgs !== null && dieKind === 'tool-kill' && msgs >= dieAtMsgs && typeof item.v?.type === 'string' && item.v.type.startsWith('tool.')) {
dieNow(msgs)
}
} else if (item.k === 't') {
msgs = item.msgs
if (msgs >= nextBoundary) {
progress({ k: 'boundary', msgs, events })
while (nextBoundary <= msgs) nextBoundary += SAMPLE_EVERY
}
if (dieAtMsgs !== null && dieKind === 'kill' && msgs >= dieAtMsgs) dieNow(msgs)
}
// {"k":"r"} row markers: composer-local rows, nothing on the wire.
}
progress({ k: 'done', msgs, events })
}
// ── Main: handshake + request loop ─────────────────────────────────────
progress({ k: 'start', pid: process.pid, mode: MODE, fixture: FIXTURE })
emitEvent({ type: 'gateway.ready', payload: { skin: {} } })
const rl = createInterface({ input: process.stdin })
rl.on('line', line => {
let msg
try {
msg = JSON.parse(line)
} catch {
return
}
if (!msg || typeof msg !== 'object' || msg.id === undefined) return
const method = String(msg.method ?? '')
progress({ k: 'req', method })
void writeFrame({ jsonrpc: '2.0', id: msg.id, result: resultFor(method, msg.params) })
if (method === 'session.create' || method === 'session.resume') {
setTimeout(() => {
streamFixture().catch(() => process.exit(1))
}, START_DELAY_MS)
}
// Echo cells: a real (tiny) reply to prompt.submit so input→first-token-paint
// is measurable. The marker token "zqxjv" never occurs in the lorem fixture.
if (method === 'prompt.submit' && SUBMIT_RESPONSE) {
setTimeout(() => {
progress({ k: 'submit_response' })
void emitEvent({ type: 'message.start' })
void emitEvent({ type: 'message.delta', payload: { text: 'Echo probe reply zqxjv — bench token-paint marker.' } })
void emitEvent({ type: 'message.complete' })
}, 30)
}
})
rl.on('close', () => {
progress({ k: 'eof' })
process.exit(0)
})

View File

@@ -1,86 +0,0 @@
#!/usr/bin/env node
// Serialize the deterministic lumpy-turn fixture (ui-opentui/scripts/fixture.ts)
// to NDJSON for the fake gateway. We check in THIS generator invocation, not the
// generated file (it is megabytes); the stream is byte-reproducible for a given
// message count because the fixture is seeded by turn index.
//
// The generator is imported DIRECTLY from ui-opentui/scripts/fixture.ts via
// Node >=26 type stripping — no port, no drift. `applyTurn(store, turn)` only
// calls store.pushUser/pushSystem/apply, so a recorder stub extracts the exact
// per-turn action stream the OpenTUI mem-bench drives.
//
// Line format (one JSON object per line):
// {"k":"e","v":{...GatewayEvent...}} → sent on the wire as
// {jsonrpc:"2.0",method:"event",params:v}
// {"k":"r","role":"user"|"system"} → row marker, NOT sent (composer-local
// rows have no wire representation —
// see README "deviation: user rows")
// {"k":"t","msgs":N} → end-of-turn marker with the CUMULATIVE
// fixture-message count (rowsPerTurn
// accounting, same as scripts/mem-bench.tsx)
//
// Usage: node fixture-stream.mjs --msgs 3000 [--out path]
// Default out: bench/.cache/fixture-<msgs>.ndjson (prints path + sha256)
import { createHash } from 'node:crypto'
import { createWriteStream, mkdirSync } from 'node:fs'
import { dirname, resolve } from 'node:path'
import { fileURLToPath, pathToFileURL } from 'node:url'
const here = dirname(fileURLToPath(import.meta.url))
const fixtureTs = resolve(here, '../ui-opentui/scripts/fixture.ts')
function parseArgs(argv) {
const args = { msgs: 3000, out: null }
for (let i = 2; i < argv.length; i++) {
if (argv[i] === '--msgs') args.msgs = Number.parseInt(argv[++i], 10)
else if (argv[i] === '--out') args.out = argv[++i]
}
if (!Number.isFinite(args.msgs) || args.msgs <= 0) throw new Error('--msgs must be a positive integer')
return args
}
export async function generate(msgs, outPath) {
const { applyTurn, rowsPerTurn } = await import(pathToFileURL(fixtureTs).href)
mkdirSync(dirname(outPath), { recursive: true })
const out = createWriteStream(outPath)
const hash = createHash('sha256')
const write = line => {
const data = line + '\n'
hash.update(data)
if (!out.write(data)) return new Promise(r => out.once('drain', r))
return null
}
let pushed = 0
let events = 0
let turn = 0
while (pushed < msgs) {
const lines = []
const recorder = {
pushUser: () => lines.push('{"k":"r","role":"user"}'),
pushSystem: () => lines.push('{"k":"r","role":"system"}'),
apply: ev => {
lines.push(JSON.stringify({ k: 'e', v: ev }))
events++
}
}
applyTurn(recorder, turn)
pushed += rowsPerTurn(turn)
lines.push(JSON.stringify({ k: 't', msgs: pushed }))
for (const line of lines) {
const wait = write(line)
if (wait) await wait
}
turn++
}
await new Promise((res, rej) => out.end(err => (err ? rej(err) : res())))
return { path: outPath, msgs: pushed, events, turns: turn, sha256: hash.digest('hex') }
}
if (import.meta.main) {
const args = parseArgs(process.argv)
const outPath = args.out ?? resolve(here, `.cache/fixture-${args.msgs}.ndjson`)
const info = await generate(args.msgs, outPath)
process.stdout.write(JSON.stringify(info) + '\n')
}

View File

@@ -1,371 +0,0 @@
#!/usr/bin/env bash
# forensics.sh — assemble a chronological "what killed my gateway" timeline.
#
# Usage: bench/forensics.sh <since>
# <since> is anything `date -d` accepts: '3 days ago', '2026-06-08', 'yesterday' ...
#
# Read-only against system state: it greps logs, queries the sessions DB via a
# read-only sqlite URI, reads journalctl/dmesg, lists worktrees and running
# processes. It never kills, restarts or writes anything outside mktemp.
#
# Sources merged into one timestamp-sorted timeline (local time, ISO):
# [gateway.log] ~/.hermes/logs/gateway.log* gateway lifecycle lines
# [errors.log] ~/.hermes/logs/errors.log* ERROR/CRITICAL lines
# [exit-diag] ~/.hermes/logs/gateway-exit-diag.log (JSONL, UTC)
# [tui-crash] ~/.hermes/logs/tui_gateway_crash.log exit/signal/exception markers
# [opentui] ~/.hermes/logs/opentui-v2.log (JSONL, epoch ms)
# [shutdown-diag] ~/.hermes/logs/gateway-shutdown-diag.log SIGTERM dump headers
# [oom]/[systemd]/[sleep] journalctl --user / -k (dmesg fallback)
# [sessions] ~/.hermes/state.db sessions table (tui/cli sources)
# [worktree] git worktree lists + dir mtimes under ~/github
# [proc] currently running tui_gateway / dist/main.js / dist/entry.js
set -uo pipefail
SINCE_SPEC="${1:-}"
if [ -z "$SINCE_SPEC" ]; then
echo "usage: $0 <since> (e.g. '3 days ago', '2026-06-08')" >&2
exit 2
fi
SINCE_EPOCH="$(date -d "$SINCE_SPEC" +%s 2>/dev/null)" || {
echo "error: date -d could not parse: $SINCE_SPEC" >&2
exit 2
}
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
PY="$REPO_ROOT/.venv/bin/python"
[ -x "$PY" ] || PY="$(command -v python3)"
TMP="$(mktemp -d /tmp/forensics.XXXXXX)"
trap 'rm -rf "$TMP"' EXIT
# ---------------------------------------------------------------- journal ---
# User journal: OOM notices, hermes-gateway unit lifecycle, suspend/resume.
journalctl --user --since "@$SINCE_EPOCH" -o short-iso-precise --no-pager 2>"$TMP/jr-user.err" \
| grep -iE 'oom|out of memory|killed process|hermes-gateway[^ ]*\.service|suspend|hibernat|Scheduled restart' \
> "$TMP/journal-user.txt" || true
# Kernel journal: the authoritative OOM-kill records.
if ! journalctl -k --since "@$SINCE_EPOCH" -o short-iso-precise --no-pager 2>"$TMP/jr-kern.err" \
| grep -iE 'out of memory|oom-kill|oom_reaper|invoked oom-killer' \
> "$TMP/journal-kernel.txt"; then
: > "$TMP/journal-kernel.txt"
fi
if [ -s "$TMP/jr-kern.err" ] && [ ! -s "$TMP/journal-kernel.txt" ]; then
echo "note: journalctl -k unavailable ($(head -1 "$TMP/jr-kern.err")); trying dmesg" >&2
dmesg -T 2>/dev/null | grep -iE 'out of memory|oom-kill|invoked oom-killer' > "$TMP/dmesg.txt" || true
fi
[ -e "$TMP/dmesg.txt" ] || : > "$TMP/dmesg.txt"
# ------------------------------------------------------------- processes ---
ps -eo pid,lstart,rss,args --sort=lstart 2>/dev/null \
| grep -E 'tui_gateway|dist/main\.js|dist/entry\.js' \
| grep -vE 'grep|forensics' > "$TMP/ps.txt" || true
# -------------------------------------------------------------- worktrees ---
{
for d in "$HOME"/github/*/; do
[ -e "$d/.git" ] || continue
echo "## repo $d"
timeout 10 git -C "$d" worktree list 2>/dev/null || echo "(git worktree list failed)"
done
} > "$TMP/worktrees.txt" 2>/dev/null || true
# ---------------------------------------------------------------- python ---
export FORENSICS_SINCE="$SINCE_EPOCH" FORENSICS_TMP="$TMP" FORENSICS_SINCE_SPEC="$SINCE_SPEC"
exec "$PY" - <<'PYEOF'
import json, os, re, sqlite3, sys, time
from datetime import datetime, timezone
SINCE = float(os.environ["FORENSICS_SINCE"])
TMP = os.environ["FORENSICS_TMP"]
NOW = time.time()
HOME = os.path.expanduser("~")
LOGS = os.path.join(HOME, ".hermes", "logs")
events = [] # (epoch, tag, msg)
def add(ep, tag, msg):
if ep is None or ep < SINCE or ep > NOW + 120:
return
msg = " ".join(str(msg).split())
if msg:
events.append((ep, tag, msg[:500]))
def local_naive(s, fmt):
"""Parse a naive local-time string -> epoch."""
try:
return datetime.strptime(s, fmt).timestamp()
except ValueError:
return None
def iso_any(s):
"""Parse an ISO timestamp (Z / +00:00 / +0530 offsets) -> epoch."""
s = s.strip().replace("Z", "+00:00")
# journald short-iso uses +0530 (no colon); fromisoformat on 3.11+ copes.
try:
return datetime.fromisoformat(s).timestamp()
except ValueError:
m = re.match(r"(.*)([+-]\d{2})(\d{2})$", s)
if m:
try:
return datetime.fromisoformat(f"{m.group(1)}{m.group(2)}:{m.group(3)}").timestamp()
except ValueError:
return None
return None
def read_lines(path):
try:
with open(path, errors="replace") as f:
return f.readlines()
except OSError:
return []
PYLOG = re.compile(r"^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}),\d+\s+(\w+)\s+(.*)$")
# --- gateway.log* : lifecycle lines -----------------------------------------
LIFECYCLE = re.compile(
r"Starting Hermes Gateway|Gateway running|Press Ctrl\+C|Shutting down|shutdown"
r"|stopp(ed|ing)|Recovered \d+ background|reaped|restart|Cron ticker started",
re.I,
)
for path in sorted(p for p in os.listdir(LOGS) if p.startswith("gateway.log")):
for line in read_lines(os.path.join(LOGS, path)):
m = PYLOG.match(line)
if m and LIFECYCLE.search(m.group(3)):
add(local_naive(m.group(1), "%Y-%m-%d %H:%M:%S"), "gateway.log", m.group(3))
# --- errors.log* : ERROR/CRITICAL header lines ------------------------------
for path in sorted(p for p in os.listdir(LOGS) if p.startswith("errors.log")):
for line in read_lines(os.path.join(LOGS, path)):
m = PYLOG.match(line)
if m and m.group(2) in ("ERROR", "CRITICAL"):
add(local_naive(m.group(1), "%Y-%m-%d %H:%M:%S"), "errors.log",
f"{m.group(2)} {m.group(3)}")
# --- gateway-exit-diag.log : JSONL, UTC ISO ---------------------------------
for line in read_lines(os.path.join(LOGS, "gateway-exit-diag.log")):
try:
rec = json.loads(line)
except (json.JSONDecodeError, ValueError):
continue
tag = rec.get("tag", "?")
extra = ""
if tag == "asyncio.run.SystemExit":
extra = f" code={rec.get('code')}"
elif tag == "gateway.start":
extra = f" replace={rec.get('replace')} argv={' '.join(rec.get('argv', [])[-3:])}"
elif tag == "asyncio.run.returned":
extra = f" success={rec.get('success')}"
add(iso_any(rec.get("ts", "")), "exit-diag", f"{tag} pid={rec.get('pid')}{extra}")
# --- tui_gateway_crash.log : section markers + [tui-parent] lines -----------
SECTION = re.compile(r"^=== (.+?) · (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})(?: · (.*?))? ===\s*$")
TUIPARENT = re.compile(r"^\[tui-parent\] (\S+Z) (.*)$")
for line in read_lines(os.path.join(LOGS, "tui_gateway_crash.log")):
m = SECTION.match(line)
if m:
what, ts, detail = m.group(1), m.group(2), m.group(3) or ""
add(local_naive(ts, "%Y-%m-%d %H:%M:%S"), "tui-crash",
f"{what}{' · ' + detail if detail else ''}")
continue
m = TUIPARENT.match(line)
if m and ("[lifecycle]" in m.group(2) or "uncaughtException" in m.group(2)):
add(iso_any(m.group(1)), "tui-parent", m.group(2))
# --- opentui-v2.log : JSONL, epoch ms ---------------------------------------
for line in read_lines(os.path.join(LOGS, "opentui-v2.log")):
try:
rec = json.loads(line)
except (json.JSONDecodeError, ValueError):
continue
keep = (rec.get("scope") == "gateway"
or rec.get("level") in ("warn", "error")
or "transport" in str(rec.get("msg", "")))
if keep:
data = rec.get("data") or {}
brief = {k: v for k, v in data.items() if k in
("python", "reason", "code", "signal", "cause", "sid", "attempt")}
add(rec.get("t", 0) / 1000.0, "opentui",
f"{rec.get('level')} {rec.get('scope')}: {rec.get('msg')} {brief if brief else ''}")
# --- gateway-shutdown-diag.log : SIGTERM dump headers -----------------------
lines = read_lines(os.path.join(LOGS, "gateway-shutdown-diag.log"))
for i, line in enumerate(lines):
if line.startswith("=== shutdown diagnostic"):
for j in range(i, min(i + 4, len(lines))):
mm = re.match(r"^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z)\s*$", lines[j])
if mm:
add(iso_any(mm.group(1)), "shutdown-diag",
line.strip().strip("= ").strip())
break
# --- journal files ----------------------------------------------------------
JLINE = re.compile(r"^(\S+)\s+\S+\s+(.*)$")
def journal(path, default_tag):
for line in read_lines(path):
m = JLINE.match(line)
if not m:
continue
ep, msg = iso_any(m.group(1)), m.group(2)
low = msg.lower()
if "out of memory" in low or "oom-kill" in low or "oom killer" in low \
or "invoked oom-killer" in low or "result 'oom-kill'" in low:
tag = "oom"
elif "suspend" in low or "hibernat" in low:
tag = "sleep"
else:
tag = default_tag
add(ep, tag, msg)
journal(os.path.join(TMP, "journal-user.txt"), "systemd")
journal(os.path.join(TMP, "journal-kernel.txt"), "oom")
for line in read_lines(os.path.join(TMP, "dmesg.txt")):
m = re.match(r"^\[(\w{3} \w{3} +\d+ \d{2}:\d{2}:\d{2} \d{4})\]\s*(.*)$", line)
if m:
add(local_naive(re.sub(r" +", " ", m.group(1)), "%a %b %d %H:%M:%S %Y"),
"oom", m.group(2))
# --- sessions DB ------------------------------------------------------------
abnormal_sessions = []
db = os.path.join(HOME, ".hermes", "state.db")
try:
con = sqlite3.connect(f"file:{db}?mode=ro", uri=True, timeout=5)
rows = con.execute(
"SELECT id, source, started_at, ended_at, end_reason, message_count "
"FROM sessions WHERE source IN ('tui','cli') AND "
"(started_at >= ? OR (ended_at IS NOT NULL AND ended_at >= ?)) "
"ORDER BY started_at", (SINCE, SINCE)).fetchall()
con.close()
for sid, source, st, en, reason, mc in rows:
add(st, "sessions", f"START {source} session={sid} messages={mc}")
if en is not None:
flag = "" if reason else " ABNORMAL(no end_reason)"
add(en, "sessions",
f"END {source} session={sid} reason={reason or 'NULL'} messages={mc}{flag}")
if not reason:
abnormal_sessions.append((sid, source, st, "ended, no end_reason"))
else:
add(st, "sessions",
f"NOEND {source} session={sid} messages={mc} "
f"ABNORMAL(no ended_at recorded — crashed parent or still running)")
abnormal_sessions.append((sid, source, st, "no ended_at"))
except sqlite3.Error as e:
print(f"note: sessions DB unreadable: {e}", file=sys.stderr)
# --- worktrees: current list + dir mtimes -----------------------------------
worktree_snapshot = open(os.path.join(TMP, "worktrees.txt"), errors="replace").read() \
if os.path.exists(os.path.join(TMP, "worktrees.txt")) else ""
wt_dirs = []
for base in ([os.path.join(HOME, "github", d, ".worktrees")
for d in (os.listdir(os.path.join(HOME, "github"))
if os.path.isdir(os.path.join(HOME, "github")) else [])]
+ [os.path.join(HOME, "github", "worktrees", d)
for d in (os.listdir(os.path.join(HOME, "github", "worktrees"))
if os.path.isdir(os.path.join(HOME, "github", "worktrees")) else [])]):
if not os.path.isdir(base):
continue
for name in os.listdir(base):
p = os.path.join(base, name)
if os.path.isdir(p):
try:
mt = os.stat(p).st_mtime
except OSError:
continue
wt_dirs.append((p, mt))
add(mt, "worktree", f"last-modified {p} "
f"(age {round((NOW - mt) / 3600, 1)}h)")
# --- process snapshot -------------------------------------------------------
running = []
PSLINE = re.compile(r"^\s*(\d+)\s+(\w{3} \w{3} +\d+ \d{2}:\d{2}:\d{2} \d{4})\s+(\d+)\s+(.*)$")
for line in read_lines(os.path.join(TMP, "ps.txt")):
m = PSLINE.match(line)
if not m:
continue
pid, lstart, rss, args = m.groups()
ep = local_naive(re.sub(r" +", " ", lstart), "%a %b %d %H:%M:%S %Y")
running.append((pid, ep, int(rss), args))
add(ep, "proc", f"STILL-RUNNING pid={pid} rss={int(rss)//1024}MB started-here: {args[:200]}")
# --- emit timeline ----------------------------------------------------------
def iso(ep):
return datetime.fromtimestamp(ep).astimezone().strftime("%Y-%m-%dT%H:%M:%S%z")
print(f"# forensics timeline since {os.environ['FORENSICS_SINCE_SPEC']!r} "
f"({iso(SINCE)}) — generated {iso(NOW)}")
print(f"# {len(events)} events\n")
events.sort(key=lambda e: e[0])
prev = None
dup = 0
def flush(prev, dup):
if prev is None:
return
suffix = f" (x{dup + 1})" if dup else ""
print(f"{iso(prev[0])} [{prev[1]}] {prev[2]}{suffix}")
for ev in events:
if prev and ev[1] == prev[1] and ev[2] == prev[2] and ev[0] - prev[0] < 5:
dup += 1
continue
flush(prev, dup)
prev, dup = ev, 0
flush(prev, dup)
# --- summary ----------------------------------------------------------------
print("\n" + "=" * 72)
print("SUMMARY")
print("=" * 72)
from collections import Counter
by_tag = Counter(e[1] for e in events)
for tag, n in by_tag.most_common():
print(f" {n:6d} [{tag}]")
ooms = [e for e in events if e[1] == "oom" and "Killed process" in e[2]]
print(f"\nOOM kernel kills in window: {len(ooms)}")
for e in ooms:
m = re.search(r"Killed process (\d+) \(([^)]+)\).*?anon-rss:(\d+)kB", e[2])
if m:
print(f" {iso(e[0])} pid={m.group(1)} comm={m.group(2)} anon-rss={int(m.group(3))//1024}MB")
else:
print(f" {iso(e[0])} {e[2][:140]}")
oomd = [e for e in events if e[1] == "oom" and "Killed process" not in e[2]
and ("oom" in e[2].lower())]
print(f"OOM-related systemd/unit notices: {len(oomd)}")
gexits = Counter()
for e in events:
if e[1] == "tui-crash" and e[2].startswith("gateway exit"):
m = re.search(r"reason=(.*)$", e[2])
gexits[m.group(1) if m else "?"] += 1
print(f"\ntui_gateway exits by reason (tui_gateway_crash.log):")
for r, n in gexits.most_common():
print(f" {n:4d} {r}")
sigs = Counter(e[2].split(" received")[0] for e in events
if e[1] == "tui-crash" and " received" in e[2])
print(f"tui_gateway signals received: {dict(sigs) if sigs else 'none'}")
starts = sum(1 for e in events if e[1] == "exit-diag" and e[2].startswith("gateway.start"))
nz = sum(1 for e in events if e[1] == "exit-diag" and "exit_nonzero" in e[2])
print(f"\nplatform gateway (hermes-gateway.service): {starts} start(s), {nz} nonzero-exit(s) in window")
print(f"\nabnormal tui/cli sessions (no ended_at or no end_reason): {len(abnormal_sessions)}")
for sid, source, st, why in abnormal_sessions[-20:]:
print(f" {iso(st)} {source} {sid}: {why}")
sleeps = [e for e in events if e[1] == "sleep"]
print(f"\nsuspend/hibernate events: {len(sleeps)}")
print(f"\ncurrently running TUI/gateway processes: {len(running)}")
for pid, ep, rss, args in running:
print(f" pid={pid} since={iso(ep) if ep else '?'} rss={rss//1024}MB {args[:120]}")
print(f"\ncurrent git worktrees (snapshot, not historical):")
for line in worktree_snapshot.splitlines():
print(f" {line}")
print("\nNOTE: worktree DELETIONS leave no on-disk record; only surviving dirs are")
print("listed. Prune suspects: cli.py _prune_stale_worktrees (24h/72h tiers) and")
print("the atexit _cleanup_worktree hook (removes dirty worktrees w/o unpushed commits).")
PYEOF

File diff suppressed because it is too large Load Diff

View File

@@ -1,59 +0,0 @@
#!/usr/bin/env bash
# live-attach.sh — plug into a RUNNING hermes TUI (Ink or OpenTUI) and measure it.
#
# bench/live-attach.sh <pid> [out-dir] # sample memory+cpu until Ctrl-C
# bench/live-attach.sh <pid> --profile [secs] # also grab a CPU profile window (default 30s)
# bench/live-attach.sh <pid> --heap # grab a heap snapshot (large file!)
#
# Find your TUI pid: pgrep -af 'dist/main.js' (OpenTUI)
# pgrep -af 'dist/entry.js' (Ink)
# Works on any live session — no restart, no flags needed at launch:
# profiling uses SIGUSR1 (Node opens an inspector port on demand).
# In-TUI complements (OpenTUI only): /mem (live stats line), /heapdump.
set -euo pipefail
PID="${1:?usage: live-attach.sh <pid> [outdir|--profile [secs]|--heap]}"
shift || true
OUT="${1:-/tmp/tui-live-$PID}"; MODE="sample"; SECS=30
[[ "${1:-}" == "--profile" ]] && { MODE=profile; OUT="/tmp/tui-live-$PID"; SECS="${2:-30}"; }
[[ "${1:-}" == "--heap" ]] && { MODE=heap; OUT="/tmp/tui-live-$PID"; }
mkdir -p "$OUT"
echo "target pid=$PID cmd=$(tr '\0' ' ' </proc/$PID/cmdline | cut -c1-80)"
echo "out: $OUT"
sample() {
local f="$OUT/samples.jsonl"
echo "sampling 1Hz → $f (Ctrl-C to stop; render: node bench/live-render.mjs $OUT)"
local prev_cpu=0 hz; hz=$(getconf CLK_TCK)
while kill -0 "$PID" 2>/dev/null; do
local rss pss pdirty hwm cpu t
rss=$(awk '/^Rss:/{print $2}' /proc/$PID/smaps_rollup 2>/dev/null || echo 0)
pss=$(awk '/^Pss:/{print $2}' /proc/$PID/smaps_rollup 2>/dev/null || echo 0)
pdirty=$(awk '/^Private_Dirty:/{print $2}' /proc/$PID/smaps_rollup 2>/dev/null || echo 0)
hwm=$(awk '/^VmHWM:/{print $2}' /proc/$PID/status 2>/dev/null || echo 0)
cpu=$(awk '{print $14+$15}' /proc/$PID/stat 2>/dev/null || echo 0)
t=$(date +%s.%N)
printf '{"t":%s,"rss_kb":%s,"pss_kb":%s,"private_dirty_kb":%s,"vmhwm_kb":%s,"cpu_ticks":%s,"cpu_hz":%s}\n' \
"$t" "$rss" "$pss" "$pdirty" "$hwm" "$cpu" "$hz" >> "$f"
sleep 1
done
echo "process exited; $(wc -l <"$f") samples in $f"
}
cdp() { # open inspector on demand, find the ws url
kill -USR1 "$PID"; sleep 0.7
local port; port=$(ss -tlnp 2>/dev/null | grep "pid=$PID" | grep -oE ':(92[0-9]{2})' | head -1 | tr -d ':')
[[ -z "$port" ]] && port=9229
curl -s "http://127.0.0.1:$port/json" | grep -oE 'ws://[^"]+' | head -1
}
case "$MODE" in
sample) sample ;;
profile)
WS=$(cdp); echo "CDP: $WS — profiling ${SECS}s (interact with the TUI now!)"
node "$(dirname "$0")/live-cdp.mjs" "$WS" profile "$SECS" "$OUT/live.cpuprofile"
echo "$OUT/live.cpuprofile (open in https://speedscope.app or chrome://inspect)" ;;
heap)
WS=$(cdp); echo "CDP: $WS — heap snapshot (may pause the TUI briefly)"
node "$(dirname "$0")/live-cdp.mjs" "$WS" heap 0 "$OUT/live.heapsnapshot"
echo "$OUT/live.heapsnapshot (Chrome DevTools → Memory → Load)" ;;
esac

View File

@@ -1,44 +0,0 @@
#!/usr/bin/env node
// live-cdp.mjs — minimal CDP client for live-attach.sh (no deps; Node ws via raw socket
// is overkill — use the built-in WebSocket of Node >=22).
// usage: node live-cdp.mjs <ws-url> profile <secs> <out> | heap 0 <out>
const [, , url, mode, secsArg, out] = process.argv
const { writeFileSync, appendFileSync } = await import('node:fs')
const ws = new WebSocket(url)
let id = 0
const pending = new Map()
const send = (method, params = {}) =>
new Promise((res, rej) => {
const i = ++id
pending.set(i, { res, rej })
ws.send(JSON.stringify({ id: i, method, params }))
})
const chunks = []
ws.onmessage = e => {
const m = JSON.parse(e.data)
if (m.id && pending.has(m.id)) {
const { res, rej } = pending.get(m.id)
pending.delete(m.id)
m.error ? rej(new Error(m.error.message)) : res(m.result)
} else if (m.method === 'HeapProfiler.addHeapSnapshotChunk') chunks.push(m.params.chunk)
}
ws.onopen = async () => {
try {
if (mode === 'profile') {
await send('Profiler.enable')
await send('Profiler.start')
await new Promise(r => setTimeout(r, Number(secsArg) * 1000))
const { profile } = await send('Profiler.stop')
writeFileSync(out, JSON.stringify(profile))
} else {
await send('HeapProfiler.enable')
await send('HeapProfiler.takeHeapSnapshot', { reportProgress: false })
writeFileSync(out, chunks.join(''))
}
process.exit(0)
} catch (err) {
console.error(String(err))
process.exit(1)
}
}
ws.onerror = err => { console.error('ws error', err.message ?? err); process.exit(1) }

View File

@@ -1,17 +0,0 @@
#!/usr/bin/env node
// live-render.mjs — quick chart from live-attach samples: node bench/live-render.mjs <dir>
import { readFileSync, writeFileSync } from 'node:fs'
const dir = process.argv[2] ?? '.'
const rows = readFileSync(`${dir}/samples.jsonl`, 'utf8').trim().split('\n').map(l => JSON.parse(l))
const t0 = rows[0].t
const pts = rows.map(r => ({ t: r.t - t0, rss: r.rss_kb / 1024, hwm: r.vmhwm_kb / 1024 }))
const W = 900, H = 360, mt = (v, max) => H - 30 - (v / max) * (H - 60)
const maxY = Math.max(...pts.map(p => p.hwm)) * 1.1
const path = k => pts.map((p, i) => `${i ? 'L' : 'M'}${30 + (p.t / pts.at(-1).t) * (W - 60)},${mt(p[k], maxY)}`).join('')
const cpu = rows.map((r, i) => i ? (r.cpu_ticks - rows[i-1].cpu_ticks) / r.cpu_hz / (r.t - rows[i-1].t) : 0)
writeFileSync(`${dir}/live.svg`, `<svg xmlns="http://www.w3.org/2000/svg" width="${W}" height="${H}" style="background:#0d0d12">
<text x="30" y="20" fill="#ccc" font-family="monospace">live session: RSS (gold) / VmHWM (grey) MB · avg cpu ${(cpu.reduce((a,b)=>a+b,0)/Math.max(1,cpu.length-1)*100).toFixed(1)}% · ${rows.length}s</text>
<path d="${path('hwm')}" stroke="#888" fill="none"/><path d="${path('rss')}" stroke="#F5B820" fill="none" stroke-width="2"/>
<text x="30" y="${H-10}" fill="#888" font-family="monospace">0s</text><text x="${W-80}" y="${H-10}" fill="#888" font-family="monospace">${Math.round(pts.at(-1).t)}s</text>
<text x="${W-120}" y="${mt(pts.at(-1).rss,maxY)}" fill="#F5B820" font-family="monospace">${pts.at(-1).rss.toFixed(0)}MB</text></svg>`)
console.log(`${dir}/live.svg`)

View File

@@ -1,31 +0,0 @@
{
"name": "@hermes/bench",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@hermes/bench",
"version": "0.0.0",
"dependencies": {
"node-pty": "^1.1.0"
}
},
"node_modules/node-addon-api": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
"license": "MIT"
},
"node_modules/node-pty": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.1.0.tgz",
"integrity": "sha512-20JqtutY6JPXTUnL0ij1uad7Qe1baT46lyolh2sSENDd4sTzKZ4nmAFkeAARDKwmlLjPx6XKRlwRUxwjOy+lUg==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"node-addon-api": "^7.1.0"
}
}
}
}

View File

@@ -1,13 +0,0 @@
{
"name": "@hermes/bench",
"version": "0.0.0",
"private": true,
"type": "module",
"description": "TUI benchmark suite: Ink (ui-tui) vs OpenTUI (ui-opentui) over a real PTY with a fake gateway. Methodology: docs/plans/opentui-bench-suite.md.",
"scripts": {
"check": "node --check fake-gateway.mjs && node --check fixture-stream.mjs && node --check harness.mjs && node --check run.mjs && node --check render.mjs"
},
"dependencies": {
"node-pty": "^1.1.0"
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

View File

@@ -1,393 +0,0 @@
{
"meta": {
"cell": "gate",
"ui": "ink",
"config": "ink",
"mode": "digest",
"rep": 0,
"run_id": "mq8jcwon-vztv",
"utc": "2026-06-10T20:43:15.191Z",
"sha": "50e34713b",
"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,
"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": 2350535,
"gw_pid": 2350547,
"cgroup": null,
"load_avg_at_start": [
0.09,
0.18,
0.29
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 28,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 54864,
"pss_kb": 28606,
"private_dirty_kb": 17440,
"vmhwm_kb": 54904,
"utime_ticks": 1,
"stime_ticks": 1
},
{
"kind": "periodic",
"t_ms": 1035,
"msgs": null,
"events": null,
"pty_bytes": 6615,
"pty_writes": 11,
"rss_kb": 109772,
"pss_kb": 70491,
"private_dirty_kb": 50616,
"vmhwm_kb": 109772,
"utime_ticks": 23,
"stime_ticks": 3
},
{
"kind": "boundary",
"t_ms": 1461,
"msgs": 100,
"events": 355,
"pty_bytes": 14431,
"pty_writes": 16,
"rss_kb": 127628,
"pss_kb": 88252,
"private_dirty_kb": 67748,
"vmhwm_kb": 127648,
"utime_ticks": 37,
"stime_ticks": 4
},
{
"kind": "boundary",
"t_ms": 1512,
"msgs": 200,
"events": 738,
"pty_bytes": 21088,
"pty_writes": 19,
"rss_kb": 162132,
"pss_kb": 122735,
"private_dirty_kb": 102252,
"vmhwm_kb": 162148,
"utime_ticks": 45,
"stime_ticks": 5
},
{
"kind": "boundary",
"t_ms": 1538,
"msgs": 300,
"events": 1051,
"pty_bytes": 21088,
"pty_writes": 19,
"rss_kb": 172044,
"pss_kb": 132615,
"private_dirty_kb": 112100,
"vmhwm_kb": 172288,
"utime_ticks": 50,
"stime_ticks": 5
},
{
"kind": "done",
"t_ms": 1541,
"msgs": 300,
"events": 1051,
"pty_bytes": 21088,
"pty_writes": 19,
"rss_kb": 172640,
"pss_kb": 133211,
"private_dirty_kb": 112696,
"vmhwm_kb": 173288,
"utime_ticks": 50,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 2039,
"msgs": 300,
"events": null,
"pty_bytes": 28559,
"pty_writes": 23,
"rss_kb": 179128,
"pss_kb": 139667,
"private_dirty_kb": 119184,
"vmhwm_kb": 184828,
"utime_ticks": 57,
"stime_ticks": 5
},
{
"kind": "final",
"t_ms": 2919,
"msgs": 300,
"events": 1051,
"pty_bytes": 28604,
"pty_writes": 24,
"rss_kb": 179136,
"pss_kb": 139675,
"private_dirty_kb": 119192,
"vmhwm_kb": 184828,
"utime_ticks": 57,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 3046,
"msgs": 300,
"events": null,
"pty_bytes": 32118,
"pty_writes": 26,
"rss_kb": 185304,
"pss_kb": 145843,
"private_dirty_kb": 125360,
"vmhwm_kb": 185304,
"utime_ticks": 61,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 4050,
"msgs": 300,
"events": null,
"pty_bytes": 42828,
"pty_writes": 32,
"rss_kb": 186164,
"pss_kb": 146703,
"private_dirty_kb": 126220,
"vmhwm_kb": 186164,
"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": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1410
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1435
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1435
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1461
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1461
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1461
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1485
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1512
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1512
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1541
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1560
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1560
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1585
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1585
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1585
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 1710
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2944
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2944
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3044
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3094
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 3220
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3322
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3346
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3422
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3497
}
],
"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": 43054,
"pty_data_callbacks": 44,
"first_byte_ms": 71,
"session_create_ms": 202,
"stream_start_ms": 1410,
"vmhwm_kb": 186164,
"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"
}

View File

@@ -1,408 +0,0 @@
{
"meta": {
"cell": "gate",
"ui": "ink",
"config": "ink",
"mode": "digest",
"rep": 1,
"run_id": "mq8jd80l-wl8i",
"utc": "2026-06-10T20:43:29.877Z",
"sha": "50e34713b",
"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,
"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": 2350865,
"gw_pid": 2350874,
"cgroup": null,
"load_avg_at_start": [
0.07,
0.17,
0.29
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56380,
"pss_kb": 30130,
"private_dirty_kb": 18964,
"vmhwm_kb": 56432,
"utime_ticks": 1,
"stime_ticks": 1
},
{
"kind": "periodic",
"t_ms": 1034,
"msgs": null,
"events": null,
"pty_bytes": 6615,
"pty_writes": 12,
"rss_kb": 108556,
"pss_kb": 69243,
"private_dirty_kb": 49468,
"vmhwm_kb": 108556,
"utime_ticks": 23,
"stime_ticks": 2
},
{
"kind": "boundary",
"t_ms": 1442,
"msgs": 100,
"events": 355,
"pty_bytes": 10643,
"pty_writes": 15,
"rss_kb": 124760,
"pss_kb": 85364,
"private_dirty_kb": 64888,
"vmhwm_kb": 124768,
"utime_ticks": 32,
"stime_ticks": 3
},
{
"kind": "boundary",
"t_ms": 1493,
"msgs": 200,
"events": 738,
"pty_bytes": 18617,
"pty_writes": 18,
"rss_kb": 158216,
"pss_kb": 118777,
"private_dirty_kb": 98344,
"vmhwm_kb": 158248,
"utime_ticks": 41,
"stime_ticks": 4
},
{
"kind": "boundary",
"t_ms": 1544,
"msgs": 300,
"events": 1051,
"pty_bytes": 22520,
"pty_writes": 19,
"rss_kb": 192596,
"pss_kb": 153125,
"private_dirty_kb": 132660,
"vmhwm_kb": 192732,
"utime_ticks": 50,
"stime_ticks": 5
},
{
"kind": "done",
"t_ms": 1546,
"msgs": 300,
"events": 1051,
"pty_bytes": 22520,
"pty_writes": 19,
"rss_kb": 192964,
"pss_kb": 153493,
"private_dirty_kb": 133028,
"vmhwm_kb": 193460,
"utime_ticks": 50,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 2049,
"msgs": 300,
"events": null,
"pty_bytes": 34018,
"pty_writes": 23,
"rss_kb": 186672,
"pss_kb": 147199,
"private_dirty_kb": 126736,
"vmhwm_kb": 195184,
"utime_ticks": 60,
"stime_ticks": 5
},
{
"kind": "final",
"t_ms": 2909,
"msgs": 300,
"events": 1051,
"pty_bytes": 34063,
"pty_writes": 24,
"rss_kb": 186680,
"pss_kb": 147209,
"private_dirty_kb": 126744,
"vmhwm_kb": 195184,
"utime_ticks": 60,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 3057,
"msgs": 300,
"events": null,
"pty_bytes": 37577,
"pty_writes": 26,
"rss_kb": 187024,
"pss_kb": 147553,
"private_dirty_kb": 127088,
"vmhwm_kb": 195184,
"utime_ticks": 63,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 4072,
"msgs": 300,
"events": null,
"pty_bytes": 48287,
"pty_writes": 32,
"rss_kb": 187088,
"pss_kb": 147617,
"private_dirty_kb": 127152,
"vmhwm_kb": 195184,
"utime_ticks": 65,
"stime_ticks": 6
}
],
"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": 201
},
{
"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": 1416
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1416
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1442
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1442
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1466
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1492
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1517
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1517
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1517
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1546
},
{
"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": 1616
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1616
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1616
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 1717
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2930
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2930
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3030
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3081
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 3207
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3332
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3332
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3410
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3488
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 4520
},
"stream_done": true,
"msgs_streamed": 300,
"events_streamed": 1051,
"pty_bytes_total": 48513,
"pty_data_callbacks": 42,
"first_byte_ms": 65,
"session_create_ms": 201,
"stream_start_ms": 1416,
"vmhwm_kb": 195184,
"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"
}

View File

@@ -1,223 +0,0 @@
{
"meta": {
"cell": "gate",
"ui": "opentui",
"config": "otui-capped",
"mode": "digest",
"rep": 0,
"run_id": "mq8jdjbz-h2u1",
"utc": "2026-06-10T20:43:44.543Z",
"sha": "50e34713b",
"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,
"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": 2351291,
"gw_pid": 2351309,
"cgroup": null,
"load_avg_at_start": [
0.05,
0.17,
0.28
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 25,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 54500,
"pss_kb": 28086,
"private_dirty_kb": 16976,
"vmhwm_kb": 54544,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1032,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 13,
"rss_kb": 105296,
"pss_kb": 65020,
"private_dirty_kb": 48488,
"vmhwm_kb": 107988,
"utime_ticks": 17,
"stime_ticks": 2
},
{
"kind": "boundary",
"t_ms": 1383,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 16,
"rss_kb": 112456,
"pss_kb": 72079,
"private_dirty_kb": 55520,
"vmhwm_kb": 112468,
"utime_ticks": 22,
"stime_ticks": 2
},
{
"kind": "boundary",
"t_ms": 1384,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 16,
"rss_kb": 112480,
"pss_kb": 72103,
"private_dirty_kb": 55544,
"vmhwm_kb": 112480,
"utime_ticks": 23,
"stime_ticks": 2
},
{
"kind": "boundary",
"t_ms": 1384,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 16,
"rss_kb": 112488,
"pss_kb": 72111,
"private_dirty_kb": 55552,
"vmhwm_kb": 112508,
"utime_ticks": 23,
"stime_ticks": 2
},
{
"kind": "done",
"t_ms": 1385,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 16,
"rss_kb": 112612,
"pss_kb": 72235,
"private_dirty_kb": 55676,
"vmhwm_kb": 112640,
"utime_ticks": 23,
"stime_ticks": 3
},
{
"kind": "periodic",
"t_ms": 2035,
"msgs": 300,
"events": null,
"pty_bytes": 35562,
"pty_writes": 19,
"rss_kb": 274188,
"pss_kb": 231176,
"private_dirty_kb": 213680,
"vmhwm_kb": 301852,
"utime_ticks": 106,
"stime_ticks": 11
},
{
"kind": "final",
"t_ms": 2863,
"msgs": 300,
"events": 1051,
"pty_bytes": 35634,
"pty_writes": 20,
"rss_kb": 274220,
"pss_kb": 231208,
"private_dirty_kb": 213712,
"vmhwm_kb": 301852,
"utime_ticks": 107,
"stime_ticks": 11
},
{
"kind": "periodic",
"t_ms": 3045,
"msgs": 300,
"events": null,
"pty_bytes": 46545,
"pty_writes": 24,
"rss_kb": 274276,
"pss_kb": 231264,
"private_dirty_kb": 213768,
"vmhwm_kb": 301852,
"utime_ticks": 108,
"stime_ticks": 11
},
{
"kind": "periodic",
"t_ms": 4051,
"msgs": 300,
"events": null,
"pty_bytes": 57867,
"pty_writes": 29,
"rss_kb": 274312,
"pss_kb": 231300,
"private_dirty_kb": 213804,
"vmhwm_kb": 301852,
"utime_ticks": 109,
"stime_ticks": 11
}
],
"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": 4725
},
"stream_done": true,
"msgs_streamed": 300,
"events_streamed": 1051,
"pty_bytes_total": 62678,
"pty_data_callbacks": 35,
"first_byte_ms": 128,
"session_create_ms": 175,
"stream_start_ms": 1382,
"vmhwm_kb": 301852,
"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"
}

View File

@@ -1,223 +0,0 @@
{
"meta": {
"cell": "gate",
"ui": "opentui",
"config": "otui-capped",
"mode": "digest",
"rep": 1,
"run_id": "mq8jdupc-im2a",
"utc": "2026-06-10T20:43:59.280Z",
"sha": "50e34713b",
"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,
"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": 2351822,
"gw_pid": 2351831,
"cgroup": null,
"load_avg_at_start": [
0.04,
0.16,
0.28
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 52404,
"pss_kb": 26288,
"private_dirty_kb": 15184,
"vmhwm_kb": 52628,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1033,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 10,
"rss_kb": 104956,
"pss_kb": 64728,
"private_dirty_kb": 48196,
"vmhwm_kb": 106820,
"utime_ticks": 17,
"stime_ticks": 2
},
{
"kind": "boundary",
"t_ms": 1385,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 112924,
"pss_kb": 72595,
"private_dirty_kb": 56036,
"vmhwm_kb": 112968,
"utime_ticks": 23,
"stime_ticks": 2
},
{
"kind": "boundary",
"t_ms": 1386,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 112968,
"pss_kb": 72639,
"private_dirty_kb": 56080,
"vmhwm_kb": 112968,
"utime_ticks": 23,
"stime_ticks": 2
},
{
"kind": "boundary",
"t_ms": 1386,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 112972,
"pss_kb": 72643,
"private_dirty_kb": 56084,
"vmhwm_kb": 112972,
"utime_ticks": 23,
"stime_ticks": 2
},
{
"kind": "done",
"t_ms": 1387,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 112984,
"pss_kb": 72655,
"private_dirty_kb": 56096,
"vmhwm_kb": 113052,
"utime_ticks": 23,
"stime_ticks": 2
},
{
"kind": "periodic",
"t_ms": 2046,
"msgs": 300,
"events": null,
"pty_bytes": 35562,
"pty_writes": 15,
"rss_kb": 283176,
"pss_kb": 240212,
"private_dirty_kb": 222716,
"vmhwm_kb": 303016,
"utime_ticks": 105,
"stime_ticks": 10
},
{
"kind": "final",
"t_ms": 2862,
"msgs": 300,
"events": 1051,
"pty_bytes": 35634,
"pty_writes": 16,
"rss_kb": 283208,
"pss_kb": 240244,
"private_dirty_kb": 222748,
"vmhwm_kb": 303016,
"utime_ticks": 105,
"stime_ticks": 10
},
{
"kind": "periodic",
"t_ms": 3060,
"msgs": 300,
"events": null,
"pty_bytes": 46545,
"pty_writes": 20,
"rss_kb": 283264,
"pss_kb": 240300,
"private_dirty_kb": 222804,
"vmhwm_kb": 303016,
"utime_ticks": 107,
"stime_ticks": 10
},
{
"kind": "periodic",
"t_ms": 4074,
"msgs": 300,
"events": null,
"pty_bytes": 57867,
"pty_writes": 25,
"rss_kb": 283308,
"pss_kb": 240344,
"private_dirty_kb": 222848,
"vmhwm_kb": 303016,
"utime_ticks": 107,
"stime_ticks": 10
}
],
"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": 4706
},
"stream_done": true,
"msgs_streamed": 300,
"events_streamed": 1051,
"pty_bytes_total": 62678,
"pty_data_callbacks": 30,
"first_byte_ms": 130,
"session_create_ms": 176,
"stream_start_ms": 1383,
"vmhwm_kb": 303016,
"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"
}

View File

@@ -1,799 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-capped",
"mode": "mem",
"rep": 0,
"run_id": "mq8jwe2j-9ikb",
"utc": "2026-06-10T20:58:24.187Z",
"sha": "50e34713b",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 3000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2367235,
"gw_pid": 2367245,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/user@1001.service/app.slice/hermes-bench-mq8jwe2j-9ikb.scope",
"load_avg_at_start": [
0.25,
0.35,
0.39
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 53,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 60864,
"pss_kb": 34205,
"private_dirty_kb": 22956,
"vmhwm_kb": 60992,
"utime_ticks": 3,
"stime_ticks": 0,
"cg_current": 25100288,
"cg_peak": 25100288,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1062,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 10,
"rss_kb": 104924,
"pss_kb": 64715,
"private_dirty_kb": 48120,
"vmhwm_kb": 107988,
"utime_ticks": 17,
"stime_ticks": 2,
"cg_current": 61902848,
"cg_peak": 66801664,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1695,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 106908,
"pss_kb": 66676,
"private_dirty_kb": 50104,
"vmhwm_kb": 107988,
"utime_ticks": 18,
"stime_ticks": 2,
"cg_current": 72585216,
"cg_peak": 72609792,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1719,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 116132,
"pss_kb": 75807,
"private_dirty_kb": 59200,
"vmhwm_kb": 116156,
"utime_ticks": 24,
"stime_ticks": 3,
"cg_current": 83578880,
"cg_peak": 83726336,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1720,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 116200,
"pss_kb": 75875,
"private_dirty_kb": 59268,
"vmhwm_kb": 116352,
"utime_ticks": 24,
"stime_ticks": 3,
"cg_current": 83578880,
"cg_peak": 83726336,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1721,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 116356,
"pss_kb": 75945,
"private_dirty_kb": 59296,
"vmhwm_kb": 116356,
"utime_ticks": 24,
"stime_ticks": 3,
"cg_current": 83578880,
"cg_peak": 83726336,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1721,
"msgs": 501,
"events": 1792,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 116356,
"pss_kb": 75945,
"private_dirty_kb": 59296,
"vmhwm_kb": 116364,
"utime_ticks": 24,
"stime_ticks": 3,
"cg_current": 83345408,
"cg_peak": 83726336,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2073,
"msgs": null,
"events": null,
"pty_bytes": 31413,
"pty_writes": 12,
"rss_kb": 244776,
"pss_kb": 202114,
"private_dirty_kb": 184712,
"vmhwm_kb": 244784,
"utime_ticks": 81,
"stime_ticks": 7,
"cg_current": 214659072,
"cg_peak": 214659072,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2222,
"msgs": 601,
"events": 2154,
"pty_bytes": 38613,
"pty_writes": 15,
"rss_kb": 251684,
"pss_kb": 208873,
"private_dirty_kb": 191432,
"vmhwm_kb": 251712,
"utime_ticks": 100,
"stime_ticks": 8,
"cg_current": 223088640,
"cg_peak": 223354880,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2449,
"msgs": 701,
"events": 2496,
"pty_bytes": 42490,
"pty_writes": 17,
"rss_kb": 319152,
"pss_kb": 276164,
"private_dirty_kb": 258648,
"vmhwm_kb": 320132,
"utime_ticks": 137,
"stime_ticks": 11,
"cg_current": 292880384,
"cg_peak": 295047168,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2727,
"msgs": 801,
"events": 2857,
"pty_bytes": 47176,
"pty_writes": 19,
"rss_kb": 337492,
"pss_kb": 294504,
"private_dirty_kb": 276988,
"vmhwm_kb": 349112,
"utime_ticks": 181,
"stime_ticks": 14,
"cg_current": 312528896,
"cg_peak": 325537792,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3054,
"msgs": 901,
"events": 3245,
"pty_bytes": 49632,
"pty_writes": 21,
"rss_kb": 370356,
"pss_kb": 327363,
"private_dirty_kb": 309852,
"vmhwm_kb": 370368,
"utime_ticks": 216,
"stime_ticks": 15,
"cg_current": 347090944,
"cg_peak": 347090944,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3079,
"msgs": null,
"events": null,
"pty_bytes": 49632,
"pty_writes": 21,
"rss_kb": 377708,
"pss_kb": 334715,
"private_dirty_kb": 317204,
"vmhwm_kb": 377752,
"utime_ticks": 220,
"stime_ticks": 15,
"cg_current": 354160640,
"cg_peak": 354422784,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3305,
"msgs": 1001,
"events": 3588,
"pty_bytes": 50573,
"pty_writes": 22,
"rss_kb": 398476,
"pss_kb": 355483,
"private_dirty_kb": 337972,
"vmhwm_kb": 398476,
"utime_ticks": 243,
"stime_ticks": 17,
"cg_current": 375959552,
"cg_peak": 375963648,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3683,
"msgs": 1101,
"events": 3928,
"pty_bytes": 54942,
"pty_writes": 25,
"rss_kb": 436236,
"pss_kb": 393243,
"private_dirty_kb": 375732,
"vmhwm_kb": 436236,
"utime_ticks": 290,
"stime_ticks": 18,
"cg_current": 414687232,
"cg_peak": 414982144,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3687,
"msgs": 1201,
"events": 4298,
"pty_bytes": 54942,
"pty_writes": 25,
"rss_kb": 436236,
"pss_kb": 393243,
"private_dirty_kb": 375732,
"vmhwm_kb": 436512,
"utime_ticks": 291,
"stime_ticks": 19,
"cg_current": 415211520,
"cg_peak": 415211520,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3692,
"msgs": 1300,
"events": 4659,
"pty_bytes": 54942,
"pty_writes": 25,
"rss_kb": 436760,
"pss_kb": 393767,
"private_dirty_kb": 376256,
"vmhwm_kb": 436772,
"utime_ticks": 293,
"stime_ticks": 19,
"cg_current": 415473664,
"cg_peak": 415473664,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3697,
"msgs": 1400,
"events": 5011,
"pty_bytes": 54942,
"pty_writes": 25,
"rss_kb": 437124,
"pss_kb": 394131,
"private_dirty_kb": 376620,
"vmhwm_kb": 437308,
"utime_ticks": 295,
"stime_ticks": 19,
"cg_current": 415997952,
"cg_peak": 415997952,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4086,
"msgs": null,
"events": null,
"pty_bytes": 54942,
"pty_writes": 25,
"rss_kb": 534280,
"pss_kb": 491287,
"private_dirty_kb": 473776,
"vmhwm_kb": 534288,
"utime_ticks": 348,
"stime_ticks": 23,
"cg_current": 517648384,
"cg_peak": 517742592,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4236,
"msgs": 1500,
"events": 5384,
"pty_bytes": 57789,
"pty_writes": 27,
"rss_kb": 539180,
"pss_kb": 496187,
"private_dirty_kb": 478676,
"vmhwm_kb": 539344,
"utime_ticks": 364,
"stime_ticks": 23,
"cg_current": 523218944,
"cg_peak": 523218944,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4241,
"msgs": 1600,
"events": 5730,
"pty_bytes": 57789,
"pty_writes": 27,
"rss_kb": 539508,
"pss_kb": 496515,
"private_dirty_kb": 479004,
"vmhwm_kb": 539584,
"utime_ticks": 364,
"stime_ticks": 23,
"cg_current": 523743232,
"cg_peak": 523743232,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4244,
"msgs": 1700,
"events": 6100,
"pty_bytes": 57789,
"pty_writes": 27,
"rss_kb": 539728,
"pss_kb": 496735,
"private_dirty_kb": 479224,
"vmhwm_kb": 539900,
"utime_ticks": 365,
"stime_ticks": 23,
"cg_current": 523743232,
"cg_peak": 523743232,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4260,
"msgs": 1800,
"events": 6455,
"pty_bytes": 57789,
"pty_writes": 27,
"rss_kb": 541568,
"pss_kb": 498575,
"private_dirty_kb": 481064,
"vmhwm_kb": 541648,
"utime_ticks": 367,
"stime_ticks": 23,
"cg_current": 525840384,
"cg_peak": 525840384,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4265,
"msgs": 1900,
"events": 6838,
"pty_bytes": 57789,
"pty_writes": 27,
"rss_kb": 542688,
"pss_kb": 499695,
"private_dirty_kb": 482184,
"vmhwm_kb": 543040,
"utime_ticks": 368,
"stime_ticks": 24,
"cg_current": 527626240,
"cg_peak": 527626240,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4269,
"msgs": 2000,
"events": 7151,
"pty_bytes": 57789,
"pty_writes": 27,
"rss_kb": 543204,
"pss_kb": 500211,
"private_dirty_kb": 482700,
"vmhwm_kb": 543388,
"utime_ticks": 368,
"stime_ticks": 24,
"cg_current": 528150528,
"cg_peak": 528150528,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4965,
"msgs": 2100,
"events": 7532,
"pty_bytes": 59760,
"pty_writes": 28,
"rss_kb": 676032,
"pss_kb": 633039,
"private_dirty_kb": 615528,
"vmhwm_kb": 676100,
"utime_ticks": 446,
"stime_ticks": 28,
"cg_current": 665362432,
"cg_peak": 665362432,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5094,
"msgs": null,
"events": null,
"pty_bytes": 59760,
"pty_writes": 28,
"rss_kb": 702136,
"pss_kb": 659143,
"private_dirty_kb": 641632,
"vmhwm_kb": 702136,
"utime_ticks": 460,
"stime_ticks": 30,
"cg_current": 693010432,
"cg_peak": 693010432,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5395,
"msgs": 2201,
"events": 7892,
"pty_bytes": 62265,
"pty_writes": 29,
"rss_kb": 705816,
"pss_kb": 662823,
"private_dirty_kb": 645312,
"vmhwm_kb": 705816,
"utime_ticks": 491,
"stime_ticks": 30,
"cg_current": 696999936,
"cg_peak": 696999936,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6099,
"msgs": null,
"events": null,
"pty_bytes": 65269,
"pty_writes": 30,
"rss_kb": 739096,
"pss_kb": 696103,
"private_dirty_kb": 678592,
"vmhwm_kb": 739136,
"utime_ticks": 564,
"stime_ticks": 32,
"cg_current": 731422720,
"cg_peak": 731422720,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6126,
"msgs": 2301,
"events": 8254,
"pty_bytes": 67277,
"pty_writes": 31,
"rss_kb": 739464,
"pss_kb": 696471,
"private_dirty_kb": 678960,
"vmhwm_kb": 739464,
"utime_ticks": 567,
"stime_ticks": 32,
"cg_current": 731725824,
"cg_peak": 731856896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6880,
"msgs": 2401,
"events": 8596,
"pty_bytes": 70614,
"pty_writes": 33,
"rss_kb": 771508,
"pss_kb": 728515,
"private_dirty_kb": 711004,
"vmhwm_kb": 771508,
"utime_ticks": 645,
"stime_ticks": 35,
"cg_current": 765329408,
"cg_peak": 765329408,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7109,
"msgs": null,
"events": null,
"pty_bytes": 72844,
"pty_writes": 34,
"rss_kb": 773340,
"pss_kb": 730347,
"private_dirty_kb": 712836,
"vmhwm_kb": 773496,
"utime_ticks": 668,
"stime_ticks": 36,
"cg_current": 767463424,
"cg_peak": 767463424,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7658,
"msgs": 2501,
"events": 8957,
"pty_bytes": 74604,
"pty_writes": 35,
"rss_kb": 802688,
"pss_kb": 759695,
"private_dirty_kb": 742184,
"vmhwm_kb": 802688,
"utime_ticks": 723,
"stime_ticks": 38,
"cg_current": 797646848,
"cg_peak": 797773824,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8113,
"msgs": null,
"events": null,
"pty_bytes": 76216,
"pty_writes": 36,
"rss_kb": 831540,
"pss_kb": 788547,
"private_dirty_kb": 771036,
"vmhwm_kb": 831680,
"utime_ticks": 769,
"stime_ticks": 40,
"cg_current": 828358656,
"cg_peak": 828514304,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8512,
"msgs": 2601,
"events": 9345,
"pty_bytes": 77698,
"pty_writes": 37,
"rss_kb": 834300,
"pss_kb": 791307,
"private_dirty_kb": 773796,
"vmhwm_kb": 834300,
"utime_ticks": 810,
"stime_ticks": 40,
"cg_current": 830693376,
"cg_peak": 831066112,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8794,
"msgs": 2701,
"events": 9688,
"pty_bytes": 79263,
"pty_writes": 38,
"rss_kb": 838572,
"pss_kb": 795579,
"private_dirty_kb": 778068,
"vmhwm_kb": 838584,
"utime_ticks": 839,
"stime_ticks": 40,
"cg_current": 835891200,
"cg_peak": 835891200,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9118,
"msgs": null,
"events": null,
"pty_bytes": 79263,
"pty_writes": 38,
"rss_kb": 862420,
"pss_kb": 819427,
"private_dirty_kb": 801916,
"vmhwm_kb": 862420,
"utime_ticks": 871,
"stime_ticks": 42,
"cg_current": 860319744,
"cg_peak": 860368896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9622,
"msgs": 2801,
"events": 10028,
"pty_bytes": 83086,
"pty_writes": 40,
"rss_kb": 865588,
"pss_kb": 822595,
"private_dirty_kb": 805084,
"vmhwm_kb": 865616,
"utime_ticks": 922,
"stime_ticks": 42,
"cg_current": 863592448,
"cg_peak": 863592448,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 10123,
"msgs": null,
"events": null,
"pty_bytes": 83086,
"pty_writes": 40,
"rss_kb": 895276,
"pss_kb": 852283,
"private_dirty_kb": 834772,
"vmhwm_kb": 895276,
"utime_ticks": 972,
"stime_ticks": 44,
"cg_current": 894144512,
"cg_peak": 894468096,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 10275,
"msgs": 2901,
"events": 10398,
"pty_bytes": 85844,
"pty_writes": 42,
"rss_kb": 898960,
"pss_kb": 855967,
"private_dirty_kb": 838456,
"vmhwm_kb": 899064,
"utime_ticks": 988,
"stime_ticks": 45,
"cg_current": 898830336,
"cg_peak": 898830336,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 10281,
"msgs": 3000,
"events": 10759,
"pty_bytes": 85844,
"pty_writes": 42,
"rss_kb": 899388,
"pss_kb": 856395,
"private_dirty_kb": 838884,
"vmhwm_kb": 899412,
"utime_ticks": 988,
"stime_ticks": 45,
"cg_current": 899354624,
"cg_peak": 899354624,
"cg_oom_kill": 0
},
{
"kind": "done",
"t_ms": 10287,
"msgs": 3000,
"events": 10759,
"pty_bytes": 85844,
"pty_writes": 42,
"rss_kb": 899652,
"pss_kb": 856659,
"private_dirty_kb": 839148,
"vmhwm_kb": 899988,
"utime_ticks": 988,
"stime_ticks": 45,
"cg_current": 899878912,
"cg_peak": 899878912,
"cg_oom_kill": 0
}
],
"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": "crashed_after_stream",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 10362
},
"stream_done": true,
"msgs_streamed": 3000,
"events_streamed": 10759,
"pty_bytes_total": 87107,
"pty_data_callbacks": 43,
"first_byte_ms": 141,
"session_create_ms": 177,
"stream_start_ms": 1692,
"vmhwm_kb": 899988,
"cg_peak": 899878912,
"drain_max_loop_lag_ms": 18,
"drain_lag_violations": 2,
"drain_ok": false,
"digest": null
},
"pty_tail": "urn x}⧉ copy⚕Minim elit mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident. Officia fugiat consequat minim elit mollit. Aliquip aliqua consectetur officia fugiat consequat minim. - Lorem occaecat reprehenderit exercitation incididunt.- Velit laboris magna amet culpa cillum commodo.- Enim adipiscing deserunt nulla.Duis veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore. Adipiscing deserunt nulla duis veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate.◦edit_file Minim elit mollit pariatur. · 2.9s (7 lines)⚡grep Lorem occaecat reprehendet exercitation. · 0s 7⧉ copy ⚕◐Thought: Irure nostrud tempor ⧉ copy ⚕ ⚕ ◐ Thought: Irure nostrud tempor - - - const x3 = 26function f1() { return x}⧉ copy⚕Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem. Aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis. Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur.- Aute quis eiusmod lorem occaecat.- Incididunt dolor proident velit laboris magna amet.- Culpa cillum commodo enim.Adipiscing deserunt nulla duis veniam sed anim excepteur irure nostrud. Cillum commodo enim adipiscing deserunt nulla duis veniam sed anim excepteur.⚡edit_file Officia fugiat consequat minim. · 0s ⧉ copy⚕ ⧉ copy ● web_search Proident velit laboris magna. · 2.5s (18 lines) ◆ write_file Commodo enim adipiscing deserunt. · 2.6s (7 lines) $ terminal Sed anim excepteur irure. · 2.7s (2 lines)◇read_file Cupidatat voluptate ullamco labore. · 2.8s (18 lines)◦edit_file Aliquip aliqua consectetur officia. · 2.9s (7 lines) ⧉ copy ⚕▍ 8 return x} ⧉ copy●web_search Proident velit laboris magna. · 2.5s (18 lines)◆write_file Commodo enim adipiscing deserunt. · 2.6s (7 lines)$terminal Sed anim excepteur irure. · 2.7s (2 lines)◇read_file Cupidatat voluptate ullamco labore. · 2.8s (18 lines)◦edit_file Aliquip aliqua consectetur officia. · 2.9s (7 lines) ⧉ copy ⚕ ⧉ copy ⚕ ◦edit_file Sit sunt esse aliquip. · 0.9s (7 lines)◦grep Fugiat consequat minim elit. · 1.0s (2 lines)●web_search Quis eiusmod lorem occaecat. · 1.1s (18 lines)◆write_file Dolor proident velit laboris. · 1.2s (7 lines)⚡terminal Cillum commodo enim adipiscing. · 0s- const x5 = 47function f2() { return x}Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute. Voluptate ullamco labore sit sunt esse. Tempor ipsum cupidatat voluptate ullamco labore sit.- Fugiat consequat minim elit mollit.- Quis eiusmod lorem occaecat reprehenderit exercitation incididunt.- Dolor proident velit laboris.Magna amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed anim. Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam.$ terminal1.3s (2 lines)10s │ …/lively-thrush/hermes-agentfile:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

View File

@@ -1,799 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-uncapped",
"mode": "mem",
"rep": 0,
"run_id": "mq8jwty0-1hks",
"utc": "2026-06-10T20:58:44.760Z",
"sha": "50e34713b",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 100000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2367592,
"gw_pid": 2367601,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/user@1001.service/app.slice/hermes-bench-mq8jwty0-1hks.scope",
"load_avg_at_start": [
0.71,
0.44,
0.42
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 51,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 57692,
"pss_kb": 31342,
"private_dirty_kb": 20212,
"vmhwm_kb": 57964,
"utime_ticks": 2,
"stime_ticks": 1,
"cg_current": 22855680,
"cg_peak": 22855680,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1056,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 104624,
"pss_kb": 62753,
"private_dirty_kb": 47868,
"vmhwm_kb": 107084,
"utime_ticks": 17,
"stime_ticks": 3,
"cg_current": 61587456,
"cg_peak": 65724416,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1709,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 114272,
"pss_kb": 63664,
"private_dirty_kb": 57388,
"vmhwm_kb": 114436,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 80728064,
"cg_peak": 81027072,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1711,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 114436,
"pss_kb": 63828,
"private_dirty_kb": 57552,
"vmhwm_kb": 114444,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 81117184,
"cg_peak": 81117184,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1712,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 114536,
"pss_kb": 63928,
"private_dirty_kb": 57652,
"vmhwm_kb": 114536,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 80982016,
"cg_peak": 81117184,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1713,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 114748,
"pss_kb": 64140,
"private_dirty_kb": 57864,
"vmhwm_kb": 114888,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 81768448,
"cg_peak": 82030592,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2069,
"msgs": null,
"events": null,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 218304,
"pss_kb": 165381,
"private_dirty_kb": 158348,
"vmhwm_kb": 218320,
"utime_ticks": 74,
"stime_ticks": 7,
"cg_current": 186974208,
"cg_peak": 187183104,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2274,
"msgs": 501,
"events": 1792,
"pty_bytes": 31890,
"pty_writes": 15,
"rss_kb": 241724,
"pss_kb": 188614,
"private_dirty_kb": 181708,
"vmhwm_kb": 241724,
"utime_ticks": 98,
"stime_ticks": 8,
"cg_current": 211410944,
"cg_peak": 212041728,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2551,
"msgs": 601,
"events": 2154,
"pty_bytes": 35126,
"pty_writes": 17,
"rss_kb": 286064,
"pss_kb": 242065,
"private_dirty_kb": 225732,
"vmhwm_kb": 286084,
"utime_ticks": 135,
"stime_ticks": 10,
"cg_current": 258056192,
"cg_peak": 258289664,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2604,
"msgs": 701,
"events": 2496,
"pty_bytes": 36863,
"pty_writes": 18,
"rss_kb": 321584,
"pss_kb": 278638,
"private_dirty_kb": 261128,
"vmhwm_kb": 321740,
"utime_ticks": 151,
"stime_ticks": 12,
"cg_current": 295292928,
"cg_peak": 295944192,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2826,
"msgs": 801,
"events": 2857,
"pty_bytes": 39692,
"pty_writes": 20,
"rss_kb": 338924,
"pss_kb": 295973,
"private_dirty_kb": 278468,
"vmhwm_kb": 344240,
"utime_ticks": 187,
"stime_ticks": 16,
"cg_current": 313622528,
"cg_peak": 319459328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2828,
"msgs": 901,
"events": 3245,
"pty_bytes": 39692,
"pty_writes": 20,
"rss_kb": 338976,
"pss_kb": 296025,
"private_dirty_kb": 278520,
"vmhwm_kb": 344240,
"utime_ticks": 187,
"stime_ticks": 16,
"cg_current": 313614336,
"cg_peak": 319459328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2830,
"msgs": 1001,
"events": 3588,
"pty_bytes": 39692,
"pty_writes": 20,
"rss_kb": 339104,
"pss_kb": 296153,
"private_dirty_kb": 278648,
"vmhwm_kb": 344240,
"utime_ticks": 187,
"stime_ticks": 16,
"cg_current": 313876480,
"cg_peak": 319459328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2832,
"msgs": 1101,
"events": 3928,
"pty_bytes": 39692,
"pty_writes": 20,
"rss_kb": 339404,
"pss_kb": 296453,
"private_dirty_kb": 278948,
"vmhwm_kb": 344240,
"utime_ticks": 187,
"stime_ticks": 16,
"cg_current": 314130432,
"cg_peak": 319459328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2834,
"msgs": 1201,
"events": 4298,
"pty_bytes": 39692,
"pty_writes": 20,
"rss_kb": 339588,
"pss_kb": 296637,
"private_dirty_kb": 279132,
"vmhwm_kb": 344240,
"utime_ticks": 187,
"stime_ticks": 16,
"cg_current": 314392576,
"cg_peak": 319459328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2835,
"msgs": 1300,
"events": 4659,
"pty_bytes": 39692,
"pty_writes": 20,
"rss_kb": 339780,
"pss_kb": 296829,
"private_dirty_kb": 279324,
"vmhwm_kb": 344240,
"utime_ticks": 187,
"stime_ticks": 16,
"cg_current": 314654720,
"cg_peak": 319459328,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3078,
"msgs": null,
"events": null,
"pty_bytes": 39692,
"pty_writes": 20,
"rss_kb": 425380,
"pss_kb": 381530,
"private_dirty_kb": 364924,
"vmhwm_kb": 425492,
"utime_ticks": 219,
"stime_ticks": 19,
"cg_current": 404750336,
"cg_peak": 404750336,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3455,
"msgs": 1400,
"events": 5011,
"pty_bytes": 41169,
"pty_writes": 21,
"rss_kb": 487696,
"pss_kb": 443846,
"private_dirty_kb": 427240,
"vmhwm_kb": 487712,
"utime_ticks": 278,
"stime_ticks": 22,
"cg_current": 469049344,
"cg_peak": 469057536,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3757,
"msgs": 1500,
"events": 5384,
"pty_bytes": 41699,
"pty_writes": 22,
"rss_kb": 519032,
"pss_kb": 475182,
"private_dirty_kb": 458576,
"vmhwm_kb": 519036,
"utime_ticks": 310,
"stime_ticks": 23,
"cg_current": 501985280,
"cg_peak": 501985280,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4083,
"msgs": 1600,
"events": 5730,
"pty_bytes": 43564,
"pty_writes": 24,
"rss_kb": 546612,
"pss_kb": 502762,
"private_dirty_kb": 486156,
"vmhwm_kb": 546680,
"utime_ticks": 345,
"stime_ticks": 25,
"cg_current": 531128320,
"cg_peak": 531128320,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4087,
"msgs": 1700,
"events": 6100,
"pty_bytes": 43564,
"pty_writes": 24,
"rss_kb": 546828,
"pss_kb": 502978,
"private_dirty_kb": 486372,
"vmhwm_kb": 546896,
"utime_ticks": 345,
"stime_ticks": 25,
"cg_current": 531390464,
"cg_peak": 531390464,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4091,
"msgs": 1800,
"events": 6455,
"pty_bytes": 43564,
"pty_writes": 24,
"rss_kb": 546932,
"pss_kb": 503082,
"private_dirty_kb": 486476,
"vmhwm_kb": 547220,
"utime_ticks": 345,
"stime_ticks": 25,
"cg_current": 531914752,
"cg_peak": 531914752,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4094,
"msgs": 1900,
"events": 6838,
"pty_bytes": 43564,
"pty_writes": 24,
"rss_kb": 547332,
"pss_kb": 503482,
"private_dirty_kb": 486876,
"vmhwm_kb": 547456,
"utime_ticks": 345,
"stime_ticks": 25,
"cg_current": 532176896,
"cg_peak": 532176896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4097,
"msgs": 2000,
"events": 7151,
"pty_bytes": 43564,
"pty_writes": 24,
"rss_kb": 547764,
"pss_kb": 503914,
"private_dirty_kb": 487308,
"vmhwm_kb": 547908,
"utime_ticks": 346,
"stime_ticks": 25,
"cg_current": 532439040,
"cg_peak": 532439040,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4100,
"msgs": null,
"events": null,
"pty_bytes": 43564,
"pty_writes": 24,
"rss_kb": 548212,
"pss_kb": 504362,
"private_dirty_kb": 487756,
"vmhwm_kb": 548288,
"utime_ticks": 346,
"stime_ticks": 25,
"cg_current": 532963328,
"cg_peak": 532963328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4411,
"msgs": 2100,
"events": 7532,
"pty_bytes": 43564,
"pty_writes": 24,
"rss_kb": 658764,
"pss_kb": 614914,
"private_dirty_kb": 598308,
"vmhwm_kb": 658832,
"utime_ticks": 385,
"stime_ticks": 31,
"cg_current": 648835072,
"cg_peak": 648835072,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4791,
"msgs": 2201,
"events": 7892,
"pty_bytes": 44965,
"pty_writes": 25,
"rss_kb": 692780,
"pss_kb": 648930,
"private_dirty_kb": 632324,
"vmhwm_kb": 692908,
"utime_ticks": 424,
"stime_ticks": 32,
"cg_current": 683880448,
"cg_peak": 683880448,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5114,
"msgs": null,
"events": null,
"pty_bytes": 44965,
"pty_writes": 25,
"rss_kb": 719796,
"pss_kb": 675946,
"private_dirty_kb": 659340,
"vmhwm_kb": 719796,
"utime_ticks": 456,
"stime_ticks": 35,
"cg_current": 711639040,
"cg_peak": 711864320,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5468,
"msgs": 2301,
"events": 8254,
"pty_bytes": 47938,
"pty_writes": 27,
"rss_kb": 724840,
"pss_kb": 680990,
"private_dirty_kb": 664384,
"vmhwm_kb": 725152,
"utime_ticks": 494,
"stime_ticks": 35,
"cg_current": 717672448,
"cg_peak": 717672448,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6121,
"msgs": null,
"events": null,
"pty_bytes": 49397,
"pty_writes": 28,
"rss_kb": 753180,
"pss_kb": 709330,
"private_dirty_kb": 692724,
"vmhwm_kb": 753180,
"utime_ticks": 562,
"stime_ticks": 38,
"cg_current": 746872832,
"cg_peak": 747012096,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6222,
"msgs": 2401,
"events": 8596,
"pty_bytes": 51085,
"pty_writes": 29,
"rss_kb": 756036,
"pss_kb": 712186,
"private_dirty_kb": 695580,
"vmhwm_kb": 756092,
"utime_ticks": 572,
"stime_ticks": 38,
"cg_current": 749625344,
"cg_peak": 749625344,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7002,
"msgs": 2501,
"events": 8957,
"pty_bytes": 55291,
"pty_writes": 31,
"rss_kb": 786164,
"pss_kb": 742314,
"private_dirty_kb": 725708,
"vmhwm_kb": 786172,
"utime_ticks": 651,
"stime_ticks": 40,
"cg_current": 781586432,
"cg_peak": 781586432,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7127,
"msgs": null,
"events": null,
"pty_bytes": 55291,
"pty_writes": 31,
"rss_kb": 807644,
"pss_kb": 763794,
"private_dirty_kb": 747188,
"vmhwm_kb": 807644,
"utime_ticks": 664,
"stime_ticks": 42,
"cg_current": 803647488,
"cg_peak": 803848192,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7830,
"msgs": 2601,
"events": 9345,
"pty_bytes": 58421,
"pty_writes": 33,
"rss_kb": 817624,
"pss_kb": 773774,
"private_dirty_kb": 757168,
"vmhwm_kb": 817692,
"utime_ticks": 735,
"stime_ticks": 43,
"cg_current": 814092288,
"cg_peak": 814092288,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8130,
"msgs": null,
"events": null,
"pty_bytes": 58421,
"pty_writes": 33,
"rss_kb": 842436,
"pss_kb": 798586,
"private_dirty_kb": 781980,
"vmhwm_kb": 842436,
"utime_ticks": 764,
"stime_ticks": 45,
"cg_current": 839323648,
"cg_peak": 840339456,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8409,
"msgs": 2701,
"events": 9688,
"pty_bytes": 59910,
"pty_writes": 34,
"rss_kb": 844204,
"pss_kb": 800354,
"private_dirty_kb": 783748,
"vmhwm_kb": 844204,
"utime_ticks": 793,
"stime_ticks": 45,
"cg_current": 841596928,
"cg_peak": 841596928,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9134,
"msgs": null,
"events": null,
"pty_bytes": 61517,
"pty_writes": 35,
"rss_kb": 875368,
"pss_kb": 831518,
"private_dirty_kb": 814912,
"vmhwm_kb": 875368,
"utime_ticks": 866,
"stime_ticks": 48,
"cg_current": 874221568,
"cg_peak": 874221568,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9286,
"msgs": 2801,
"events": 10028,
"pty_bytes": 63074,
"pty_writes": 36,
"rss_kb": 875868,
"pss_kb": 832018,
"private_dirty_kb": 815412,
"vmhwm_kb": 875868,
"utime_ticks": 882,
"stime_ticks": 48,
"cg_current": 874745856,
"cg_peak": 874749952,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 10138,
"msgs": null,
"events": null,
"pty_bytes": 64846,
"pty_writes": 37,
"rss_kb": 906312,
"pss_kb": 862462,
"private_dirty_kb": 845856,
"vmhwm_kb": 906312,
"utime_ticks": 968,
"stime_ticks": 51,
"cg_current": 906104832,
"cg_peak": 906543104,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 10191,
"msgs": 2901,
"events": 10398,
"pty_bytes": 68029,
"pty_writes": 39,
"rss_kb": 908240,
"pss_kb": 864390,
"private_dirty_kb": 847784,
"vmhwm_kb": 908264,
"utime_ticks": 973,
"stime_ticks": 51,
"cg_current": 908509184,
"cg_peak": 908607488,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 10198,
"msgs": 3000,
"events": 10759,
"pty_bytes": 68029,
"pty_writes": 39,
"rss_kb": 908380,
"pss_kb": 864530,
"private_dirty_kb": 847924,
"vmhwm_kb": 908432,
"utime_ticks": 974,
"stime_ticks": 51,
"cg_current": 908509184,
"cg_peak": 908607488,
"cg_oom_kill": 0
},
{
"kind": "done",
"t_ms": 10205,
"msgs": 3000,
"events": 10759,
"pty_bytes": 68029,
"pty_writes": 39,
"rss_kb": 908828,
"pss_kb": 864978,
"private_dirty_kb": 848372,
"vmhwm_kb": 908852,
"utime_ticks": 974,
"stime_ticks": 51,
"cg_current": 909033472,
"cg_peak": 909033472,
"cg_oom_kill": 0
}
],
"events": [
{
"kind": "rpc",
"method": "session.create",
"t_ms": 177
},
{
"kind": "rpc",
"method": "startup.catalog",
"t_ms": 203
},
{
"kind": "rpc",
"method": "model.options",
"t_ms": 203
}
],
"summary": {
"result": "crashed_after_stream",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 10266
},
"stream_done": true,
"msgs_streamed": 3000,
"events_streamed": 10759,
"pty_bytes_total": 69292,
"pty_data_callbacks": 40,
"first_byte_ms": 146,
"session_create_ms": 177,
"stream_start_ms": 1707,
"vmhwm_kb": 908852,
"cg_peak": 909033472,
"drain_max_loop_lag_ms": 22,
"drain_lag_violations": 3,
"drain_ok": false,
"digest": null
},
"pty_tail": "() { return x}⧉ copy⚕ ▼ Thinking: Occaecat reprehenderit exercitation│Consectetur officia fugiat consequat minim elit mollit pariatur aute quis eiusmod. Esse aliquip aliqua │ consectetur officia fugiat consequat minim elit mollit pariatur aute. Occaecat reprehenderit exercitation incididunt dolor proident.- Laboris magna amet culpa cillum.- Adipiscing deserunt nulla duis veniam sed anim.- Excepteur irure nostrud tempor.Ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat. Irure nostrud tempor ipsum cupidatat voluptate.⚡terminal Occaecat reprehenderit exercitation incididunt. · 0s ⚕ ⧉ copy ⚕▼Thinking: Quis eiusmod lorem │ │ - - - const x4 = 55function f0() { return x}⧉ copy⚕ ▼ Thinking: Quis eiusmod lorem│Esse aliquip aliqua consectetur officia fugiat consequat minim. Labore sit sunt esse aliquip aliqua │ consectetur officia fugiat. Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.- Dolor proident velit laboris magna.- Cillum commodo enim adipiscing deserunt nulla duis.- Veniam sed anim excepteur.Irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. Sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit.⚡terminal Quis eiusmod lorem occaecat. · 0s8⧉ copy⚕◐Thought: Deserunt nulla duis ⧉ copy ⚕ ● web_search Irure nostrud tempor ipsum. · 2.1s (18 lines)⚕ ◐ Thought: Deserunt nulla duis - - - const x5 = 19function f4() { return x}⧉ copy⚕Irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua. Sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse. - Labore sit sunt esse aliquip.- Officia fugiat consequat minim elit mollit pariatur.- Aute quis eiusmod lorem.Occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet culpa cillum. Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet.●web_search Irure nostrud tempor ipsum. · 2.1s (18 lines)⚡write_fileLabore si sun esse. · 0s ⧉ copy ⚕ ▼ Thinking: Consequat minim elit │ │ $terminal Consequat minim elit mollit. · 3.7s (2 lines) ◇ read_file Eiusmod lorem occaecat reprehenderit. · 3.8s (18 lines) ◦edit_file Proidnt velitlaboris magna. · 3.9s (7gep Commodo enimadipiscing dserunt. · 0s9const x5 = 75function f0() { return x}Cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua consectetur officia. Nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua.Consequat minim elit mollit pariatur aute.- Eiusmod lorem occaecat reprehenderit exercitation.- Proident velit laboris magna amet culpa cillum.- Commodo enim adipiscing deserunt.Nulla duis veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore. Enim adipiscingdeserunt nulla duis veniam.◦ grep4.0s (2 lines)file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

View File

@@ -1,782 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-uncapped",
"mode": "mem",
"rep": 1,
"run_id": "mq8jy0dw-48jl",
"utc": "2026-06-10T20:59:39.764Z",
"sha": "50e34713b",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 100000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2369054,
"gw_pid": 2369063,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/session-7349.scope",
"load_avg_at_start": [
0.97,
0.58,
0.47
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 26616,
"pss_kb": 9810,
"private_dirty_kb": 3112,
"vmhwm_kb": 26616,
"utime_ticks": 0,
"stime_ticks": 0,
"cg_current": 3192561664,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1032,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 11,
"rss_kb": 105124,
"pss_kb": 64072,
"private_dirty_kb": 48416,
"vmhwm_kb": 107976,
"utime_ticks": 18,
"stime_ticks": 3,
"cg_current": 3193053184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1711,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 113336,
"pss_kb": 72247,
"private_dirty_kb": 56628,
"vmhwm_kb": 113472,
"utime_ticks": 20,
"stime_ticks": 3,
"cg_current": 3192659968,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1712,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 113720,
"pss_kb": 72567,
"private_dirty_kb": 56884,
"vmhwm_kb": 113772,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 3192659968,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1713,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 113976,
"pss_kb": 72823,
"private_dirty_kb": 57140,
"vmhwm_kb": 114008,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 3192659968,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1713,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 114224,
"pss_kb": 73071,
"private_dirty_kb": 57388,
"vmhwm_kb": 114240,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 3192659968,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2039,
"msgs": null,
"events": null,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 233888,
"pss_kb": 190414,
"private_dirty_kb": 173920,
"vmhwm_kb": 233908,
"utime_ticks": 75,
"stime_ticks": 7,
"cg_current": 3192918016,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2139,
"msgs": 501,
"events": 1792,
"pty_bytes": 31881,
"pty_writes": 14,
"rss_kb": 242104,
"pss_kb": 198630,
"private_dirty_kb": 182136,
"vmhwm_kb": 242104,
"utime_ticks": 86,
"stime_ticks": 8,
"cg_current": 3192664064,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2341,
"msgs": 601,
"events": 2154,
"pty_bytes": 36276,
"pty_writes": 16,
"rss_kb": 277724,
"pss_kb": 234112,
"private_dirty_kb": 217568,
"vmhwm_kb": 277744,
"utime_ticks": 113,
"stime_ticks": 9,
"cg_current": 3192410112,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2415,
"msgs": 701,
"events": 2496,
"pty_bytes": 38144,
"pty_writes": 17,
"rss_kb": 293016,
"pss_kb": 249217,
"private_dirty_kb": 232608,
"vmhwm_kb": 319420,
"utime_ticks": 136,
"stime_ticks": 11,
"cg_current": 3192414208,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2665,
"msgs": 801,
"events": 2857,
"pty_bytes": 42361,
"pty_writes": 19,
"rss_kb": 347140,
"pss_kb": 303341,
"private_dirty_kb": 286732,
"vmhwm_kb": 347192,
"utime_ticks": 174,
"stime_ticks": 13,
"cg_current": 3192664064,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2890,
"msgs": 901,
"events": 3245,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 378252,
"pss_kb": 334448,
"private_dirty_kb": 317844,
"vmhwm_kb": 378328,
"utime_ticks": 200,
"stime_ticks": 15,
"cg_current": 3191242752,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2894,
"msgs": 1001,
"events": 3588,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 378556,
"pss_kb": 334752,
"private_dirty_kb": 318148,
"vmhwm_kb": 378632,
"utime_ticks": 201,
"stime_ticks": 15,
"cg_current": 3191500800,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2896,
"msgs": 1101,
"events": 3928,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 378840,
"pss_kb": 335036,
"private_dirty_kb": 318432,
"vmhwm_kb": 378944,
"utime_ticks": 201,
"stime_ticks": 15,
"cg_current": 3191242752,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2898,
"msgs": 1201,
"events": 4298,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 379096,
"pss_kb": 335292,
"private_dirty_kb": 318688,
"vmhwm_kb": 379164,
"utime_ticks": 201,
"stime_ticks": 15,
"cg_current": 3191242752,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2899,
"msgs": 1300,
"events": 4659,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 379292,
"pss_kb": 335488,
"private_dirty_kb": 318884,
"vmhwm_kb": 379340,
"utime_ticks": 201,
"stime_ticks": 15,
"cg_current": 3191242752,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2900,
"msgs": 1400,
"events": 5011,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 379448,
"pss_kb": 335644,
"private_dirty_kb": 319040,
"vmhwm_kb": 379464,
"utime_ticks": 201,
"stime_ticks": 15,
"cg_current": 3191242752,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2902,
"msgs": 1500,
"events": 5384,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 379524,
"pss_kb": 335720,
"private_dirty_kb": 319116,
"vmhwm_kb": 379600,
"utime_ticks": 201,
"stime_ticks": 15,
"cg_current": 3191242752,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3041,
"msgs": null,
"events": null,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 429064,
"pss_kb": 385260,
"private_dirty_kb": 368656,
"vmhwm_kb": 432296,
"utime_ticks": 222,
"stime_ticks": 17,
"cg_current": 3191476224,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3342,
"msgs": 1600,
"events": 5730,
"pty_bytes": 45955,
"pty_writes": 21,
"rss_kb": 520268,
"pss_kb": 476464,
"private_dirty_kb": 459860,
"vmhwm_kb": 520268,
"utime_ticks": 280,
"stime_ticks": 20,
"cg_current": 3191271424,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4018,
"msgs": 1700,
"events": 6100,
"pty_bytes": 48813,
"pty_writes": 23,
"rss_kb": 595392,
"pss_kb": 551588,
"private_dirty_kb": 534984,
"vmhwm_kb": 595392,
"utime_ticks": 350,
"stime_ticks": 22,
"cg_current": 3191713792,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4044,
"msgs": null,
"events": null,
"pty_bytes": 48813,
"pty_writes": 23,
"rss_kb": 595392,
"pss_kb": 551588,
"private_dirty_kb": 534984,
"vmhwm_kb": 595392,
"utime_ticks": 353,
"stime_ticks": 22,
"cg_current": 3191713792,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4195,
"msgs": 1800,
"events": 6455,
"pty_bytes": 50669,
"pty_writes": 24,
"rss_kb": 597364,
"pss_kb": 553560,
"private_dirty_kb": 536956,
"vmhwm_kb": 597404,
"utime_ticks": 369,
"stime_ticks": 23,
"cg_current": 3191312384,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4646,
"msgs": 1900,
"events": 6838,
"pty_bytes": 53455,
"pty_writes": 26,
"rss_kb": 629256,
"pss_kb": 585452,
"private_dirty_kb": 568848,
"vmhwm_kb": 629392,
"utime_ticks": 416,
"stime_ticks": 25,
"cg_current": 3192115200,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4662,
"msgs": 2000,
"events": 7151,
"pty_bytes": 53455,
"pty_writes": 26,
"rss_kb": 629784,
"pss_kb": 585980,
"private_dirty_kb": 569376,
"vmhwm_kb": 629888,
"utime_ticks": 417,
"stime_ticks": 25,
"cg_current": 3192115200,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4668,
"msgs": 2100,
"events": 7532,
"pty_bytes": 53455,
"pty_writes": 26,
"rss_kb": 630020,
"pss_kb": 586216,
"private_dirty_kb": 569612,
"vmhwm_kb": 630032,
"utime_ticks": 417,
"stime_ticks": 25,
"cg_current": 3192377344,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4672,
"msgs": 2201,
"events": 7892,
"pty_bytes": 53455,
"pty_writes": 26,
"rss_kb": 630268,
"pss_kb": 586464,
"private_dirty_kb": 569860,
"vmhwm_kb": 630344,
"utime_ticks": 418,
"stime_ticks": 25,
"cg_current": 3192377344,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4676,
"msgs": 2301,
"events": 8254,
"pty_bytes": 53455,
"pty_writes": 26,
"rss_kb": 630488,
"pss_kb": 586684,
"private_dirty_kb": 570080,
"vmhwm_kb": 630532,
"utime_ticks": 418,
"stime_ticks": 25,
"cg_current": 3192377344,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5060,
"msgs": null,
"events": null,
"pty_bytes": 53455,
"pty_writes": 26,
"rss_kb": 751880,
"pss_kb": 708076,
"private_dirty_kb": 691472,
"vmhwm_kb": 751948,
"utime_ticks": 466,
"stime_ticks": 30,
"cg_current": 3192451072,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5360,
"msgs": 2401,
"events": 8596,
"pty_bytes": 55789,
"pty_writes": 27,
"rss_kb": 760368,
"pss_kb": 716564,
"private_dirty_kb": 699960,
"vmhwm_kb": 760428,
"utime_ticks": 496,
"stime_ticks": 30,
"cg_current": 3192664064,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6061,
"msgs": null,
"events": null,
"pty_bytes": 57896,
"pty_writes": 28,
"rss_kb": 791384,
"pss_kb": 747580,
"private_dirty_kb": 730976,
"vmhwm_kb": 791384,
"utime_ticks": 569,
"stime_ticks": 32,
"cg_current": 3193569280,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6112,
"msgs": 2501,
"events": 8957,
"pty_bytes": 60544,
"pty_writes": 29,
"rss_kb": 794628,
"pss_kb": 750824,
"private_dirty_kb": 734220,
"vmhwm_kb": 794632,
"utime_ticks": 574,
"stime_ticks": 32,
"cg_current": 3193577472,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6664,
"msgs": 2601,
"events": 9345,
"pty_bytes": 63209,
"pty_writes": 30,
"rss_kb": 821804,
"pss_kb": 778000,
"private_dirty_kb": 761396,
"vmhwm_kb": 821804,
"utime_ticks": 630,
"stime_ticks": 35,
"cg_current": 3193458688,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7066,
"msgs": null,
"events": null,
"pty_bytes": 65585,
"pty_writes": 31,
"rss_kb": 847596,
"pss_kb": 803792,
"private_dirty_kb": 787188,
"vmhwm_kb": 847616,
"utime_ticks": 671,
"stime_ticks": 37,
"cg_current": 3193528320,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7492,
"msgs": 2701,
"events": 9688,
"pty_bytes": 66999,
"pty_writes": 32,
"rss_kb": 852344,
"pss_kb": 808540,
"private_dirty_kb": 791936,
"vmhwm_kb": 852344,
"utime_ticks": 714,
"stime_ticks": 37,
"cg_current": 3193872384,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8072,
"msgs": null,
"events": null,
"pty_bytes": 68029,
"pty_writes": 33,
"rss_kb": 881744,
"pss_kb": 837940,
"private_dirty_kb": 821336,
"vmhwm_kb": 881744,
"utime_ticks": 773,
"stime_ticks": 39,
"cg_current": 3194839040,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8372,
"msgs": 2801,
"events": 10028,
"pty_bytes": 70059,
"pty_writes": 34,
"rss_kb": 883640,
"pss_kb": 839835,
"private_dirty_kb": 823232,
"vmhwm_kb": 883640,
"utime_ticks": 804,
"stime_ticks": 39,
"cg_current": 3199139840,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9075,
"msgs": null,
"events": null,
"pty_bytes": 72544,
"pty_writes": 35,
"rss_kb": 915004,
"pss_kb": 871200,
"private_dirty_kb": 854596,
"vmhwm_kb": 915004,
"utime_ticks": 874,
"stime_ticks": 43,
"cg_current": 3200159744,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9299,
"msgs": 2901,
"events": 10398,
"pty_bytes": 74276,
"pty_writes": 36,
"rss_kb": 915420,
"pss_kb": 871616,
"private_dirty_kb": 855012,
"vmhwm_kb": 915428,
"utime_ticks": 898,
"stime_ticks": 43,
"cg_current": 3199324160,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9325,
"msgs": 3000,
"events": 10759,
"pty_bytes": 75521,
"pty_writes": 37,
"rss_kb": 917560,
"pss_kb": 873756,
"private_dirty_kb": 857152,
"vmhwm_kb": 917668,
"utime_ticks": 901,
"stime_ticks": 43,
"cg_current": 3199324160,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "done",
"t_ms": 9332,
"msgs": 3000,
"events": 10759,
"pty_bytes": 75521,
"pty_writes": 37,
"rss_kb": 917692,
"pss_kb": 873888,
"private_dirty_kb": 857284,
"vmhwm_kb": 917736,
"utime_ticks": 901,
"stime_ticks": 43,
"cg_current": 3199324160,
"cg_peak": 6536753152,
"cg_oom_kill": 0
}
],
"events": [
{
"kind": "rpc",
"method": "session.create",
"t_ms": 201
},
{
"kind": "rpc",
"method": "startup.catalog",
"t_ms": 201
},
{
"kind": "rpc",
"method": "model.options",
"t_ms": 201
}
],
"summary": {
"result": "crashed_after_stream",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 9384
},
"stream_done": true,
"msgs_streamed": 3000,
"events_streamed": 10759,
"pty_bytes_total": 76784,
"pty_data_callbacks": 38,
"first_byte_ms": 153,
"session_create_ms": 201,
"stream_start_ms": 1709,
"vmhwm_kb": 917736,
"cg_peak": 6536753152,
"drain_max_loop_lag_ms": 33,
"drain_lag_violations": 3,
"drain_ok": false,
"digest": null
},
"pty_tail": "nes)⚡write_fileAliquip aliqua consectetur officias $ terminal Occaecat reprehenderit exercitation incididunt. · 1.7s (2 lines) ◇read_file Laboris magna amet culpa. · 1.8s (18 lines) ◦ edit_file Adipiscing deserunt nulla duis. · 1.9s (7 lines) ◦grep Excepteur irure nostrud tempor. · 2.0s (2 lines)●web_search Ullamco labore sit sunt. · 2.1s (18 lines)◆write_file Consectetur officia fugiat consequat. · 2.2s (7 lines) $ terminal Pariatur aute quis eiusmod. · 2.3s (2 lines) ⧉ copy ⚕ ⧉ copy $terminal Occaecat reprehenderit exercitation incididunt. · 1.7s (2 lines) ◇read_file Laboris magna amet culpa. · 1.8s (18 lines) ◦edit_file Adipiscing deserunt nulla duis. · 1.9s (7 lines) ◦grep Excepteur irure nostrud tempor. · 2.0s (2 lines) ●web_search Ullamco labore sit sunt. · 2.1s (18 lines) ◆write_file Consectetur officia fugiat consequat. · 2.2s (7 lines) $terminal Pariatur aute quis eiusmod. · 2.3s (2 lines) ⧉ copy ⚕ - - - const x2 = 97function f2() { return x}⧉ copy●6⧉ copy ⚕ ⧉ copy ⚕ ⧉ copy⚕▍ ◐⚕ - - - const x6 = 57function f2() { return x}⧉ copy⚕ - - - const x0 = 58function f3() { return x}⧉ copy⚕ ▼ Thinking: Veniam sed anim│ │ ◇read_file Aute quis eiusmod lorem. · 2.4s (18 lines) ◦edit_file Incididunt dolor proident velit. · 2.5s (7 lines) ◦grep Culpa cillum commodo enim. · 2.6s (2 lines) ● web_search Duis veniam sed anim. · 2.7s (18 lines) ◆ write_file Tempor ipsum cupidatat voluptate. · 2.8s (7 lines) $terminal Sunt esse aliquip aliqua. · 2.9s (2 lines) ◇ read_file Consequat minim elit mollit. · 3.0s (18 lines) ◦edit_file Eiusmod lorem occaecat reprehenderit. · 3.1s (7 lines) ⧉ copy ⚕ 7◇read_file Aute quis eiusmod lorem. · 2.4s (18 lines) ◦edit_file Incididunt dolor proident velit. · 2.5s (7 lines) ◦grep Culpa cillum commodo enim. · 2.6s (2 lines) ●web_search Duis veniam sed anim. · 2.7s (18 lines) ◆write_file Tempor ipsum cupidatat voluptate. · 2.8s (7 lines) $terminal Sunt esse aliquip aliqua. · 2.9s (2 lines) ◇read_file Consequat minim elit mollit. · 3.0s (18 lines) ◦edit_file Eiusmod lorem occaecat reprehenderit. · 3.1s (7 lines) ⧉ copy ⚕ - - - const x0 = 21function f1() { return x}⧉ copy● ⧉ copy ⚕ ◦ edit_file Occaecat reprehenderit exercitation incididunt. · 0.5s (7 lines) ◦grep Laboris magna amet culpa. · 0.6s (2 lines) ⚡web_search Adipiscing deserunt nulla duis. · 0s◐- - - const x6 = 83function f3() { return x}Occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet culpa cillum commodo enim. Quis eiusmod lorem occaecat reprehenderit exercitation. Mollit pariatur aute quis eiusmod lorem occaecat.- Laboris magna amet culpa cillum.- Adipiscing deserunt nulla duis veniam sed anim.- Excepteur irure nostrud tempor.Ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua consectetur officia fugiat. Irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua consectetur.● web_search.7s (18 lines)9file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

View File

@@ -1,765 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-capped",
"mode": "mem",
"rep": 1,
"run_id": "mq8jyfi3-9iyw",
"utc": "2026-06-10T20:59:59.356Z",
"sha": "50e34713b",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 3000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2369510,
"gw_pid": 2369523,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/session-7349.scope",
"load_avg_at_start": [
0.85,
0.57,
0.47
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 25,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 26620,
"pss_kb": 9806,
"private_dirty_kb": 3108,
"vmhwm_kb": 26620,
"utime_ticks": 0,
"stime_ticks": 0,
"cg_current": 3198296064,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1033,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 11,
"rss_kb": 105328,
"pss_kb": 64253,
"private_dirty_kb": 48596,
"vmhwm_kb": 107756,
"utime_ticks": 20,
"stime_ticks": 2,
"cg_current": 3198902272,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1692,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 106572,
"pss_kb": 65476,
"private_dirty_kb": 49840,
"vmhwm_kb": 107756,
"utime_ticks": 21,
"stime_ticks": 2,
"cg_current": 3199021056,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1721,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 117112,
"pss_kb": 75936,
"private_dirty_kb": 60252,
"vmhwm_kb": 117112,
"utime_ticks": 27,
"stime_ticks": 3,
"cg_current": 3199021056,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1722,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 117120,
"pss_kb": 75944,
"private_dirty_kb": 60260,
"vmhwm_kb": 117124,
"utime_ticks": 28,
"stime_ticks": 3,
"cg_current": 3199021056,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1723,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 117148,
"pss_kb": 75972,
"private_dirty_kb": 60288,
"vmhwm_kb": 117152,
"utime_ticks": 28,
"stime_ticks": 3,
"cg_current": 3199021056,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1724,
"msgs": 501,
"events": 1792,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 117160,
"pss_kb": 75984,
"private_dirty_kb": 60300,
"vmhwm_kb": 117164,
"utime_ticks": 28,
"stime_ticks": 3,
"cg_current": 3199021056,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2046,
"msgs": null,
"events": null,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 240808,
"pss_kb": 197341,
"private_dirty_kb": 180876,
"vmhwm_kb": 240824,
"utime_ticks": 81,
"stime_ticks": 7,
"cg_current": 3199107072,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2245,
"msgs": 601,
"events": 2154,
"pty_bytes": 37880,
"pty_writes": 17,
"rss_kb": 257716,
"pss_kb": 214080,
"private_dirty_kb": 197536,
"vmhwm_kb": 257812,
"utime_ticks": 106,
"stime_ticks": 8,
"cg_current": 3199311872,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2422,
"msgs": 701,
"events": 2496,
"pty_bytes": 40363,
"pty_writes": 19,
"rss_kb": 290072,
"pss_kb": 246426,
"private_dirty_kb": 229892,
"vmhwm_kb": 290428,
"utime_ticks": 128,
"stime_ticks": 9,
"cg_current": 3200040960,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2447,
"msgs": 801,
"events": 2857,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 298000,
"pss_kb": 254285,
"private_dirty_kb": 237692,
"vmhwm_kb": 298144,
"utime_ticks": 136,
"stime_ticks": 9,
"cg_current": 3199799296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2450,
"msgs": 901,
"events": 3245,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 298400,
"pss_kb": 254685,
"private_dirty_kb": 238092,
"vmhwm_kb": 297592,
"utime_ticks": 137,
"stime_ticks": 9,
"cg_current": 3199799296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2452,
"msgs": 1001,
"events": 3588,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 295160,
"pss_kb": 251445,
"private_dirty_kb": 234852,
"vmhwm_kb": 297592,
"utime_ticks": 137,
"stime_ticks": 9,
"cg_current": 3199799296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2454,
"msgs": 1101,
"events": 3928,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 295568,
"pss_kb": 251853,
"private_dirty_kb": 235260,
"vmhwm_kb": 297592,
"utime_ticks": 137,
"stime_ticks": 9,
"cg_current": 3199799296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2456,
"msgs": 1201,
"events": 4298,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 295800,
"pss_kb": 252085,
"private_dirty_kb": 235492,
"vmhwm_kb": 297592,
"utime_ticks": 137,
"stime_ticks": 9,
"cg_current": 3199799296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2457,
"msgs": 1300,
"events": 4659,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 296056,
"pss_kb": 252341,
"private_dirty_kb": 235748,
"vmhwm_kb": 297592,
"utime_ticks": 138,
"stime_ticks": 9,
"cg_current": 3199799296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2903,
"msgs": 1400,
"events": 5011,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 468980,
"pss_kb": 425153,
"private_dirty_kb": 408548,
"vmhwm_kb": 468996,
"utime_ticks": 235,
"stime_ticks": 18,
"cg_current": 3200602112,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3054,
"msgs": null,
"events": null,
"pty_bytes": 41355,
"pty_writes": 20,
"rss_kb": 499912,
"pss_kb": 456085,
"private_dirty_kb": 439480,
"vmhwm_kb": 499928,
"utime_ticks": 250,
"stime_ticks": 18,
"cg_current": 3200593920,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3534,
"msgs": 1500,
"events": 5384,
"pty_bytes": 44170,
"pty_writes": 22,
"rss_kb": 534956,
"pss_kb": 491129,
"private_dirty_kb": 474524,
"vmhwm_kb": 534956,
"utime_ticks": 300,
"stime_ticks": 20,
"cg_current": 3201155072,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3684,
"msgs": 1600,
"events": 5730,
"pty_bytes": 46055,
"pty_writes": 23,
"rss_kb": 535820,
"pss_kb": 491993,
"private_dirty_kb": 475388,
"vmhwm_kb": 535868,
"utime_ticks": 317,
"stime_ticks": 20,
"cg_current": 3200622592,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4060,
"msgs": null,
"events": null,
"pty_bytes": 48276,
"pty_writes": 24,
"rss_kb": 565124,
"pss_kb": 521297,
"private_dirty_kb": 504692,
"vmhwm_kb": 565124,
"utime_ticks": 355,
"stime_ticks": 23,
"cg_current": 3201978368,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4237,
"msgs": 1700,
"events": 6100,
"pty_bytes": 50759,
"pty_writes": 25,
"rss_kb": 570876,
"pss_kb": 527049,
"private_dirty_kb": 510444,
"vmhwm_kb": 570904,
"utime_ticks": 375,
"stime_ticks": 23,
"cg_current": 3201060864,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4787,
"msgs": 1800,
"events": 6455,
"pty_bytes": 55578,
"pty_writes": 27,
"rss_kb": 600836,
"pss_kb": 557009,
"private_dirty_kb": 540404,
"vmhwm_kb": 601100,
"utime_ticks": 432,
"stime_ticks": 25,
"cg_current": 3201822720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5063,
"msgs": null,
"events": null,
"pty_bytes": 55578,
"pty_writes": 27,
"rss_kb": 630232,
"pss_kb": 586405,
"private_dirty_kb": 569800,
"vmhwm_kb": 630320,
"utime_ticks": 460,
"stime_ticks": 28,
"cg_current": 3202007040,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5392,
"msgs": 1900,
"events": 6838,
"pty_bytes": 60725,
"pty_writes": 29,
"rss_kb": 632396,
"pss_kb": 588569,
"private_dirty_kb": 571964,
"vmhwm_kb": 632616,
"utime_ticks": 493,
"stime_ticks": 28,
"cg_current": 3202117632,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5844,
"msgs": 2000,
"events": 7151,
"pty_bytes": 63787,
"pty_writes": 30,
"rss_kb": 663860,
"pss_kb": 620033,
"private_dirty_kb": 603428,
"vmhwm_kb": 663860,
"utime_ticks": 539,
"stime_ticks": 30,
"cg_current": 3202842624,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6070,
"msgs": null,
"events": null,
"pty_bytes": 66765,
"pty_writes": 31,
"rss_kb": 668208,
"pss_kb": 624381,
"private_dirty_kb": 607776,
"vmhwm_kb": 668252,
"utime_ticks": 562,
"stime_ticks": 31,
"cg_current": 3203407872,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6520,
"msgs": 2100,
"events": 7532,
"pty_bytes": 68991,
"pty_writes": 32,
"rss_kb": 693816,
"pss_kb": 649989,
"private_dirty_kb": 633384,
"vmhwm_kb": 693816,
"utime_ticks": 608,
"stime_ticks": 33,
"cg_current": 3203493888,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7075,
"msgs": null,
"events": null,
"pty_bytes": 71150,
"pty_writes": 33,
"rss_kb": 723308,
"pss_kb": 679481,
"private_dirty_kb": 662876,
"vmhwm_kb": 723308,
"utime_ticks": 665,
"stime_ticks": 35,
"cg_current": 3203358720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7226,
"msgs": 2201,
"events": 7892,
"pty_bytes": 72878,
"pty_writes": 34,
"rss_kb": 723708,
"pss_kb": 679881,
"private_dirty_kb": 663276,
"vmhwm_kb": 723708,
"utime_ticks": 681,
"stime_ticks": 35,
"cg_current": 3203919872,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7377,
"msgs": 2301,
"events": 8254,
"pty_bytes": 73927,
"pty_writes": 35,
"rss_kb": 727704,
"pss_kb": 683877,
"private_dirty_kb": 667272,
"vmhwm_kb": 727712,
"utime_ticks": 696,
"stime_ticks": 35,
"cg_current": 3203964928,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7878,
"msgs": 2401,
"events": 8596,
"pty_bytes": 76342,
"pty_writes": 37,
"rss_kb": 755644,
"pss_kb": 711817,
"private_dirty_kb": 695212,
"vmhwm_kb": 755748,
"utime_ticks": 750,
"stime_ticks": 37,
"cg_current": 3204108288,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7903,
"msgs": 2501,
"events": 8957,
"pty_bytes": 76342,
"pty_writes": 37,
"rss_kb": 758700,
"pss_kb": 714873,
"private_dirty_kb": 698268,
"vmhwm_kb": 758712,
"utime_ticks": 752,
"stime_ticks": 37,
"cg_current": 3204087808,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7908,
"msgs": 2601,
"events": 9345,
"pty_bytes": 76342,
"pty_writes": 37,
"rss_kb": 758724,
"pss_kb": 714897,
"private_dirty_kb": 698292,
"vmhwm_kb": 758748,
"utime_ticks": 752,
"stime_ticks": 37,
"cg_current": 3204087808,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8078,
"msgs": null,
"events": null,
"pty_bytes": 76342,
"pty_writes": 37,
"rss_kb": 820220,
"pss_kb": 776393,
"private_dirty_kb": 759788,
"vmhwm_kb": 820220,
"utime_ticks": 774,
"stime_ticks": 40,
"cg_current": 3204931584,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8532,
"msgs": 2701,
"events": 9688,
"pty_bytes": 77954,
"pty_writes": 38,
"rss_kb": 846112,
"pss_kb": 802285,
"private_dirty_kb": 785680,
"vmhwm_kb": 846184,
"utime_ticks": 819,
"stime_ticks": 41,
"cg_current": 3204521984,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9009,
"msgs": 2801,
"events": 10028,
"pty_bytes": 78613,
"pty_writes": 39,
"rss_kb": 868832,
"pss_kb": 825004,
"private_dirty_kb": 808400,
"vmhwm_kb": 868832,
"utime_ticks": 867,
"stime_ticks": 43,
"cg_current": 3215708160,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9085,
"msgs": null,
"events": null,
"pty_bytes": 78613,
"pty_writes": 39,
"rss_kb": 869044,
"pss_kb": 825216,
"private_dirty_kb": 808612,
"vmhwm_kb": 869044,
"utime_ticks": 875,
"stime_ticks": 43,
"cg_current": 3212128256,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9913,
"msgs": 2901,
"events": 10398,
"pty_bytes": 81674,
"pty_writes": 41,
"rss_kb": 901240,
"pss_kb": 857412,
"private_dirty_kb": 840808,
"vmhwm_kb": 901240,
"utime_ticks": 959,
"stime_ticks": 46,
"cg_current": 3172499456,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 10088,
"msgs": null,
"events": null,
"pty_bytes": 81674,
"pty_writes": 41,
"rss_kb": 901584,
"pss_kb": 857756,
"private_dirty_kb": 841152,
"vmhwm_kb": 901584,
"utime_ticks": 977,
"stime_ticks": 46,
"cg_current": 3173011456,
"cg_peak": 6536753152,
"cg_oom_kill": 0
}
],
"events": [
{
"kind": "rpc",
"method": "session.create",
"t_ms": 201
},
{
"kind": "rpc",
"method": "startup.catalog",
"t_ms": 201
},
{
"kind": "rpc",
"method": "model.options",
"t_ms": 201
}
],
"summary": {
"result": "died",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 10302
},
"stream_done": false,
"msgs_streamed": 2901,
"events_streamed": null,
"pty_bytes_total": 83955,
"pty_data_callbacks": 44,
"first_byte_ms": 149,
"session_create_ms": 201,
"stream_start_ms": 1691,
"vmhwm_kb": 901584,
"cg_peak": 6536753152,
"drain_max_loop_lag_ms": 10,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
},
"pty_tail": " lines) ◦ edit_fileOfficia fugia consequat minim. ·0.7s (7 lines)const x0 = 43function f3() { return x}⧉ copy⚕ ▼ Thinking: Irure nostrud tempor│Culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed anim. Laboris magna amet culpa cillum │ commodo enim adipiscing deserunt nulla duis veniam. Irure nostrud tempor ipsum cupidatat voluptate.- Labore sit sunt esse aliquip.- Officia fugiat consequat minim elit mollit pariatur.- Aute quis eiusmod lorem.Occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet culpa cillum commodo enim. Quis eiusmod lorem occaecat reprehenderit exercitation.$terminal Irure nostrud tempor ipsum. · 0.5s (2 lines)◇rad_fie Labore it sunt esse. · 0.6s (18lines) ◦editOfficia fugiat conquatminim. ·0.7s (7 lines)⚡grep Autequis eiusmod lorem. · 0s ⧉ copy ⚕ ⧉ copy ⚕▼Thinking: Elit mollit pariatur││ ⧉ copy ⚕- - - const x0 = 6function f1() { return x} ⧉ copy ⚕◐Thought: Elit mollit pariatur - - - const x1 = 7function f2() { return x}⧉ copy●7 ⧉ copy ⚕ ● web_search Quis eiusmod lorem occaecat. · 0.9s (18 lines) ◆write_file Dolor proident velit laboris. · 1.0s (7 lines) ⚡terminal Cillum commodo enim adipiscing. · 0s◐- - - const x5 = 67function f2() { return x}Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet. Mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris.- Dolor proident velit laboris magna.- Cillum commodo enim adipiscing deserunt nulla duis.- Veniam sed anim excepteur.Irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip. Sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt.$ terminal1.1s (2 lines)⚕ ⧉ copy ⚕◐Thought: Exercitation incididunt dolor ⧉ copy ⚕▍ ⚕◐Thought: Amet culpa cillum ⧉ copy ⚕ ◦edit_file Nostrud tempor ipsum cupidatat. · 0.1s (7 lines)8 - - - const x5 = 98function f3() { return x}⧉ copy⚕Nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip. Anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt. Duis veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore.- Sit sunt esse aliquip aliqua.- Fugiat consequat minim elit mollit pariatur aute.- Quis eiusmod lorem occaecat.Reprehenderit exercitation incididunt dolor proident velit laboris magna amet culpa. Eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna.◦edit_file Nostrud tempor ipsum cupidatat. · 0.1s (7 lines)⚡grep Sitsunt esse aliquip. ·0s ⚕ ⧉ copy ⚕▼Thinking: Reprehenderit exercitation incididunt │ │ ⚕- - - const x0 = 63function f3() { return x} ⧉ copy⚕▼Thinking: Reprehenderit exercitation incididunt│Officia fugiat consequat minim elit mollit pariatur aute. Aliquip aliqua consectetur officia fugiat consequat│minim elit mollit. 9file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,782 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-capped",
"mode": "mem",
"rep": 2,
"run_id": "mq8jyv88-jxa2",
"utc": "2026-06-10T21:00:19.736Z",
"sha": "50e34713b",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 3000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2369887,
"gw_pid": 2369896,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/session-7349.scope",
"load_avg_at_start": [
1.06,
0.64,
0.49
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 44476,
"pss_kb": 19055,
"private_dirty_kb": 8312,
"vmhwm_kb": 45344,
"utime_ticks": 1,
"stime_ticks": 0,
"cg_current": 3178012672,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1034,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 104504,
"pss_kb": 63459,
"private_dirty_kb": 47832,
"vmhwm_kb": 107224,
"utime_ticks": 17,
"stime_ticks": 2,
"cg_current": 3179597824,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1689,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 108328,
"pss_kb": 67246,
"private_dirty_kb": 51656,
"vmhwm_kb": 108332,
"utime_ticks": 18,
"stime_ticks": 3,
"cg_current": 3185025024,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1714,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 120484,
"pss_kb": 79217,
"private_dirty_kb": 63496,
"vmhwm_kb": 120492,
"utime_ticks": 23,
"stime_ticks": 3,
"cg_current": 3186782208,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1715,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 120512,
"pss_kb": 79245,
"private_dirty_kb": 63524,
"vmhwm_kb": 120520,
"utime_ticks": 23,
"stime_ticks": 3,
"cg_current": 3186782208,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1716,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 120520,
"pss_kb": 79253,
"private_dirty_kb": 63532,
"vmhwm_kb": 120520,
"utime_ticks": 24,
"stime_ticks": 3,
"cg_current": 3186782208,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1990,
"msgs": 501,
"events": 1792,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 221328,
"pss_kb": 177861,
"private_dirty_kb": 161396,
"vmhwm_kb": 221404,
"utime_ticks": 74,
"stime_ticks": 6,
"cg_current": 3179270144,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2041,
"msgs": null,
"events": null,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 232640,
"pss_kb": 189143,
"private_dirty_kb": 172648,
"vmhwm_kb": 232648,
"utime_ticks": 80,
"stime_ticks": 7,
"cg_current": 3179270144,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2266,
"msgs": 601,
"events": 2154,
"pty_bytes": 35690,
"pty_writes": 16,
"rss_kb": 265936,
"pss_kb": 222429,
"private_dirty_kb": 205944,
"vmhwm_kb": 265936,
"utime_ticks": 108,
"stime_ticks": 9,
"cg_current": 3176169472,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2527,
"msgs": 701,
"events": 2496,
"pty_bytes": 40354,
"pty_writes": 19,
"rss_kb": 304772,
"pss_kb": 261057,
"private_dirty_kb": 244464,
"vmhwm_kb": 305004,
"utime_ticks": 143,
"stime_ticks": 11,
"cg_current": 3176157184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2531,
"msgs": 801,
"events": 2857,
"pty_bytes": 40354,
"pty_writes": 19,
"rss_kb": 305492,
"pss_kb": 261777,
"private_dirty_kb": 245184,
"vmhwm_kb": 305504,
"utime_ticks": 144,
"stime_ticks": 11,
"cg_current": 3176157184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2533,
"msgs": 901,
"events": 3245,
"pty_bytes": 40354,
"pty_writes": 19,
"rss_kb": 306248,
"pss_kb": 262533,
"private_dirty_kb": 245940,
"vmhwm_kb": 306616,
"utime_ticks": 145,
"stime_ticks": 11,
"cg_current": 3176157184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2535,
"msgs": 1001,
"events": 3588,
"pty_bytes": 40354,
"pty_writes": 19,
"rss_kb": 308884,
"pss_kb": 265169,
"private_dirty_kb": 248576,
"vmhwm_kb": 308916,
"utime_ticks": 146,
"stime_ticks": 11,
"cg_current": 3176157184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2537,
"msgs": 1101,
"events": 3928,
"pty_bytes": 40354,
"pty_writes": 19,
"rss_kb": 309176,
"pss_kb": 265461,
"private_dirty_kb": 248868,
"vmhwm_kb": 309192,
"utime_ticks": 146,
"stime_ticks": 11,
"cg_current": 3176157184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2539,
"msgs": 1201,
"events": 4298,
"pty_bytes": 40354,
"pty_writes": 19,
"rss_kb": 309444,
"pss_kb": 265729,
"private_dirty_kb": 249136,
"vmhwm_kb": 309492,
"utime_ticks": 147,
"stime_ticks": 11,
"cg_current": 3176157184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3050,
"msgs": null,
"events": null,
"pty_bytes": 40354,
"pty_writes": 19,
"rss_kb": 460952,
"pss_kb": 417124,
"private_dirty_kb": 400520,
"vmhwm_kb": 460952,
"utime_ticks": 231,
"stime_ticks": 20,
"cg_current": 3176210432,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3126,
"msgs": 1300,
"events": 4659,
"pty_bytes": 43401,
"pty_writes": 20,
"rss_kb": 463816,
"pss_kb": 419988,
"private_dirty_kb": 403384,
"vmhwm_kb": 463832,
"utime_ticks": 239,
"stime_ticks": 20,
"cg_current": 3175964672,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3427,
"msgs": 1400,
"events": 5011,
"pty_bytes": 46365,
"pty_writes": 21,
"rss_kb": 493888,
"pss_kb": 450060,
"private_dirty_kb": 433456,
"vmhwm_kb": 493964,
"utime_ticks": 273,
"stime_ticks": 22,
"cg_current": 3175645184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3901,
"msgs": 1500,
"events": 5384,
"pty_bytes": 51265,
"pty_writes": 23,
"rss_kb": 525952,
"pss_kb": 482124,
"private_dirty_kb": 465520,
"vmhwm_kb": 525952,
"utime_ticks": 323,
"stime_ticks": 24,
"cg_current": 3176116224,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4057,
"msgs": null,
"events": null,
"pty_bytes": 51265,
"pty_writes": 23,
"rss_kb": 526368,
"pss_kb": 482540,
"private_dirty_kb": 465936,
"vmhwm_kb": 526368,
"utime_ticks": 339,
"stime_ticks": 24,
"cg_current": 3176116224,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4430,
"msgs": 1600,
"events": 5730,
"pty_bytes": 53320,
"pty_writes": 25,
"rss_kb": 557660,
"pss_kb": 513832,
"private_dirty_kb": 497228,
"vmhwm_kb": 557660,
"utime_ticks": 382,
"stime_ticks": 25,
"cg_current": 3175940096,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5006,
"msgs": 1700,
"events": 6100,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 578676,
"pss_kb": 534848,
"private_dirty_kb": 518244,
"vmhwm_kb": 578704,
"utime_ticks": 465,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5009,
"msgs": 1800,
"events": 6455,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 578944,
"pss_kb": 535116,
"private_dirty_kb": 518512,
"vmhwm_kb": 579020,
"utime_ticks": 465,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5012,
"msgs": 1900,
"events": 6838,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 579192,
"pss_kb": 535364,
"private_dirty_kb": 518760,
"vmhwm_kb": 579280,
"utime_ticks": 465,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5015,
"msgs": 2000,
"events": 7151,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 579412,
"pss_kb": 535584,
"private_dirty_kb": 518980,
"vmhwm_kb": 579512,
"utime_ticks": 465,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5017,
"msgs": 2100,
"events": 7532,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 579704,
"pss_kb": 535876,
"private_dirty_kb": 519272,
"vmhwm_kb": 579748,
"utime_ticks": 466,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5020,
"msgs": 2201,
"events": 7892,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 579840,
"pss_kb": 536012,
"private_dirty_kb": 519408,
"vmhwm_kb": 579892,
"utime_ticks": 466,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5023,
"msgs": 2301,
"events": 8254,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 580160,
"pss_kb": 536332,
"private_dirty_kb": 519728,
"vmhwm_kb": 580244,
"utime_ticks": 467,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5056,
"msgs": null,
"events": null,
"pty_bytes": 57903,
"pty_writes": 28,
"rss_kb": 590484,
"pss_kb": 546656,
"private_dirty_kb": 530052,
"vmhwm_kb": 590492,
"utime_ticks": 471,
"stime_ticks": 27,
"cg_current": 3175710720,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5735,
"msgs": 2401,
"events": 8596,
"pty_bytes": 60575,
"pty_writes": 29,
"rss_kb": 733132,
"pss_kb": 689304,
"private_dirty_kb": 672700,
"vmhwm_kb": 733140,
"utime_ticks": 550,
"stime_ticks": 33,
"cg_current": 3175919616,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6059,
"msgs": null,
"events": null,
"pty_bytes": 60575,
"pty_writes": 29,
"rss_kb": 765664,
"pss_kb": 721836,
"private_dirty_kb": 705232,
"vmhwm_kb": 765664,
"utime_ticks": 584,
"stime_ticks": 35,
"cg_current": 3176443904,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6460,
"msgs": 2501,
"events": 8957,
"pty_bytes": 63490,
"pty_writes": 31,
"rss_kb": 769720,
"pss_kb": 725892,
"private_dirty_kb": 709288,
"vmhwm_kb": 769736,
"utime_ticks": 624,
"stime_ticks": 35,
"cg_current": 3176296448,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7064,
"msgs": null,
"events": null,
"pty_bytes": 65023,
"pty_writes": 32,
"rss_kb": 797028,
"pss_kb": 753200,
"private_dirty_kb": 736596,
"vmhwm_kb": 797028,
"utime_ticks": 686,
"stime_ticks": 38,
"cg_current": 3176087552,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7241,
"msgs": 2601,
"events": 9345,
"pty_bytes": 66694,
"pty_writes": 33,
"rss_kb": 798308,
"pss_kb": 754480,
"private_dirty_kb": 737876,
"vmhwm_kb": 798316,
"utime_ticks": 704,
"stime_ticks": 38,
"cg_current": 3175837696,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7798,
"msgs": 2701,
"events": 9688,
"pty_bytes": 68453,
"pty_writes": 34,
"rss_kb": 825628,
"pss_kb": 781800,
"private_dirty_kb": 765196,
"vmhwm_kb": 825628,
"utime_ticks": 761,
"stime_ticks": 40,
"cg_current": 3176284160,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8076,
"msgs": null,
"events": null,
"pty_bytes": 69629,
"pty_writes": 35,
"rss_kb": 831440,
"pss_kb": 787612,
"private_dirty_kb": 771008,
"vmhwm_kb": 834344,
"utime_ticks": 789,
"stime_ticks": 40,
"cg_current": 3176284160,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8654,
"msgs": 2801,
"events": 10028,
"pty_bytes": 71439,
"pty_writes": 36,
"rss_kb": 856908,
"pss_kb": 813080,
"private_dirty_kb": 796476,
"vmhwm_kb": 856908,
"utime_ticks": 847,
"stime_ticks": 42,
"cg_current": 3176873984,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9080,
"msgs": null,
"events": null,
"pty_bytes": 74354,
"pty_writes": 37,
"rss_kb": 885440,
"pss_kb": 841612,
"private_dirty_kb": 825008,
"vmhwm_kb": 885440,
"utime_ticks": 890,
"stime_ticks": 45,
"cg_current": 3177000960,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9505,
"msgs": 2901,
"events": 10398,
"pty_bytes": 76085,
"pty_writes": 38,
"rss_kb": 888096,
"pss_kb": 844268,
"private_dirty_kb": 827664,
"vmhwm_kb": 888096,
"utime_ticks": 934,
"stime_ticks": 45,
"cg_current": 3176677376,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9807,
"msgs": 3000,
"events": 10759,
"pty_bytes": 76940,
"pty_writes": 39,
"rss_kb": 891124,
"pss_kb": 847296,
"private_dirty_kb": 830692,
"vmhwm_kb": 891164,
"utime_ticks": 965,
"stime_ticks": 45,
"cg_current": 3176747008,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "done",
"t_ms": 9814,
"msgs": 3000,
"events": 10759,
"pty_bytes": 76940,
"pty_writes": 39,
"rss_kb": 891240,
"pss_kb": 847412,
"private_dirty_kb": 830808,
"vmhwm_kb": 891248,
"utime_ticks": 965,
"stime_ticks": 45,
"cg_current": 3176747008,
"cg_peak": 6536753152,
"cg_oom_kill": 0
}
],
"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": "crashed_after_stream",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 9862
},
"stream_done": true,
"msgs_streamed": 3000,
"events_streamed": 10759,
"pty_bytes_total": 78203,
"pty_data_callbacks": 40,
"first_byte_ms": 141,
"session_create_ms": 177,
"stream_start_ms": 1688,
"vmhwm_kb": 891248,
"cg_peak": 6536753152,
"drain_max_loop_lag_ms": 22,
"drain_lag_violations": 3,
"drain_ok": false,
"digest": null
},
"pty_tail": " commodo enim adipiscing.- Duis veniam sed anim excepteur irure nostrud.- Tempor ipsum cupidatat voluptate.Ullamco labore sit sunt esse aliquip aliqua consectetur. Ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip.⚡terminal Incididunt dolor proident velit. · 0s◐Thought: Proident velit laboris ⧉ copy ⚕ ◦ edit_file Sed anim excepteu rure. · 13s (7 lines) - - - const x2 = 90function f0() { return x}⧉ copy⚕Sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate ullamco labore. Nulla duis veniam sed anim excepteur irure nostrud tempor ipsum cupidatat voluptate. Enim adipiscing deserunt nulla duis veniam sed anim excepteur irure nostrud tempor ipsum.- Cupidatat voluptate ullamco labore sit.- Aliquip aliqua consectetur officia fugiat consequat minim.- Elit mollit pariatur aute.Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit. Mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor.◦edit_file Sed anim excepteur irure. · 1.3s (7 lines)⚡grep Cupidatat voluptate ullamco labore. ·0s 6 ⧉ copy⚕ ◦edit_file Nulla duis veniam sed. · 3.3s (7 lines) ◦ grep Nostrud tempor ipsum cupidatat. · 3.4s (2 lines) ●web_search Sit sunt esse aliquip. · 3.5s (18 lines) - const x0 = 51function f1() { return x}⧉ copy⚕ ⧉ copy◦edit_file Nulla duis veniam sed. · 3.3s (7 lines) ◦grep Nostrud tempor ipsum cupidatat. · 3.4s (2 lines) ●web_search Sit sunt esse aliquip. · 3.5s (18 lines) ⧉ copy● ⧉ copy ⚕ ▼ Thinking: Mollit pariatur aute ││ $terminal Mollit pariatur aute quis. · 1.7s (2 lines) ◇ read_file Reprehenderit exercitation incididunt dolor. · 1.8s (18 lines)Magnametculp cillum. · 1.9s (7 lines)Deent nulladuis veniam. · 2.0s (2lines) Irure ostrudtempor ipsum. ·2.s (18 lines)◆write_file Labore sit sunt esse. · 2.2s (7 lines) $ terminal Officia fugiat consequat minim. · 2.3s (2 lines)◐7⚕▼Thinking: Mollit pariatur aute │ Labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur. │Cupidatat voluptate ullamco labore sit sunt. Mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation. - Reprehenderit exercitation incididunt dolor proident.- Magna amet culpa cillum commodo enim adipiscing.- Deserunt nulla duis veniam.Sed anim excepteur irure nostrud tempor ipsum cupidatat. Nulla duis veniam sed anim excepteur irure nostrud tempor.$terminal Mollit pariatur aute quis. · 1.7s (2 lines)◇read_file Reprehenderit exercitation incididunt dolor. · 1.8s (18 lines) ◦edit_file Magna amet culpa cillum. · 1.9s (7 lines) ◦grep Deserunt nulla duis veniam. · 2.0s (2 lines) ●web_search Irure nostrud tempor ipsum. · 2.1s (18 lines) ◆write_file Labore sit sunt esse. · 2.2s (7 lines) $terminal Officia fugiat consequat minim. · 2.3s (2 lines) ⧉ copy ⚕ ⧉ copy ⚕ ⧉ copy ⚕ - - - const x4 = 74function f4() { return x}⧉ copy ⚕ - - - const x5 = 75function f0() { return x}⧉ copy●9file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

View File

@@ -1,816 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-uncapped",
"mode": "mem",
"rep": 2,
"run_id": "mq8jzaoz-onls",
"utc": "2026-06-10T21:00:39.779Z",
"sha": "50e34713b",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 100000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2370298,
"gw_pid": 2370307,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/session-7349.scope",
"load_avg_at_start": [
0.91,
0.63,
0.49
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 33220,
"pss_kb": 14193,
"private_dirty_kb": 6396,
"vmhwm_kb": 33228,
"utime_ticks": 0,
"stime_ticks": 0,
"cg_current": 3181150208,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1032,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 10,
"rss_kb": 104900,
"pss_kb": 63836,
"private_dirty_kb": 48180,
"vmhwm_kb": 107872,
"utime_ticks": 18,
"stime_ticks": 2,
"cg_current": 3182235648,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1689,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 107280,
"pss_kb": 66195,
"private_dirty_kb": 50560,
"vmhwm_kb": 107872,
"utime_ticks": 19,
"stime_ticks": 2,
"cg_current": 3185168384,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1714,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 119640,
"pss_kb": 78475,
"private_dirty_kb": 62792,
"vmhwm_kb": 119756,
"utime_ticks": 24,
"stime_ticks": 2,
"cg_current": 3183779840,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1716,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 119912,
"pss_kb": 78747,
"private_dirty_kb": 63064,
"vmhwm_kb": 119944,
"utime_ticks": 24,
"stime_ticks": 2,
"cg_current": 3183779840,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1717,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 119992,
"pss_kb": 78827,
"private_dirty_kb": 63144,
"vmhwm_kb": 120252,
"utime_ticks": 24,
"stime_ticks": 2,
"cg_current": 3183525888,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2041,
"msgs": null,
"events": null,
"pty_bytes": 31413,
"pty_writes": 13,
"rss_kb": 230864,
"pss_kb": 187378,
"private_dirty_kb": 170884,
"vmhwm_kb": 230864,
"utime_ticks": 81,
"stime_ticks": 6,
"cg_current": 3186503680,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2140,
"msgs": 501,
"events": 1792,
"pty_bytes": 33737,
"pty_writes": 15,
"rss_kb": 233388,
"pss_kb": 189764,
"private_dirty_kb": 173220,
"vmhwm_kb": 233388,
"utime_ticks": 93,
"stime_ticks": 7,
"cg_current": 3185446912,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2317,
"msgs": 601,
"events": 2154,
"pty_bytes": 35582,
"pty_writes": 16,
"rss_kb": 274096,
"pss_kb": 230408,
"private_dirty_kb": 213800,
"vmhwm_kb": 274152,
"utime_ticks": 120,
"stime_ticks": 8,
"cg_current": 3185287168,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2542,
"msgs": 701,
"events": 2496,
"pty_bytes": 41569,
"pty_writes": 19,
"rss_kb": 319456,
"pss_kb": 275645,
"private_dirty_kb": 259036,
"vmhwm_kb": 336796,
"utime_ticks": 166,
"stime_ticks": 13,
"cg_current": 3184562176,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2793,
"msgs": 801,
"events": 2857,
"pty_bytes": 46542,
"pty_writes": 21,
"rss_kb": 350128,
"pss_kb": 306317,
"private_dirty_kb": 289708,
"vmhwm_kb": 350128,
"utime_ticks": 195,
"stime_ticks": 14,
"cg_current": 3184861184,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3044,
"msgs": null,
"events": null,
"pty_bytes": 47578,
"pty_writes": 22,
"rss_kb": 383596,
"pss_kb": 339785,
"private_dirty_kb": 323176,
"vmhwm_kb": 383596,
"utime_ticks": 224,
"stime_ticks": 15,
"cg_current": 3184898048,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3095,
"msgs": 901,
"events": 3245,
"pty_bytes": 48697,
"pty_writes": 23,
"rss_kb": 384708,
"pss_kb": 340892,
"private_dirty_kb": 324288,
"vmhwm_kb": 384708,
"utime_ticks": 229,
"stime_ticks": 15,
"cg_current": 3184648192,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3195,
"msgs": 1001,
"events": 3588,
"pty_bytes": 50416,
"pty_writes": 24,
"rss_kb": 387812,
"pss_kb": 343996,
"private_dirty_kb": 327392,
"vmhwm_kb": 387840,
"utime_ticks": 241,
"stime_ticks": 15,
"cg_current": 3184648192,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3524,
"msgs": 1101,
"events": 3928,
"pty_bytes": 54393,
"pty_writes": 27,
"rss_kb": 416784,
"pss_kb": 372968,
"private_dirty_kb": 356364,
"vmhwm_kb": 417092,
"utime_ticks": 276,
"stime_ticks": 17,
"cg_current": 3185565696,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3925,
"msgs": 1201,
"events": 4298,
"pty_bytes": 57944,
"pty_writes": 29,
"rss_kb": 449756,
"pss_kb": 405940,
"private_dirty_kb": 389336,
"vmhwm_kb": 449776,
"utime_ticks": 321,
"stime_ticks": 19,
"cg_current": 3184865280,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4050,
"msgs": null,
"events": null,
"pty_bytes": 57944,
"pty_writes": 29,
"rss_kb": 472700,
"pss_kb": 428884,
"private_dirty_kb": 412280,
"vmhwm_kb": 472764,
"utime_ticks": 335,
"stime_ticks": 20,
"cg_current": 3184816128,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4199,
"msgs": 1300,
"events": 4659,
"pty_bytes": 59534,
"pty_writes": 30,
"rss_kb": 477008,
"pss_kb": 433192,
"private_dirty_kb": 416588,
"vmhwm_kb": 477008,
"utime_ticks": 350,
"stime_ticks": 20,
"cg_current": 3184738304,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4227,
"msgs": 1400,
"events": 5011,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 478412,
"pss_kb": 434596,
"private_dirty_kb": 417992,
"vmhwm_kb": 478460,
"utime_ticks": 355,
"stime_ticks": 20,
"cg_current": 3184717824,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4231,
"msgs": 1500,
"events": 5384,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 478732,
"pss_kb": 434916,
"private_dirty_kb": 418312,
"vmhwm_kb": 479492,
"utime_ticks": 356,
"stime_ticks": 20,
"cg_current": 3184459776,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4234,
"msgs": 1600,
"events": 5730,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 479576,
"pss_kb": 435760,
"private_dirty_kb": 419156,
"vmhwm_kb": 479668,
"utime_ticks": 356,
"stime_ticks": 20,
"cg_current": 3184439296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4237,
"msgs": 1700,
"events": 6100,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 479844,
"pss_kb": 436028,
"private_dirty_kb": 419424,
"vmhwm_kb": 479952,
"utime_ticks": 356,
"stime_ticks": 20,
"cg_current": 3184439296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4240,
"msgs": 1800,
"events": 6455,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 480112,
"pss_kb": 436296,
"private_dirty_kb": 419692,
"vmhwm_kb": 480184,
"utime_ticks": 356,
"stime_ticks": 20,
"cg_current": 3184439296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4242,
"msgs": 1900,
"events": 6838,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 480300,
"pss_kb": 436484,
"private_dirty_kb": 419880,
"vmhwm_kb": 480364,
"utime_ticks": 357,
"stime_ticks": 20,
"cg_current": 3184439296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4244,
"msgs": 2000,
"events": 7151,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 480524,
"pss_kb": 436708,
"private_dirty_kb": 420104,
"vmhwm_kb": 480576,
"utime_ticks": 357,
"stime_ticks": 20,
"cg_current": 3184439296,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5055,
"msgs": null,
"events": null,
"pty_bytes": 60792,
"pty_writes": 31,
"rss_kb": 664920,
"pss_kb": 621104,
"private_dirty_kb": 604500,
"vmhwm_kb": 664944,
"utime_ticks": 473,
"stime_ticks": 26,
"cg_current": 3184832512,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5383,
"msgs": 2100,
"events": 7532,
"pty_bytes": 64936,
"pty_writes": 33,
"rss_kb": 669004,
"pss_kb": 625188,
"private_dirty_kb": 608584,
"vmhwm_kb": 669028,
"utime_ticks": 506,
"stime_ticks": 28,
"cg_current": 3184775168,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5809,
"msgs": 2201,
"events": 7892,
"pty_bytes": 66459,
"pty_writes": 34,
"rss_kb": 698060,
"pss_kb": 654244,
"private_dirty_kb": 637640,
"vmhwm_kb": 698060,
"utime_ticks": 551,
"stime_ticks": 30,
"cg_current": 3184918528,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6061,
"msgs": null,
"events": null,
"pty_bytes": 68410,
"pty_writes": 35,
"rss_kb": 715944,
"pss_kb": 672128,
"private_dirty_kb": 655524,
"vmhwm_kb": 716072,
"utime_ticks": 579,
"stime_ticks": 31,
"cg_current": 3184750592,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6512,
"msgs": 2301,
"events": 8254,
"pty_bytes": 70180,
"pty_writes": 36,
"rss_kb": 729140,
"pss_kb": 685313,
"private_dirty_kb": 668720,
"vmhwm_kb": 729140,
"utime_ticks": 623,
"stime_ticks": 33,
"cg_current": 3184795648,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7069,
"msgs": null,
"events": null,
"pty_bytes": 71849,
"pty_writes": 37,
"rss_kb": 759640,
"pss_kb": 715813,
"private_dirty_kb": 699220,
"vmhwm_kb": 759640,
"utime_ticks": 682,
"stime_ticks": 35,
"cg_current": 3184627712,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7243,
"msgs": 2401,
"events": 8596,
"pty_bytes": 73318,
"pty_writes": 38,
"rss_kb": 760072,
"pss_kb": 716245,
"private_dirty_kb": 699652,
"vmhwm_kb": 760072,
"utime_ticks": 700,
"stime_ticks": 35,
"cg_current": 3185369088,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7974,
"msgs": 2501,
"events": 8957,
"pty_bytes": 76046,
"pty_writes": 40,
"rss_kb": 790560,
"pss_kb": 746733,
"private_dirty_kb": 730140,
"vmhwm_kb": 790560,
"utime_ticks": 775,
"stime_ticks": 38,
"cg_current": 3185258496,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8074,
"msgs": null,
"events": null,
"pty_bytes": 76046,
"pty_writes": 40,
"rss_kb": 790560,
"pss_kb": 746733,
"private_dirty_kb": 730140,
"vmhwm_kb": 790560,
"utime_ticks": 785,
"stime_ticks": 38,
"cg_current": 3185254400,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8803,
"msgs": 2601,
"events": 9345,
"pty_bytes": 80929,
"pty_writes": 42,
"rss_kb": 821056,
"pss_kb": 777198,
"private_dirty_kb": 760636,
"vmhwm_kb": 821056,
"utime_ticks": 860,
"stime_ticks": 40,
"cg_current": 3186028544,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9056,
"msgs": 2701,
"events": 9688,
"pty_bytes": 82978,
"pty_writes": 43,
"rss_kb": 821896,
"pss_kb": 778038,
"private_dirty_kb": 761476,
"vmhwm_kb": 821904,
"utime_ticks": 885,
"stime_ticks": 40,
"cg_current": 3185565696,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9079,
"msgs": null,
"events": null,
"pty_bytes": 82978,
"pty_writes": 43,
"rss_kb": 823668,
"pss_kb": 779810,
"private_dirty_kb": 763248,
"vmhwm_kb": 823688,
"utime_ticks": 887,
"stime_ticks": 40,
"cg_current": 3185565696,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9909,
"msgs": 2801,
"events": 10028,
"pty_bytes": 86325,
"pty_writes": 45,
"rss_kb": 852852,
"pss_kb": 808994,
"private_dirty_kb": 792432,
"vmhwm_kb": 852868,
"utime_ticks": 972,
"stime_ticks": 42,
"cg_current": 3186216960,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 10086,
"msgs": null,
"events": null,
"pty_bytes": 86325,
"pty_writes": 45,
"rss_kb": 878688,
"pss_kb": 834830,
"private_dirty_kb": 818268,
"vmhwm_kb": 878920,
"utime_ticks": 989,
"stime_ticks": 45,
"cg_current": 3186737152,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 10811,
"msgs": 2901,
"events": 10398,
"pty_bytes": 91739,
"pty_writes": 47,
"rss_kb": 885784,
"pss_kb": 841926,
"private_dirty_kb": 825364,
"vmhwm_kb": 885800,
"utime_ticks": 1063,
"stime_ticks": 45,
"cg_current": 3188797440,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 11086,
"msgs": null,
"events": null,
"pty_bytes": 91739,
"pty_writes": 47,
"rss_kb": 911912,
"pss_kb": 868054,
"private_dirty_kb": 851492,
"vmhwm_kb": 911912,
"utime_ticks": 1091,
"stime_ticks": 47,
"cg_current": 3191078912,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 11439,
"msgs": 3000,
"events": 10759,
"pty_bytes": 94867,
"pty_writes": 48,
"rss_kb": 913956,
"pss_kb": 870098,
"private_dirty_kb": 853536,
"vmhwm_kb": 913948,
"utime_ticks": 1125,
"stime_ticks": 48,
"cg_current": 3189575680,
"cg_peak": 6536753152,
"cg_oom_kill": 0
},
{
"kind": "done",
"t_ms": 11446,
"msgs": 3000,
"events": 10759,
"pty_bytes": 94867,
"pty_writes": 48,
"rss_kb": 913948,
"pss_kb": 870090,
"private_dirty_kb": 853528,
"vmhwm_kb": 913948,
"utime_ticks": 1125,
"stime_ticks": 48,
"cg_current": 3189575680,
"cg_peak": 6536753152,
"cg_oom_kill": 0
}
],
"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": "crashed_after_stream",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 11857
},
"stream_done": true,
"msgs_streamed": 3000,
"events_streamed": 10759,
"pty_bytes_total": 98672,
"pty_data_callbacks": 51,
"first_byte_ms": 142,
"session_create_ms": 177,
"stream_start_ms": 1687,
"vmhwm_kb": 913948,
"cg_peak": 6536753152,
"drain_max_loop_lag_ms": 19,
"drain_lag_violations": 2,
"drain_ok": false,
"digest": null
},
"pty_tail": "at consequat. Voluptate ullamco labore sit sunt esse aliquip aliqua consectetur officia. - Elit mollit pariatur aute quis.- Occaecat reprehenderit exercitation incididunt dolor proident velit.- Laboris magna amet culpa.Cillum commodo enim adipiscing deserunt nulla duis. Magna amet culpa cillum commodo enim adipiscing deserunt.◦edit_file Aliquip aliqua consectetur officia. · 2.9s (7 lines)⚡grep Elitmollit pratur aut. · 0s ⧉ copy ⚕ ◦edit_file Sit sunt esse aliquip. · 0.9s (7 lines) ◦ grep Fugiat consequat minim elit. · 1.0s (2 lines) ●web_search Quis eiusmod lorem occaecat. · 1.1s (18 lines)◆write_file Dolor proident velit laboris. · 1.2s (7 lines)$terminal Cillum commodo enim adipiscing. · 1.3s (2 lines) ◇ read_file Veniam sed anim excepteur. · 1.4s (18 lines) Ipsum cupidatt volupae ullamo. · 1.5s (7 lines) ◦ grepssealiquip lqua consctetur. · 1.6s (2 lines)⧉ copy⚕Sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute. Voluptate ullamco labore sit sunt esse. Tempor ipsum cupidatat voluptate ullamco labore sit. - Fugiat consequat minim elit mollit.- Quis eiusmod lorem occaecat reprehenderit exercitation incididunt.- Dolor proident velit laboris.Magna amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam sed anim. Proident velit laboris magna amet culpa cillum commodo enim adipiscing deserunt nulla duis veniam.◦edit_file Sit sunt esse aliquip. · 0.9s (7 lines)grep Fugiat consequat minim elit. · 1.0s (2 lines)●web_search Quis ismod lorem occaecat ·1.1s (18 lines)◆rite_fileDolor proident vlit lboris. · 1.2s (7$terminal Cillum commoo enim adipiscing32◇rad_fie Veniam sed anim excepteur. · 1.4s (18lines) ◦editIpsum cupidtatvoluate ullamco.· 1.5s (7 lines)grep Essealiquip aliqu conseceur. · 1.6s (2 lines) ⚡web_search Mnim elit mollit pariatur. · 0s 10s │ …/lively-thrush/hermes-agent ⧉ copy ◦ edit_file Voluptate ullamco labore sit. · 2.9s (7 lines) ◦grep Aliqua consectetur officia fugiat. · 3.0s (2 lines) ●web_search Mollit pariatur aute quis. · 3.1s (18 lines) ◆write_file Reprehenderit exercitation incididunt dolor. · 3.2s (7 lines) $terminal Magna amet culpa cillum. · 3.3s (2 lines) ◇read_file Deserunt nulla duis veniam. · 3.4s (18 lines) ◦edit_file Irure nostrud tempor ipsum. · 3.5s (7 lines) ◦grep Labore sit sunt esse. · 3.6s (2 lines) ●web_search Officia fugiat consequat minim. · 3.7s (18 lines) ⧉ copy ●- - const x3 = 8function f3() { return x}⧉ copy ◦ edit_file Voluptate ullamco labore sit. · 2.9s (7 lines)grep Aliqua consectetur officia fugia302●web_search Mollit pariatur auteqis. ·3.1s (18 lines) ◆rite_fileReprehenderi exercitatonincididunt door. · 3.2s (7 lines)$terminal Magna amt culpa cillum. · 3.3s (2 lines) ◇rad_fie Deserunt nula dus veniam. · 3.4s (18 lines)◦editIrure ostrud tempor ipsu57 lines) grep Labore sitsun esse. · 3.6 (2lines) ●web_search Officia fugiat consequatminim. · 3.7s (18 lines) ⧉ copy⚕▍ ◐file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,162 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 0,
"run_id": "mq8k2tye-1xyi",
"utc": "2026-06-10T21:03:24.711Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2373306,
"gw_pid": 2373314,
"cgroup": null,
"load_avg_at_start": [
0.43,
0.55,
0.48
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 55524,
"pss_kb": 29228,
"private_dirty_kb": 18060,
"vmhwm_kb": 55556,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 933,
"msgs": 0,
"events": 0,
"pty_bytes": 6604,
"pty_writes": 10,
"rss_kb": 108996,
"pss_kb": 69637,
"private_dirty_kb": 49764,
"vmhwm_kb": 108996,
"utime_ticks": 24,
"stime_ticks": 3
}
],
"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": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 943
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6785,
"pty_data_callbacks": 18,
"first_byte_ms": 71,
"session_create_ms": 227,
"stream_start_ms": null,
"vmhwm_kb": 108996,
"cg_peak": null,
"drain_max_loop_lag_ms": 1,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 1,
"run_id": "mq8k3k0d-8lb5",
"utc": "2026-06-10T21:03:58.478Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2374052,
"gw_pid": 2374068,
"cgroup": null,
"load_avg_at_start": [
0.24,
0.49,
0.46
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56656,
"pss_kb": 30387,
"private_dirty_kb": 19220,
"vmhwm_kb": 56664,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 933,
"msgs": 0,
"events": 0,
"pty_bytes": 6604,
"pty_writes": 10,
"rss_kb": 107996,
"pss_kb": 68555,
"private_dirty_kb": 48740,
"vmhwm_kb": 107996,
"utime_ticks": 24,
"stime_ticks": 2
}
],
"events": [
{
"kind": "rpc",
"method": "config.get",
"t_ms": 176
},
{
"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": 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
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 945
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6785,
"pty_data_callbacks": 26,
"first_byte_ms": 67,
"session_create_ms": 202,
"stream_start_ms": null,
"vmhwm_kb": 107996,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 0,
"run_id": "mq8k32ir-kfs0",
"utc": "2026-06-10T21:03:35.811Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2373543,
"gw_pid": 2373552,
"cgroup": null,
"load_avg_at_start": [
0.37,
0.54,
0.47
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 54272,
"pss_kb": 27947,
"private_dirty_kb": 16840,
"vmhwm_kb": 54312,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1032,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 19,
"rss_kb": 104972,
"pss_kb": 64818,
"private_dirty_kb": 48264,
"vmhwm_kb": 107336,
"utime_ticks": 17,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1139,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 19,
"rss_kb": 104972,
"pss_kb": 64818,
"private_dirty_kb": 48264,
"vmhwm_kb": 107336,
"utime_ticks": 17,
"stime_ticks": 2
}
],
"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": 1322
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 23,
"first_byte_ms": 126,
"session_create_ms": 176,
"stream_start_ms": null,
"vmhwm_kb": 107336,
"cg_peak": null,
"drain_max_loop_lag_ms": 3,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 1,
"run_id": "mq8k3b9i-cl30",
"utc": "2026-06-10T21:03:47.143Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2373796,
"gw_pid": 2373805,
"cgroup": null,
"load_avg_at_start": [
0.28,
0.51,
0.46
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 25,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 53764,
"pss_kb": 27358,
"private_dirty_kb": 16248,
"vmhwm_kb": 53916,
"utime_ticks": 1,
"stime_ticks": 1
},
{
"kind": "periodic",
"t_ms": 1036,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 14,
"rss_kb": 108848,
"pss_kb": 68551,
"private_dirty_kb": 51992,
"vmhwm_kb": 108848,
"utime_ticks": 17,
"stime_ticks": 3
},
{
"kind": "final",
"t_ms": 1142,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 14,
"rss_kb": 108848,
"pss_kb": 68551,
"private_dirty_kb": 51992,
"vmhwm_kb": 108848,
"utime_ticks": 17,
"stime_ticks": 3
}
],
"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": 1324
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 18,
"first_byte_ms": 128,
"session_create_ms": 175,
"stream_start_ms": null,
"vmhwm_kb": 108848,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 2,
"run_id": "mq8k3ski-br6m",
"utc": "2026-06-10T21:04:09.570Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2374304,
"gw_pid": 2374312,
"cgroup": null,
"load_avg_at_start": [
0.36,
0.51,
0.46
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56620,
"pss_kb": 30323,
"private_dirty_kb": 19156,
"vmhwm_kb": 56628,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 933,
"msgs": 0,
"events": 0,
"pty_bytes": 6607,
"pty_writes": 12,
"rss_kb": 109548,
"pss_kb": 70130,
"private_dirty_kb": 50316,
"vmhwm_kb": 109548,
"utime_ticks": 23,
"stime_ticks": 3
}
],
"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": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 941
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6788,
"pty_data_callbacks": 14,
"first_byte_ms": 65,
"session_create_ms": 202,
"stream_start_ms": null,
"vmhwm_kb": 109548,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 3,
"run_id": "mq8k49vp-a57g",
"utc": "2026-06-10T21:04:32.005Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2374791,
"gw_pid": 2374799,
"cgroup": null,
"load_avg_at_start": [
0.24,
0.47,
0.45
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56660,
"pss_kb": 30363,
"private_dirty_kb": 19196,
"vmhwm_kb": 56660,
"utime_ticks": 1,
"stime_ticks": 1
},
{
"kind": "final",
"t_ms": 931,
"msgs": 0,
"events": 0,
"pty_bytes": 6607,
"pty_writes": 11,
"rss_kb": 108056,
"pss_kb": 68668,
"private_dirty_kb": 48884,
"vmhwm_kb": 108056,
"utime_ticks": 23,
"stime_ticks": 3
}
],
"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": "session.active_list",
"t_ms": 226
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 226
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 226
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 941
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6788,
"pty_data_callbacks": 20,
"first_byte_ms": 65,
"session_create_ms": 201,
"stream_start_ms": null,
"vmhwm_kb": 108056,
"cg_peak": null,
"drain_max_loop_lag_ms": 1,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 4,
"run_id": "mq8k4r6t-uvp2",
"utc": "2026-06-10T21:04:54.437Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2375404,
"gw_pid": 2375412,
"cgroup": null,
"load_avg_at_start": [
0.24,
0.45,
0.45
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56380,
"pss_kb": 30111,
"private_dirty_kb": 18944,
"vmhwm_kb": 56460,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 928,
"msgs": 0,
"events": 0,
"pty_bytes": 6604,
"pty_writes": 12,
"rss_kb": 110684,
"pss_kb": 71346,
"private_dirty_kb": 51564,
"vmhwm_kb": 110684,
"utime_ticks": 24,
"stime_ticks": 2
}
],
"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": 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
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 939
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6785,
"pty_data_callbacks": 25,
"first_byte_ms": 68,
"session_create_ms": 202,
"stream_start_ms": null,
"vmhwm_kb": 110684,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 2,
"run_id": "mq8k414m-e67a",
"utc": "2026-06-10T21:04:20.662Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2374523,
"gw_pid": 2374532,
"cgroup": null,
"load_avg_at_start": [
0.31,
0.49,
0.46
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 55320,
"pss_kb": 28903,
"private_dirty_kb": 17792,
"vmhwm_kb": 55372,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1030,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 13,
"rss_kb": 105108,
"pss_kb": 64892,
"private_dirty_kb": 48364,
"vmhwm_kb": 107848,
"utime_ticks": 18,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1150,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 13,
"rss_kb": 105108,
"pss_kb": 64892,
"private_dirty_kb": 48364,
"vmhwm_kb": 107848,
"utime_ticks": 18,
"stime_ticks": 2
}
],
"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": 1332
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 17,
"first_byte_ms": 135,
"session_create_ms": 176,
"stream_start_ms": null,
"vmhwm_kb": 107848,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 3,
"run_id": "mq8k4ifv-j1w7",
"utc": "2026-06-10T21:04:43.099Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2375091,
"gw_pid": 2375153,
"cgroup": null,
"load_avg_at_start": [
0.28,
0.47,
0.45
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 54772,
"pss_kb": 28432,
"private_dirty_kb": 17324,
"vmhwm_kb": 54784,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1032,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 13,
"rss_kb": 105188,
"pss_kb": 65019,
"private_dirty_kb": 48464,
"vmhwm_kb": 107864,
"utime_ticks": 18,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1147,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 13,
"rss_kb": 105188,
"pss_kb": 65019,
"private_dirty_kb": 48464,
"vmhwm_kb": 107864,
"utime_ticks": 18,
"stime_ticks": 2
}
],
"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": 1329
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 17,
"first_byte_ms": 132,
"session_create_ms": 176,
"stream_start_ms": null,
"vmhwm_kb": 107864,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 5,
"run_id": "mq8k5h8i-p6g1",
"utc": "2026-06-10T21:05:28.194Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2376269,
"gw_pid": 2376277,
"cgroup": null,
"load_avg_at_start": [
0.13,
0.4,
0.43
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 25,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56648,
"pss_kb": 30379,
"private_dirty_kb": 19212,
"vmhwm_kb": 56656,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 931,
"msgs": 0,
"events": 0,
"pty_bytes": 6595,
"pty_writes": 12,
"rss_kb": 107900,
"pss_kb": 68455,
"private_dirty_kb": 48640,
"vmhwm_kb": 107900,
"utime_ticks": 24,
"stime_ticks": 2
}
],
"events": [
{
"kind": "rpc",
"method": "config.get",
"t_ms": 175
},
{
"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": "session.active_list",
"t_ms": 226
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 226
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 226
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 942
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6776,
"pty_data_callbacks": 20,
"first_byte_ms": 59,
"session_create_ms": 201,
"stream_start_ms": null,
"vmhwm_kb": 107900,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,162 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 6,
"run_id": "mq8k5yjd-voz7",
"utc": "2026-06-10T21:05:50.617Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2376744,
"gw_pid": 2376752,
"cgroup": null,
"load_avg_at_start": [
0.09,
0.37,
0.42
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56640,
"pss_kb": 30371,
"private_dirty_kb": 19204,
"vmhwm_kb": 56644,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 940,
"msgs": 0,
"events": 0,
"pty_bytes": 6607,
"pty_writes": 11,
"rss_kb": 108564,
"pss_kb": 69123,
"private_dirty_kb": 49308,
"vmhwm_kb": 108564,
"utime_ticks": 24,
"stime_ticks": 2
}
],
"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": "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
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 949
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6788,
"pty_data_callbacks": 12,
"first_byte_ms": 74,
"session_create_ms": 226,
"stream_start_ms": null,
"vmhwm_kb": 108564,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 4,
"run_id": "mq8k4zqx-k174",
"utc": "2026-06-10T21:05:05.529Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2375677,
"gw_pid": 2375686,
"cgroup": null,
"load_avg_at_start": [
0.2,
0.44,
0.44
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 28,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 55248,
"pss_kb": 28923,
"private_dirty_kb": 17816,
"vmhwm_kb": 55292,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1041,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 104936,
"pss_kb": 64782,
"private_dirty_kb": 48228,
"vmhwm_kb": 107976,
"utime_ticks": 18,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1142,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 104936,
"pss_kb": 64782,
"private_dirty_kb": 48228,
"vmhwm_kb": 107976,
"utime_ticks": 18,
"stime_ticks": 2
}
],
"events": [
{
"kind": "rpc",
"method": "session.create",
"t_ms": 179
},
{
"kind": "rpc",
"method": "startup.catalog",
"t_ms": 179
},
{
"kind": "rpc",
"method": "model.options",
"t_ms": 179
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 1325
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 16,
"first_byte_ms": 126,
"session_create_ms": 179,
"stream_start_ms": null,
"vmhwm_kb": 107976,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 5,
"run_id": "mq8k58hq-k6fs",
"utc": "2026-06-10T21:05:16.862Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2375969,
"gw_pid": 2375978,
"cgroup": null,
"load_avg_at_start": [
0.16,
0.41,
0.43
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 55156,
"pss_kb": 28735,
"private_dirty_kb": 17624,
"vmhwm_kb": 55236,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1031,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 11,
"rss_kb": 104984,
"pss_kb": 64764,
"private_dirty_kb": 48236,
"vmhwm_kb": 107484,
"utime_ticks": 18,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1141,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 11,
"rss_kb": 104984,
"pss_kb": 64764,
"private_dirty_kb": 48236,
"vmhwm_kb": 107484,
"utime_ticks": 18,
"stime_ticks": 2
}
],
"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": 1323
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 15,
"first_byte_ms": 126,
"session_create_ms": 175,
"stream_start_ms": null,
"vmhwm_kb": 107484,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 6,
"run_id": "mq8k5pso-h4fq",
"utc": "2026-06-10T21:05:39.288Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2376514,
"gw_pid": 2376524,
"cgroup": null,
"load_avg_at_start": [
0.11,
0.39,
0.42
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 55236,
"pss_kb": 28896,
"private_dirty_kb": 17788,
"vmhwm_kb": 55268,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1035,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 15,
"rss_kb": 104964,
"pss_kb": 64795,
"private_dirty_kb": 48240,
"vmhwm_kb": 107208,
"utime_ticks": 17,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1138,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 15,
"rss_kb": 104964,
"pss_kb": 64795,
"private_dirty_kb": 48240,
"vmhwm_kb": 107208,
"utime_ticks": 17,
"stime_ticks": 2
}
],
"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": 1320
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 19,
"first_byte_ms": 124,
"session_create_ms": 175,
"stream_start_ms": null,
"vmhwm_kb": 107208,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 7,
"run_id": "mq8k6fuy-8rey",
"utc": "2026-06-10T21:06:13.066Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2377249,
"gw_pid": 2377257,
"cgroup": null,
"load_avg_at_start": [
0.12,
0.36,
0.41
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 25,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56048,
"pss_kb": 29799,
"private_dirty_kb": 18632,
"vmhwm_kb": 56104,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 931,
"msgs": 0,
"events": 0,
"pty_bytes": 6604,
"pty_writes": 12,
"rss_kb": 108220,
"pss_kb": 68883,
"private_dirty_kb": 49072,
"vmhwm_kb": 108220,
"utime_ticks": 25,
"stime_ticks": 1
}
],
"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": 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
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 941
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6785,
"pty_data_callbacks": 20,
"first_byte_ms": 67,
"session_create_ms": 200,
"stream_start_ms": null,
"vmhwm_kb": 108220,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 8,
"run_id": "mq8k6x69-to2m",
"utc": "2026-06-10T21:06:35.505Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2377739,
"gw_pid": 2377747,
"cgroup": null,
"load_avg_at_start": [
0.09,
0.33,
0.4
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56632,
"pss_kb": 30379,
"private_dirty_kb": 19212,
"vmhwm_kb": 56640,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 928,
"msgs": 0,
"events": 0,
"pty_bytes": 6602,
"pty_writes": 11,
"rss_kb": 110044,
"pss_kb": 70703,
"private_dirty_kb": 50892,
"vmhwm_kb": 110044,
"utime_ticks": 23,
"stime_ticks": 3
}
],
"events": [
{
"kind": "rpc",
"method": "config.get",
"t_ms": 176
},
{
"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": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 936
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6783,
"pty_data_callbacks": 24,
"first_byte_ms": 61,
"session_create_ms": 202,
"stream_start_ms": null,
"vmhwm_kb": 110044,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,157 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "ink",
"config": "ink",
"mode": "startup",
"rep": 9,
"run_id": "mq8k75q8-eljl",
"utc": "2026-06-10T21:06:46.592Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2377972,
"gw_pid": 2377982,
"cgroup": null,
"load_avg_at_start": [
0.07,
0.32,
0.39
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56624,
"pss_kb": 30363,
"private_dirty_kb": 19196,
"vmhwm_kb": 56628,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "final",
"t_ms": 930,
"msgs": 0,
"events": 0,
"pty_bytes": 6607,
"pty_writes": 12,
"rss_kb": 108276,
"pss_kb": 68927,
"private_dirty_kb": 49116,
"vmhwm_kb": 108276,
"utime_ticks": 25,
"stime_ticks": 1
}
],
"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": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 937
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 6788,
"pty_data_callbacks": 14,
"first_byte_ms": 66,
"session_create_ms": 202,
"stream_start_ms": null,
"vmhwm_kb": 108276,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 7,
"run_id": "mq8k673s-zfb9",
"utc": "2026-06-10T21:06:01.720Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2377011,
"gw_pid": 2377021,
"cgroup": null,
"load_avg_at_start": [
0.15,
0.37,
0.42
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 25,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 54024,
"pss_kb": 27618,
"private_dirty_kb": 16508,
"vmhwm_kb": 54092,
"utime_ticks": 1,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1033,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 105020,
"pss_kb": 64723,
"private_dirty_kb": 48164,
"vmhwm_kb": 107476,
"utime_ticks": 18,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1153,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 105020,
"pss_kb": 64723,
"private_dirty_kb": 48164,
"vmhwm_kb": 107476,
"utime_ticks": 18,
"stime_ticks": 2
}
],
"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": 1337
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 16,
"first_byte_ms": 137,
"session_create_ms": 175,
"stream_start_ms": null,
"vmhwm_kb": 107476,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 8,
"run_id": "mq8k6of5-5pes",
"utc": "2026-06-10T21:06:24.161Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2377513,
"gw_pid": 2377522,
"cgroup": null,
"load_avg_at_start": [
0.1,
0.35,
0.41
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 53660,
"pss_kb": 27239,
"private_dirty_kb": 16128,
"vmhwm_kb": 53720,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1030,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 10,
"rss_kb": 104876,
"pss_kb": 64626,
"private_dirty_kb": 48068,
"vmhwm_kb": 107420,
"utime_ticks": 18,
"stime_ticks": 1
},
{
"kind": "final",
"t_ms": 1140,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 10,
"rss_kb": 104876,
"pss_kb": 64626,
"private_dirty_kb": 48068,
"vmhwm_kb": 107420,
"utime_ticks": 18,
"stime_ticks": 1
}
],
"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": 1323
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 14,
"first_byte_ms": 126,
"session_create_ms": 177,
"stream_start_ms": null,
"vmhwm_kb": 107420,
"cg_peak": null,
"drain_max_loop_lag_ms": 1,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

View File

@@ -1,126 +0,0 @@
{
"meta": {
"cell": "startup",
"ui": "opentui",
"config": "otui-capped",
"mode": "startup",
"rep": 9,
"run_id": "mq8k7eaa-5yiz",
"utc": "2026-06-10T21:06:57.682Z",
"sha": "197d49948",
"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": "",
"msgs": 0,
"sha256": ""
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2378238,
"gw_pid": 2378247,
"cgroup": null,
"load_avg_at_start": [
0.06,
0.31,
0.39
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 55340,
"pss_kb": 29016,
"private_dirty_kb": 17908,
"vmhwm_kb": 55444,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1034,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 105048,
"pss_kb": 64894,
"private_dirty_kb": 48340,
"vmhwm_kb": 107372,
"utime_ticks": 17,
"stime_ticks": 2
},
{
"kind": "final",
"t_ms": 1145,
"msgs": 0,
"events": 0,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 105048,
"pss_kb": 64894,
"private_dirty_kb": 48340,
"vmhwm_kb": 107372,
"utime_ticks": 17,
"stime_ticks": 2
}
],
"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": 1330
},
"stream_done": false,
"msgs_streamed": 0,
"events_streamed": null,
"pty_bytes_total": 29189,
"pty_data_callbacks": 16,
"first_byte_ms": 129,
"session_create_ms": 176,
"stream_start_ms": null,
"vmhwm_kb": 107372,
"cg_peak": null,
"drain_max_loop_lag_ms": 2,
"drain_lag_violations": 0,
"drain_ok": true,
"digest": null
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,731 +0,0 @@
{
"meta": {
"cell": "slope10000",
"ui": "opentui",
"config": "otui-uncapped",
"mode": "mem",
"rep": 0,
"run_id": "mq8llvhs-3z28",
"utc": "2026-06-10T21:46:12.784Z",
"sha": "197d49948",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 100000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-10000.ndjson",
"msgs": 10000,
"sha256": "b179faf495f676f611bd0910991927bb78059a7bffb162b1b86dcc617b973b3d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2419566,
"gw_pid": 2419621,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/user@1001.service/app.slice/hermes-bench-mq8llvhs-3z28.scope",
"load_avg_at_start": [
0.28,
0.19,
0.33
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 54,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 58324,
"pss_kb": 31887,
"private_dirty_kb": 20756,
"vmhwm_kb": 58436,
"utime_ticks": 2,
"stime_ticks": 1,
"cg_current": 22523904,
"cg_peak": 22523904,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1062,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 12,
"rss_kb": 105248,
"pss_kb": 65053,
"private_dirty_kb": 48436,
"vmhwm_kb": 108104,
"utime_ticks": 18,
"stime_ticks": 3,
"cg_current": 62251008,
"cg_peak": 66654208,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1715,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 111976,
"pss_kb": 71664,
"private_dirty_kb": 55036,
"vmhwm_kb": 112016,
"utime_ticks": 21,
"stime_ticks": 4,
"cg_current": 92114944,
"cg_peak": 92368896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1716,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 112232,
"pss_kb": 71920,
"private_dirty_kb": 55292,
"vmhwm_kb": 112320,
"utime_ticks": 21,
"stime_ticks": 4,
"cg_current": 92377088,
"cg_peak": 92377088,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1717,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 112488,
"pss_kb": 72176,
"private_dirty_kb": 55548,
"vmhwm_kb": 112552,
"utime_ticks": 21,
"stime_ticks": 4,
"cg_current": 92639232,
"cg_peak": 92639232,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1966,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 14,
"rss_kb": 206576,
"pss_kb": 163957,
"private_dirty_kb": 146564,
"vmhwm_kb": 206612,
"utime_ticks": 63,
"stime_ticks": 7,
"cg_current": 188628992,
"cg_peak": 188628992,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2067,
"msgs": 501,
"events": 1792,
"pty_bytes": 31737,
"pty_writes": 15,
"rss_kb": 222248,
"pss_kb": 179599,
"private_dirty_kb": 162176,
"vmhwm_kb": 222312,
"utime_ticks": 77,
"stime_ticks": 7,
"cg_current": 204722176,
"cg_peak": 204722176,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2069,
"msgs": null,
"events": null,
"pty_bytes": 31737,
"pty_writes": 15,
"rss_kb": 222336,
"pss_kb": 179687,
"private_dirty_kb": 162264,
"vmhwm_kb": 222344,
"utime_ticks": 77,
"stime_ticks": 7,
"cg_current": 204722176,
"cg_peak": 204722176,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2294,
"msgs": 601,
"events": 2154,
"pty_bytes": 37782,
"pty_writes": 17,
"rss_kb": 254616,
"pss_kb": 211818,
"private_dirty_kb": 194356,
"vmhwm_kb": 254628,
"utime_ticks": 104,
"stime_ticks": 9,
"cg_current": 238641152,
"cg_peak": 238641152,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2521,
"msgs": 701,
"events": 2496,
"pty_bytes": 40892,
"pty_writes": 19,
"rss_kb": 298832,
"pss_kb": 255858,
"private_dirty_kb": 238320,
"vmhwm_kb": 328676,
"utime_ticks": 145,
"stime_ticks": 12,
"cg_current": 284282880,
"cg_peak": 315707392,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2795,
"msgs": 801,
"events": 2857,
"pty_bytes": 45578,
"pty_writes": 23,
"rss_kb": 336884,
"pss_kb": 293910,
"private_dirty_kb": 276372,
"vmhwm_kb": 348140,
"utime_ticks": 184,
"stime_ticks": 15,
"cg_current": 324304896,
"cg_peak": 335699968,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3072,
"msgs": null,
"events": null,
"pty_bytes": 47212,
"pty_writes": 24,
"rss_kb": 366704,
"pss_kb": 323724,
"private_dirty_kb": 306192,
"vmhwm_kb": 366704,
"utime_ticks": 214,
"stime_ticks": 17,
"cg_current": 355123200,
"cg_peak": 355749888,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3122,
"msgs": 901,
"events": 3245,
"pty_bytes": 48034,
"pty_writes": 25,
"rss_kb": 371260,
"pss_kb": 328280,
"private_dirty_kb": 310748,
"vmhwm_kb": 371320,
"utime_ticks": 219,
"stime_ticks": 17,
"cg_current": 360083456,
"cg_peak": 360083456,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3348,
"msgs": 1001,
"events": 3588,
"pty_bytes": 48975,
"pty_writes": 26,
"rss_kb": 397736,
"pss_kb": 354756,
"private_dirty_kb": 337224,
"vmhwm_kb": 397740,
"utime_ticks": 244,
"stime_ticks": 19,
"cg_current": 388497408,
"cg_peak": 388538368,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3727,
"msgs": 1101,
"events": 3928,
"pty_bytes": 52145,
"pty_writes": 28,
"rss_kb": 433076,
"pss_kb": 390096,
"private_dirty_kb": 372564,
"vmhwm_kb": 433088,
"utime_ticks": 290,
"stime_ticks": 20,
"cg_current": 426479616,
"cg_peak": 426512384,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3754,
"msgs": 1201,
"events": 4298,
"pty_bytes": 53344,
"pty_writes": 29,
"rss_kb": 442780,
"pss_kb": 399800,
"private_dirty_kb": 382268,
"vmhwm_kb": 442792,
"utime_ticks": 302,
"stime_ticks": 20,
"cg_current": 436772864,
"cg_peak": 436772864,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3757,
"msgs": 1300,
"events": 4659,
"pty_bytes": 53344,
"pty_writes": 29,
"rss_kb": 443092,
"pss_kb": 400112,
"private_dirty_kb": 382580,
"vmhwm_kb": 443116,
"utime_ticks": 302,
"stime_ticks": 20,
"cg_current": 437035008,
"cg_peak": 437035008,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4077,
"msgs": null,
"events": null,
"pty_bytes": 53344,
"pty_writes": 29,
"rss_kb": 487708,
"pss_kb": 444728,
"private_dirty_kb": 427196,
"vmhwm_kb": 487708,
"utime_ticks": 341,
"stime_ticks": 22,
"cg_current": 483205120,
"cg_peak": 483270656,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4129,
"msgs": 1400,
"events": 5011,
"pty_bytes": 55531,
"pty_writes": 30,
"rss_kb": 489348,
"pss_kb": 446368,
"private_dirty_kb": 428836,
"vmhwm_kb": 489356,
"utime_ticks": 346,
"stime_ticks": 22,
"cg_current": 484970496,
"cg_peak": 484970496,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4453,
"msgs": 1500,
"events": 5384,
"pty_bytes": 58054,
"pty_writes": 32,
"rss_kb": 518772,
"pss_kb": 475792,
"private_dirty_kb": 458260,
"vmhwm_kb": 518828,
"utime_ticks": 381,
"stime_ticks": 24,
"cg_current": 517029888,
"cg_peak": 517029888,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4457,
"msgs": 1600,
"events": 5730,
"pty_bytes": 58054,
"pty_writes": 32,
"rss_kb": 519068,
"pss_kb": 476088,
"private_dirty_kb": 458556,
"vmhwm_kb": 519216,
"utime_ticks": 382,
"stime_ticks": 24,
"cg_current": 517554176,
"cg_peak": 517554176,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4460,
"msgs": 1700,
"events": 6100,
"pty_bytes": 58054,
"pty_writes": 32,
"rss_kb": 519492,
"pss_kb": 476512,
"private_dirty_kb": 458980,
"vmhwm_kb": 519572,
"utime_ticks": 382,
"stime_ticks": 24,
"cg_current": 517816320,
"cg_peak": 517816320,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4465,
"msgs": 1800,
"events": 6455,
"pty_bytes": 58054,
"pty_writes": 32,
"rss_kb": 520040,
"pss_kb": 477060,
"private_dirty_kb": 459528,
"vmhwm_kb": 520732,
"utime_ticks": 383,
"stime_ticks": 24,
"cg_current": 519385088,
"cg_peak": 519385088,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4729,
"msgs": 1900,
"events": 6838,
"pty_bytes": 58054,
"pty_writes": 32,
"rss_kb": 613404,
"pss_kb": 570424,
"private_dirty_kb": 552892,
"vmhwm_kb": 613524,
"utime_ticks": 415,
"stime_ticks": 28,
"cg_current": 616124416,
"cg_peak": 616128512,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5078,
"msgs": 2000,
"events": 7151,
"pty_bytes": 60288,
"pty_writes": 33,
"rss_kb": 639848,
"pss_kb": 596868,
"private_dirty_kb": 579336,
"vmhwm_kb": 640056,
"utime_ticks": 451,
"stime_ticks": 29,
"cg_current": 643747840,
"cg_peak": 643747840,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5083,
"msgs": 2100,
"events": 7532,
"pty_bytes": 60288,
"pty_writes": 33,
"rss_kb": 640208,
"pss_kb": 597228,
"private_dirty_kb": 579696,
"vmhwm_kb": 640316,
"utime_ticks": 451,
"stime_ticks": 29,
"cg_current": 644009984,
"cg_peak": 644009984,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5088,
"msgs": null,
"events": null,
"pty_bytes": 60288,
"pty_writes": 33,
"rss_kb": 640512,
"pss_kb": 597532,
"private_dirty_kb": 580000,
"vmhwm_kb": 640720,
"utime_ticks": 452,
"stime_ticks": 29,
"cg_current": 644534272,
"cg_peak": 644534272,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5582,
"msgs": 2201,
"events": 7892,
"pty_bytes": 62992,
"pty_writes": 35,
"rss_kb": 696544,
"pss_kb": 653564,
"private_dirty_kb": 636032,
"vmhwm_kb": 696720,
"utime_ticks": 506,
"stime_ticks": 32,
"cg_current": 703832064,
"cg_peak": 703832064,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5587,
"msgs": 2301,
"events": 8254,
"pty_bytes": 62992,
"pty_writes": 35,
"rss_kb": 696740,
"pss_kb": 653760,
"private_dirty_kb": 636228,
"vmhwm_kb": 696820,
"utime_ticks": 506,
"stime_ticks": 32,
"cg_current": 704094208,
"cg_peak": 704094208,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5592,
"msgs": 2401,
"events": 8596,
"pty_bytes": 62992,
"pty_writes": 35,
"rss_kb": 697112,
"pss_kb": 654132,
"private_dirty_kb": 636600,
"vmhwm_kb": 697120,
"utime_ticks": 506,
"stime_ticks": 32,
"cg_current": 704098304,
"cg_peak": 704098304,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5597,
"msgs": 2501,
"events": 8957,
"pty_bytes": 62992,
"pty_writes": 35,
"rss_kb": 697200,
"pss_kb": 654220,
"private_dirty_kb": 636688,
"vmhwm_kb": 697348,
"utime_ticks": 506,
"stime_ticks": 32,
"cg_current": 704360448,
"cg_peak": 704360448,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5601,
"msgs": 2601,
"events": 9345,
"pty_bytes": 62992,
"pty_writes": 35,
"rss_kb": 697592,
"pss_kb": 654612,
"private_dirty_kb": 637080,
"vmhwm_kb": 697760,
"utime_ticks": 507,
"stime_ticks": 32,
"cg_current": 704331776,
"cg_peak": 704585728,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5909,
"msgs": 2701,
"events": 9688,
"pty_bytes": 62992,
"pty_writes": 35,
"rss_kb": 807116,
"pss_kb": 764136,
"private_dirty_kb": 746604,
"vmhwm_kb": 807116,
"utime_ticks": 548,
"stime_ticks": 36,
"cg_current": 820228096,
"cg_peak": 820269056,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6108,
"msgs": null,
"events": null,
"pty_bytes": 62992,
"pty_writes": 35,
"rss_kb": 831252,
"pss_kb": 788272,
"private_dirty_kb": 770740,
"vmhwm_kb": 831252,
"utime_ticks": 567,
"stime_ticks": 38,
"cg_current": 844177408,
"cg_peak": 844488704,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6409,
"msgs": 2801,
"events": 10028,
"pty_bytes": 65806,
"pty_writes": 36,
"rss_kb": 840724,
"pss_kb": 797744,
"private_dirty_kb": 780212,
"vmhwm_kb": 840752,
"utime_ticks": 597,
"stime_ticks": 38,
"cg_current": 854310912,
"cg_peak": 854310912,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6961,
"msgs": 2901,
"events": 10398,
"pty_bytes": 68893,
"pty_writes": 37,
"rss_kb": 872268,
"pss_kb": 829288,
"private_dirty_kb": 811756,
"vmhwm_kb": 872308,
"utime_ticks": 652,
"stime_ticks": 41,
"cg_current": 887250944,
"cg_peak": 887250944,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7112,
"msgs": null,
"events": null,
"pty_bytes": 68893,
"pty_writes": 37,
"rss_kb": 899632,
"pss_kb": 856652,
"private_dirty_kb": 839120,
"vmhwm_kb": 899660,
"utime_ticks": 666,
"stime_ticks": 43,
"cg_current": 915791872,
"cg_peak": 915791872,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7539,
"msgs": 3000,
"events": 10759,
"pty_bytes": 71372,
"pty_writes": 38,
"rss_kb": 904868,
"pss_kb": 861888,
"private_dirty_kb": 844356,
"vmhwm_kb": 904892,
"utime_ticks": 709,
"stime_ticks": 43,
"cg_current": 921427968,
"cg_peak": 921427968,
"cg_oom_kill": 0
}
],
"events": [
{
"kind": "rpc",
"method": "session.create",
"t_ms": 179
},
{
"kind": "rpc",
"method": "startup.catalog",
"t_ms": 204
},
{
"kind": "rpc",
"method": "model.options",
"t_ms": 204
}
],
"summary": {
"result": "died",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 7586
},
"stream_done": false,
"msgs_streamed": 3000,
"events_streamed": null,
"pty_bytes_total": 72635,
"pty_data_callbacks": 39,
"first_byte_ms": 148,
"session_create_ms": 179,
"stream_start_ms": 1713,
"vmhwm_kb": 904892,
"cg_peak": 921427968,
"drain_max_loop_lag_ms": 25,
"drain_lag_violations": 4,
"drain_ok": false,
"digest": null
},
"pty_tail": "sed anim excepteur irure.- Ipsum cupidatat voluptate ullamco labore sit sunt.- Esse aliquip aliqua consectetur.Officia fugiat consequat minim elit mollit pariatur aute quis eiusmod lorem occaecat. Aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur aute quis eiusmod.◇ read_file2.4s (18 lines)4 ⧉ copy⚕▼Thinking: Magna amet culpa │ │ $trminl Magna aet culpacillum. · 2.9s (2lines) ◇read_file Deserunt nulla duis veniam3018 lines)◦edit_fie Irre nostrud tempor ipsum. · 31s (7 lines) ⚡grep Labore it sunt esse. ·0s ◦edit_file Excepteur irure nostrud tempor. · 2.5s (7 lines) ◦grep Ullamco labore sit sunt. · 2.6s (2 lines)●web_search Consectetur officia fugiat consequat. · 2.7s (18 lines)◆write_file Pariatur aute quis eiusmod. · 2.8s (7 lines)$terminal Exercitation incididunt dolor proident. · 2.9s (2 lines)◇read_file Amet culpa cillum commodo. · 3.0s (18 lines)◦edit_file Nulla duis veniam sed. · 3.1s (7 lines)◦grep Nostrud tempor ipsum cupidatat. · 3.2s (2 lines)●web_search Sit sunt esse aliquip. · 3.3s (18 lines)◆write_file Fugit consequat minimelit ·3.4s (7 lines)$trmina Qui eiusmod orem occaect52 lines) ◇readDolorproident velitlaboris. · 3.6s (18 lines)edit_file Cillum commodo enimadipiscing. · 0sLorem occaecat reprehenderit exercitation incididunt dolor proident. Aute quis eiusmod lorem occaecat reprehenderitexercitation incididunt.◦ edit_file3.7s (7 lines)5◦edit_file Velit laboris magna amet. · 0.5s (7 lines)◦grep Enim adipiscing deserunt nulla. · 0.6s (2 lines)●web_search Anim excepteur irure nostrud. · 0.7s (18 lines) ◆ write_file Voluptate ullamco labore sit. · 0.8s (7 lines) $terminal Aliqua consectetur officia fugiat. · 0.9s (2 lines) ◇read_file Mollit pariatur aute quis. · 1.0s (18 lines) ◦edit_file Reprehenderit exercitation incididunt dolor. · 1.1s (7 lines) ⧉ copy ⚕ ⧉ copy ⚕▍ ●web_search Duis veniam sed anim. · 2.7s (18 lines) ◆write_file Tempor ipsum cupidatat voluptate. · 2.8s (7 lines) $terminal Sunt esse aliquip aliqua. · 2.9s (2 lines) ◇read_file Consequat minim elit mollit. · 3.0s (18 lines) ◦edit_file Eiusmod lorem occaecat reprehenderit. · 3.1s (7 lines) ◦grep Proident velit laboris magna. · 3.2s (2 lines) ●web_search Commodo enim adipiscing deserunt. · 3.3s (18 lines)◆write_file Sed anim excepteur irure. · 3.4s (7 lines) $terminal Cupidatat voluptate ullamco labore. · 3.5s (2 lines) ◇read_file Aliquip aliqua consectetur officia. · 3.6s (18 lines)◦edit_file Elit mollit pariatur aute. · 3.7s (7 lines)◦grep Occaecat reprehenderit exercitation incididunt. · 3.8s (2 lines)●web_search Laboris magna amet culpa. · 3.9s (18 lines)⧉ copy⚕ ▼ Thinking: Culpa cillum commodo│ │ ⧉ copy $terminal Ullamco labore sit sunt. · 0.9s (2 lines) ◇read_file Consectetur officia fugiat consequat. · 1.0s (18 lines) ◦edit_file Pariatur aute quis eiusmod. · 1.1s (7 lines) ◦grep Exercitation incididunt dolor proident. · 1.2s (2 lines) ⧉ copy ⚕ ⧉ copy ⚕▍ 6file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,765 +0,0 @@
{
"meta": {
"cell": "e3lite-1g",
"ui": "opentui",
"config": "otui-capped",
"mode": "mem",
"rep": 0,
"run_id": "mq8lnkne-0zb9",
"utc": "2026-06-10T21:47:32.042Z",
"sha": "unknown",
"node": "/usr/local/bin/node",
"node_version": "v26.3.0",
"pty": {
"cols": 120,
"rows": 40,
"term": "xterm-256color"
},
"heap_mb": 768,
"memory_max": null,
"container_cap": true,
"container_memory": "1073741824",
"opentui_cap": 3000,
"fixture": {
"path": "/repo/bench/.cache/fixture-10000.ndjson",
"msgs": 10000,
"sha256": "b179faf495f676f611bd0910991927bb78059a7bffb162b1b86dcc617b973b3d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 38,
"gw_pid": 47,
"cgroup": "/sys/fs/cgroup",
"load_avg_at_start": [
0.44,
0.25,
0.34
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 27,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 50852,
"pss_kb": 34630,
"private_dirty_kb": 17496,
"vmhwm_kb": 50884,
"utime_ticks": 1,
"stime_ticks": 0,
"cg_current": 105869312,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1033,
"msgs": null,
"events": null,
"pty_bytes": 28833,
"pty_writes": 9,
"rss_kb": 102356,
"pss_kb": 74787,
"private_dirty_kb": 46820,
"vmhwm_kb": 104744,
"utime_ticks": 17,
"stime_ticks": 2,
"cg_current": 146993152,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1710,
"msgs": 100,
"events": 355,
"pty_bytes": 31282,
"pty_writes": 12,
"rss_kb": 110844,
"pss_kb": 82634,
"private_dirty_kb": 55184,
"vmhwm_kb": 110852,
"utime_ticks": 22,
"stime_ticks": 2,
"cg_current": 179965952,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1711,
"msgs": 200,
"events": 738,
"pty_bytes": 31282,
"pty_writes": 12,
"rss_kb": 111304,
"pss_kb": 83094,
"private_dirty_kb": 55644,
"vmhwm_kb": 111472,
"utime_ticks": 22,
"stime_ticks": 2,
"cg_current": 180752384,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1712,
"msgs": 300,
"events": 1051,
"pty_bytes": 31282,
"pty_writes": 12,
"rss_kb": 111628,
"pss_kb": 83418,
"private_dirty_kb": 55968,
"vmhwm_kb": 111696,
"utime_ticks": 22,
"stime_ticks": 2,
"cg_current": 181014528,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1986,
"msgs": 400,
"events": 1432,
"pty_bytes": 31282,
"pty_writes": 12,
"rss_kb": 190264,
"pss_kb": 161888,
"private_dirty_kb": 133392,
"vmhwm_kb": 190280,
"utime_ticks": 69,
"stime_ticks": 5,
"cg_current": 262381568,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2036,
"msgs": null,
"events": null,
"pty_bytes": 31282,
"pty_writes": 12,
"rss_kb": 200616,
"pss_kb": 172240,
"private_dirty_kb": 143684,
"vmhwm_kb": 200624,
"utime_ticks": 76,
"stime_ticks": 6,
"cg_current": 273211392,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2091,
"msgs": 501,
"events": 1792,
"pty_bytes": 32499,
"pty_writes": 13,
"rss_kb": 202884,
"pss_kb": 174508,
"private_dirty_kb": 145952,
"vmhwm_kb": 202896,
"utime_ticks": 82,
"stime_ticks": 6,
"cg_current": 276074496,
"cg_peak": 304840704,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2338,
"msgs": 601,
"events": 2154,
"pty_bytes": 38266,
"pty_writes": 15,
"rss_kb": 230560,
"pss_kb": 202154,
"private_dirty_kb": 173568,
"vmhwm_kb": 230616,
"utime_ticks": 120,
"stime_ticks": 8,
"cg_current": 305811456,
"cg_peak": 305811456,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2563,
"msgs": 701,
"events": 2496,
"pty_bytes": 41823,
"pty_writes": 17,
"rss_kb": 274484,
"pss_kb": 246078,
"private_dirty_kb": 217364,
"vmhwm_kb": 305256,
"utime_ticks": 163,
"stime_ticks": 11,
"cg_current": 351559680,
"cg_peak": 384253952,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2839,
"msgs": 801,
"events": 2857,
"pty_bytes": 46663,
"pty_writes": 19,
"rss_kb": 316188,
"pss_kb": 287782,
"private_dirty_kb": 259068,
"vmhwm_kb": 323544,
"utime_ticks": 201,
"stime_ticks": 14,
"cg_current": 395325440,
"cg_peak": 403488768,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3039,
"msgs": null,
"events": null,
"pty_bytes": 46663,
"pty_writes": 19,
"rss_kb": 344056,
"pss_kb": 315650,
"private_dirty_kb": 286936,
"vmhwm_kb": 344056,
"utime_ticks": 236,
"stime_ticks": 15,
"cg_current": 424480768,
"cg_peak": 424673280,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3166,
"msgs": 901,
"events": 3245,
"pty_bytes": 49643,
"pty_writes": 21,
"rss_kb": 349312,
"pss_kb": 320894,
"private_dirty_kb": 292192,
"vmhwm_kb": 350264,
"utime_ticks": 249,
"stime_ticks": 16,
"cg_current": 431595520,
"cg_peak": 431595520,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3416,
"msgs": 1001,
"events": 3588,
"pty_bytes": 52116,
"pty_writes": 23,
"rss_kb": 376040,
"pss_kb": 347622,
"private_dirty_kb": 318920,
"vmhwm_kb": 376160,
"utime_ticks": 278,
"stime_ticks": 17,
"cg_current": 461082624,
"cg_peak": 461082624,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3419,
"msgs": 1101,
"events": 3928,
"pty_bytes": 52116,
"pty_writes": 23,
"rss_kb": 376376,
"pss_kb": 347958,
"private_dirty_kb": 319256,
"vmhwm_kb": 376448,
"utime_ticks": 278,
"stime_ticks": 17,
"cg_current": 461344768,
"cg_peak": 461344768,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3421,
"msgs": 1201,
"events": 4298,
"pty_bytes": 52116,
"pty_writes": 23,
"rss_kb": 376532,
"pss_kb": 348114,
"private_dirty_kb": 319412,
"vmhwm_kb": 377312,
"utime_ticks": 279,
"stime_ticks": 18,
"cg_current": 462176256,
"cg_peak": 462176256,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3424,
"msgs": 1300,
"events": 4659,
"pty_bytes": 52116,
"pty_writes": 23,
"rss_kb": 377468,
"pss_kb": 349050,
"private_dirty_kb": 320348,
"vmhwm_kb": 377504,
"utime_ticks": 279,
"stime_ticks": 18,
"cg_current": 462176256,
"cg_peak": 462176256,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3426,
"msgs": 1400,
"events": 5011,
"pty_bytes": 52116,
"pty_writes": 23,
"rss_kb": 377632,
"pss_kb": 349214,
"private_dirty_kb": 320512,
"vmhwm_kb": 377652,
"utime_ticks": 279,
"stime_ticks": 18,
"cg_current": 462438400,
"cg_peak": 462438400,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3994,
"msgs": 1500,
"events": 5384,
"pty_bytes": 54212,
"pty_writes": 25,
"rss_kb": 496884,
"pss_kb": 468465,
"private_dirty_kb": 439764,
"vmhwm_kb": 496936,
"utime_ticks": 365,
"stime_ticks": 22,
"cg_current": 586190848,
"cg_peak": 586190848,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4044,
"msgs": null,
"events": null,
"pty_bytes": 54212,
"pty_writes": 25,
"rss_kb": 510420,
"pss_kb": 482001,
"private_dirty_kb": 453300,
"vmhwm_kb": 510420,
"utime_ticks": 372,
"stime_ticks": 23,
"cg_current": 600473600,
"cg_peak": 600584192,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4295,
"msgs": 1600,
"events": 5730,
"pty_bytes": 55537,
"pty_writes": 26,
"rss_kb": 518148,
"pss_kb": 489729,
"private_dirty_kb": 461028,
"vmhwm_kb": 518148,
"utime_ticks": 397,
"stime_ticks": 24,
"cg_current": 608800768,
"cg_peak": 608800768,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4648,
"msgs": 1700,
"events": 6100,
"pty_bytes": 58079,
"pty_writes": 28,
"rss_kb": 548004,
"pss_kb": 519585,
"private_dirty_kb": 490884,
"vmhwm_kb": 548204,
"utime_ticks": 433,
"stime_ticks": 26,
"cg_current": 640417792,
"cg_peak": 640450560,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4672,
"msgs": 1800,
"events": 6455,
"pty_bytes": 58079,
"pty_writes": 28,
"rss_kb": 551104,
"pss_kb": 522685,
"private_dirty_kb": 493984,
"vmhwm_kb": 551124,
"utime_ticks": 436,
"stime_ticks": 26,
"cg_current": 643432448,
"cg_peak": 643436544,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4675,
"msgs": 1900,
"events": 6838,
"pty_bytes": 58079,
"pty_writes": 28,
"rss_kb": 551336,
"pss_kb": 522917,
"private_dirty_kb": 494216,
"vmhwm_kb": 551356,
"utime_ticks": 437,
"stime_ticks": 27,
"cg_current": 643694592,
"cg_peak": 643694592,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4679,
"msgs": 2000,
"events": 7151,
"pty_bytes": 58079,
"pty_writes": 28,
"rss_kb": 551484,
"pss_kb": 523065,
"private_dirty_kb": 494364,
"vmhwm_kb": 551500,
"utime_ticks": 437,
"stime_ticks": 27,
"cg_current": 643956736,
"cg_peak": 643956736,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5048,
"msgs": null,
"events": null,
"pty_bytes": 58079,
"pty_writes": 28,
"rss_kb": 637724,
"pss_kb": 609305,
"private_dirty_kb": 580604,
"vmhwm_kb": 637788,
"utime_ticks": 481,
"stime_ticks": 30,
"cg_current": 733270016,
"cg_peak": 733802496,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5228,
"msgs": 2100,
"events": 7532,
"pty_bytes": 60099,
"pty_writes": 29,
"rss_kb": 641292,
"pss_kb": 612873,
"private_dirty_kb": 584172,
"vmhwm_kb": 641356,
"utime_ticks": 499,
"stime_ticks": 31,
"cg_current": 737525760,
"cg_peak": 737525760,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5682,
"msgs": 2201,
"events": 7892,
"pty_bytes": 62048,
"pty_writes": 31,
"rss_kb": 672312,
"pss_kb": 643893,
"private_dirty_kb": 615192,
"vmhwm_kb": 672732,
"utime_ticks": 558,
"stime_ticks": 33,
"cg_current": 770236416,
"cg_peak": 770236416,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5690,
"msgs": 2301,
"events": 8254,
"pty_bytes": 62048,
"pty_writes": 31,
"rss_kb": 672880,
"pss_kb": 644461,
"private_dirty_kb": 615760,
"vmhwm_kb": 672892,
"utime_ticks": 561,
"stime_ticks": 33,
"cg_current": 770236416,
"cg_peak": 770236416,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6057,
"msgs": null,
"events": null,
"pty_bytes": 62048,
"pty_writes": 31,
"rss_kb": 714568,
"pss_kb": 686149,
"private_dirty_kb": 657448,
"vmhwm_kb": 714612,
"utime_ticks": 619,
"stime_ticks": 35,
"cg_current": 814133248,
"cg_peak": 814133248,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6210,
"msgs": 2401,
"events": 8596,
"pty_bytes": 64425,
"pty_writes": 32,
"rss_kb": 716884,
"pss_kb": 688465,
"private_dirty_kb": 659764,
"vmhwm_kb": 716956,
"utime_ticks": 634,
"stime_ticks": 35,
"cg_current": 816246784,
"cg_peak": 816246784,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6912,
"msgs": 2501,
"events": 8957,
"pty_bytes": 67206,
"pty_writes": 34,
"rss_kb": 746180,
"pss_kb": 717761,
"private_dirty_kb": 689060,
"vmhwm_kb": 746188,
"utime_ticks": 705,
"stime_ticks": 38,
"cg_current": 847302656,
"cg_peak": 847302656,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7064,
"msgs": null,
"events": null,
"pty_bytes": 67206,
"pty_writes": 34,
"rss_kb": 772976,
"pss_kb": 744557,
"private_dirty_kb": 715856,
"vmhwm_kb": 772976,
"utime_ticks": 721,
"stime_ticks": 40,
"cg_current": 874967040,
"cg_peak": 874967040,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7792,
"msgs": 2601,
"events": 9345,
"pty_bytes": 71615,
"pty_writes": 36,
"rss_kb": 777964,
"pss_kb": 749545,
"private_dirty_kb": 720844,
"vmhwm_kb": 777992,
"utime_ticks": 794,
"stime_ticks": 42,
"cg_current": 880951296,
"cg_peak": 881819648,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8067,
"msgs": null,
"events": null,
"pty_bytes": 71615,
"pty_writes": 36,
"rss_kb": 803124,
"pss_kb": 774705,
"private_dirty_kb": 746004,
"vmhwm_kb": 803124,
"utime_ticks": 822,
"stime_ticks": 43,
"cg_current": 906252288,
"cg_peak": 906711040,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8317,
"msgs": 2701,
"events": 9688,
"pty_bytes": 72934,
"pty_writes": 37,
"rss_kb": 805156,
"pss_kb": 776737,
"private_dirty_kb": 748036,
"vmhwm_kb": 805156,
"utime_ticks": 848,
"stime_ticks": 43,
"cg_current": 908505088,
"cg_peak": 908505088,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9071,
"msgs": null,
"events": null,
"pty_bytes": 73970,
"pty_writes": 38,
"rss_kb": 836284,
"pss_kb": 807865,
"private_dirty_kb": 779164,
"vmhwm_kb": 836308,
"utime_ticks": 924,
"stime_ticks": 47,
"cg_current": 941268992,
"cg_peak": 941268992,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9095,
"msgs": 2801,
"events": 10028,
"pty_bytes": 76531,
"pty_writes": 40,
"rss_kb": 836876,
"pss_kb": 808457,
"private_dirty_kb": 779756,
"vmhwm_kb": 836904,
"utime_ticks": 927,
"stime_ticks": 47,
"cg_current": 941473792,
"cg_peak": 941539328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9100,
"msgs": 2901,
"events": 10398,
"pty_bytes": 76531,
"pty_writes": 40,
"rss_kb": 837236,
"pss_kb": 808817,
"private_dirty_kb": 780116,
"vmhwm_kb": 837304,
"utime_ticks": 927,
"stime_ticks": 47,
"cg_current": 941953024,
"cg_peak": 941953024,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9221,
"msgs": 3000,
"events": 10759,
"pty_bytes": 76531,
"pty_writes": 40,
"rss_kb": 869792,
"pss_kb": 841373,
"private_dirty_kb": 812672,
"vmhwm_kb": 869792,
"utime_ticks": 939,
"stime_ticks": 49,
"cg_current": 976093184,
"cg_peak": 976416768,
"cg_oom_kill": 0
}
],
"events": [
{
"kind": "rpc",
"method": "session.create",
"t_ms": 178
},
{
"kind": "rpc",
"method": "startup.catalog",
"t_ms": 178
},
{
"kind": "rpc",
"method": "model.options",
"t_ms": 178
}
],
"summary": {
"result": "died",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 7,
"signal": 0,
"t": 9717
},
"stream_done": false,
"msgs_streamed": 3000,
"events_streamed": null,
"pty_bytes_total": 79651,
"pty_data_callbacks": 42,
"first_byte_ms": 134,
"session_create_ms": 178,
"stream_start_ms": 1709,
"vmhwm_kb": 869792,
"cg_peak": 976416768,
"drain_max_loop_lag_ms": 14,
"drain_lag_violations": 3,
"drain_ok": false,
"digest": null
},
"pty_tail": "ad_file3.6s (18 lines)5 ⧉ copy ⚕▼Thinking: Velit laboris magna │ │ $terminal Velit laboris magna amet. · 1.7s (2 lines) ◇ read_file Enim adipiscing deserunt nulla. · 1.8s (18 lines) ◦edit_file Anmexcepteurirure nostrud ·1.9s (7 lines)◦gep Voluptate ullamco labore st. · 2.0s (2 lines) ●wb_serch Aliqua cnsecttur officiafugiat.· 2.1s (18 lines)◆write_file Mollit pariaur aue quis. ·2.2s (7 lines) ⧉ copy⚕ ⧉ copy⚕ ◦ed_file Irure nostud tempor ipsum33⚕ - - - const x6 = 31function f1() { return x}⧉ copy⚕Irure nostrud tempor ipsum cupidatat voluptate ullamco labore sit sunt esse aliquip aliqua consectetur. Sed anim excepteur irure nostrud tempor. Nulla duis veniam sed anim excepteur irure. - Labore sit sunt esse aliquip.- Officia fugiat consequat minim elit mollit pariatur.- Aute quis eiusmod lorem.Occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet culpa cillum commodo. Quis eiusmod lorem occaecat reprehenderit exercitation incididunt dolor proident velit laboris magna amet culpa.◦edit_file Irure nostrud tempor ipsum. · 3.3s (7 lines)⚡grep Labore sitsun esse. · 0s 6 ◆write_file Elit mollit pariatur aute. · 1.6s (7 lines)$terminal Occaecat reprehenderit exercitation incididunt. · 1.7s (2 lines) ◇read_file Laboris magna amet culpa. · 1.8s (18 lines) ◦edit_file Adipiscing deserunt nulla duis. · 1.9s (7 lines) ◦ grep Excepteur irure nostrud tempor. · 2.0s (2 lines) ●web_search Ullamco labore sit sunt. · 2.1s (18 lines)◆write_file Consectetur officia fugiat consequat. · 2.2s (7 lines) ⧉ copy ⚕ ⧉ copy ●$terminal Occaecat reprehenderitexercitation incididunt. · 1.7s (2 lines)◇rad_fie Laborismagna amet culpa. · 1.8s (18 lnes) ◦editAdipiscing deserunt nulladuis ·1.9s (7 lines)grep Excepteur irurenotd tempor. · 2.0s (2 lines) ●web_search Ullamco labre sit sunt. · 2.1s (18◆rite_fileConsetetur officia fugiat consequat. · 2.2s (7 lines) ⧉ copy⚕ - - - const x1 = 89function f4() { return x}⧉ copy⚕▍ ◐⧉ copy ⚕ ⚕▼Thinking: Exercitation incididunt dolor││ 7 ⧉ copy ⚕- - - const x5 = 49function f4() { return x} ⧉ copy ⚕◐Thought: Exercitation incididunt dolor - - - const x6 = 50function f0() { return x}⧉ copy● ⧉ copy ⚕ ▼ Thinking: Mollit pariatur aute ││ $terminal Mollit pariatur aute quis. · 1.7s (2 lines)◇read_file Reprehenderit exercitation incididunt dolor. · 1.8s (18 lines) ⚡edit_file Magna amet culpa cillum. · 0s◐- - - const x1 = 15function f0() { return x}Labore sit sunt esse aliquip aliqua consectetur officia fugiat consequat minim elit mollit pariatur. Cupidatat voluptate ullamco labore sit sunt.Mollit pariatur aute quis eiusmod lorem occaecat reprehenderit exercitation.- Reprehenderit exercitation incididunt dolor proident.- Magna amet culpa cillum commodo enim adipiscing.- Deserunt nulla duis veniam.Sed anim excepteur irure nostrud tempor ipsum cupidatat. Nulla duis veniam sed anim excepteur irure nostrud tempor.◦ edit_file1.9s (7 lines)8 ⧉ copy ● web_search Lorem occaecat reprehenderit exercitation. · 2.5s (18 lines) ◆write_file Velit laboris magna amet. · 2.6s (7 lines) $ terminal Enim adipiscing deserunt nulla. · 2.7s (2 lines) ◇read_file Anim excepteur irure nostrud. · 2.8s (18 lines) ◦edit_file Voluptate ullamco labore sit. · 2.9s (7 lines) ⧉ copy ⚕ ⧉ copy ●file:///repo/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`);\n ^\nError: Failed to create optimized buffer: 120x12\n at FFIRenderLib.createOptimizedBuffer (file:///repo/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:14915:13)\n at OptimizedBuffer.create (file:///repo/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:11918:24)\n at TerminalConsole.show (file:///repo/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:21058:44)\n at CliRenderer.<anonymous> (file:///repo/ui-opentui/node_modules/@opentui/core/index-59t85rvq.js:23222:20)\n at process.emit (node:events:509:20)\n at process._fatalException (node:internal/process/execution:190:32)\nNode.js v26.3.0"
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,832 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-capped",
"mode": "mem",
"rep": 0,
"run_id": "mq8nex3d-9yin",
"utc": "2026-06-10T22:36:47.498Z",
"sha": "a939c9a71",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 3000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2475240,
"gw_pid": 2475306,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/user@1001.service/app.slice/hermes-bench-mq8nex3d-9yin.scope",
"load_avg_at_start": [
0.42,
0.48,
0.36
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 52,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 58388,
"pss_kb": 31893,
"private_dirty_kb": 20760,
"vmhwm_kb": 58500,
"utime_ticks": 3,
"stime_ticks": 1,
"cg_current": 23072768,
"cg_peak": 23072768,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1058,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 13,
"rss_kb": 107552,
"pss_kb": 67299,
"private_dirty_kb": 50680,
"vmhwm_kb": 107552,
"utime_ticks": 19,
"stime_ticks": 3,
"cg_current": 64495616,
"cg_peak": 65523712,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1714,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 15,
"rss_kb": 113188,
"pss_kb": 72866,
"private_dirty_kb": 56316,
"vmhwm_kb": 113204,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 80105472,
"cg_peak": 80310272,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1715,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 15,
"rss_kb": 113444,
"pss_kb": 73122,
"private_dirty_kb": 56572,
"vmhwm_kb": 113712,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 80629760,
"cg_peak": 80629760,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1716,
"msgs": 300,
"events": 1051,
"pty_bytes": 31413,
"pty_writes": 15,
"rss_kb": 114016,
"pss_kb": 73694,
"private_dirty_kb": 57144,
"vmhwm_kb": 114204,
"utime_ticks": 21,
"stime_ticks": 3,
"cg_current": 81125376,
"cg_peak": 81125376,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1739,
"msgs": 400,
"events": 1432,
"pty_bytes": 31413,
"pty_writes": 15,
"rss_kb": 123480,
"pss_kb": 83004,
"private_dirty_kb": 66352,
"vmhwm_kb": 123480,
"utime_ticks": 25,
"stime_ticks": 3,
"cg_current": 90808320,
"cg_peak": 91025408,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2069,
"msgs": null,
"events": null,
"pty_bytes": 31413,
"pty_writes": 15,
"rss_kb": 235376,
"pss_kb": 192669,
"private_dirty_kb": 175244,
"vmhwm_kb": 235428,
"utime_ticks": 81,
"stime_ticks": 8,
"cg_current": 204914688,
"cg_peak": 204914688,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2144,
"msgs": 501,
"events": 1792,
"pty_bytes": 32923,
"pty_writes": 16,
"rss_kb": 241388,
"pss_kb": 198681,
"private_dirty_kb": 181256,
"vmhwm_kb": 241388,
"utime_ticks": 89,
"stime_ticks": 8,
"cg_current": 211701760,
"cg_peak": 212193280,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2347,
"msgs": 601,
"events": 2154,
"pty_bytes": 38056,
"pty_writes": 18,
"rss_kb": 275260,
"pss_kb": 232415,
"private_dirty_kb": 214940,
"vmhwm_kb": 275260,
"utime_ticks": 116,
"stime_ticks": 10,
"cg_current": 247214080,
"cg_peak": 247955456,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2398,
"msgs": 701,
"events": 2496,
"pty_bytes": 41134,
"pty_writes": 19,
"rss_kb": 317620,
"pss_kb": 274598,
"private_dirty_kb": 257048,
"vmhwm_kb": 317856,
"utime_ticks": 132,
"stime_ticks": 11,
"cg_current": 290799616,
"cg_peak": 290799616,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2648,
"msgs": 801,
"events": 2857,
"pty_bytes": 46452,
"pty_writes": 21,
"rss_kb": 328340,
"pss_kb": 285308,
"private_dirty_kb": 267768,
"vmhwm_kb": 343212,
"utime_ticks": 173,
"stime_ticks": 13,
"cg_current": 302350336,
"cg_peak": 318373888,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2951,
"msgs": 901,
"events": 3245,
"pty_bytes": 50149,
"pty_writes": 23,
"rss_kb": 365768,
"pss_kb": 322731,
"private_dirty_kb": 305196,
"vmhwm_kb": 365892,
"utime_ticks": 209,
"stime_ticks": 15,
"cg_current": 342200320,
"cg_peak": 342200320,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3076,
"msgs": null,
"events": null,
"pty_bytes": 50149,
"pty_writes": 23,
"rss_kb": 390036,
"pss_kb": 346999,
"private_dirty_kb": 329464,
"vmhwm_kb": 390108,
"utime_ticks": 223,
"stime_ticks": 16,
"cg_current": 366993408,
"cg_peak": 366993408,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3275,
"msgs": 1001,
"events": 3588,
"pty_bytes": 54976,
"pty_writes": 25,
"rss_kb": 396548,
"pss_kb": 353511,
"private_dirty_kb": 335976,
"vmhwm_kb": 396700,
"utime_ticks": 245,
"stime_ticks": 16,
"cg_current": 373891072,
"cg_peak": 373891072,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3525,
"msgs": 1101,
"events": 3928,
"pty_bytes": 57434,
"pty_writes": 26,
"rss_kb": 425268,
"pss_kb": 382231,
"private_dirty_kb": 364696,
"vmhwm_kb": 425268,
"utime_ticks": 273,
"stime_ticks": 17,
"cg_current": 403402752,
"cg_peak": 403402752,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3926,
"msgs": 1201,
"events": 4298,
"pty_bytes": 62694,
"pty_writes": 28,
"rss_kb": 456660,
"pss_kb": 413623,
"private_dirty_kb": 396088,
"vmhwm_kb": 456660,
"utime_ticks": 317,
"stime_ticks": 18,
"cg_current": 436166656,
"cg_peak": 436191232,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4076,
"msgs": null,
"events": null,
"pty_bytes": 65721,
"pty_writes": 29,
"rss_kb": 471824,
"pss_kb": 428787,
"private_dirty_kb": 411252,
"vmhwm_kb": 471836,
"utime_ticks": 334,
"stime_ticks": 19,
"cg_current": 452124672,
"cg_peak": 452124672,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4352,
"msgs": 1300,
"events": 4659,
"pty_bytes": 68403,
"pty_writes": 30,
"rss_kb": 487384,
"pss_kb": 444347,
"private_dirty_kb": 426812,
"vmhwm_kb": 487384,
"utime_ticks": 361,
"stime_ticks": 20,
"cg_current": 468619264,
"cg_peak": 468619264,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4779,
"msgs": 1400,
"events": 5011,
"pty_bytes": 72997,
"pty_writes": 32,
"rss_kb": 517300,
"pss_kb": 474263,
"private_dirty_kb": 456728,
"vmhwm_kb": 517428,
"utime_ticks": 406,
"stime_ticks": 22,
"cg_current": 500121600,
"cg_peak": 500154368,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4804,
"msgs": 1500,
"events": 5384,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 518464,
"pss_kb": 475427,
"private_dirty_kb": 457892,
"vmhwm_kb": 518476,
"utime_ticks": 410,
"stime_ticks": 22,
"cg_current": 500928512,
"cg_peak": 500928512,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4807,
"msgs": 1600,
"events": 5730,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 518568,
"pss_kb": 475531,
"private_dirty_kb": 457996,
"vmhwm_kb": 518592,
"utime_ticks": 410,
"stime_ticks": 22,
"cg_current": 501190656,
"cg_peak": 501190656,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4812,
"msgs": 1700,
"events": 6100,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 519472,
"pss_kb": 476435,
"private_dirty_kb": 458900,
"vmhwm_kb": 519732,
"utime_ticks": 410,
"stime_ticks": 22,
"cg_current": 502239232,
"cg_peak": 502239232,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4816,
"msgs": 1800,
"events": 6455,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 519876,
"pss_kb": 476839,
"private_dirty_kb": 459304,
"vmhwm_kb": 519916,
"utime_ticks": 411,
"stime_ticks": 22,
"cg_current": 502231040,
"cg_peak": 502239232,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4819,
"msgs": 1900,
"events": 6838,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 520188,
"pss_kb": 477151,
"private_dirty_kb": 459616,
"vmhwm_kb": 520280,
"utime_ticks": 411,
"stime_ticks": 22,
"cg_current": 502755328,
"cg_peak": 502755328,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4822,
"msgs": 2000,
"events": 7151,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 520452,
"pss_kb": 477415,
"private_dirty_kb": 459880,
"vmhwm_kb": 520496,
"utime_ticks": 412,
"stime_ticks": 22,
"cg_current": 503017472,
"cg_peak": 503017472,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4824,
"msgs": 2100,
"events": 7532,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 520648,
"pss_kb": 477611,
"private_dirty_kb": 460076,
"vmhwm_kb": 520712,
"utime_ticks": 412,
"stime_ticks": 22,
"cg_current": 503017472,
"cg_peak": 503017472,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5082,
"msgs": null,
"events": null,
"pty_bytes": 73978,
"pty_writes": 33,
"rss_kb": 592436,
"pss_kb": 549399,
"private_dirty_kb": 531864,
"vmhwm_kb": 592976,
"utime_ticks": 467,
"stime_ticks": 25,
"cg_current": 579211264,
"cg_peak": 579211264,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5886,
"msgs": 2201,
"events": 7892,
"pty_bytes": 76859,
"pty_writes": 35,
"rss_kb": 690940,
"pss_kb": 647903,
"private_dirty_kb": 630368,
"vmhwm_kb": 690964,
"utime_ticks": 554,
"stime_ticks": 29,
"cg_current": 680751104,
"cg_peak": 680751104,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6087,
"msgs": null,
"events": null,
"pty_bytes": 76859,
"pty_writes": 35,
"rss_kb": 720160,
"pss_kb": 677123,
"private_dirty_kb": 659588,
"vmhwm_kb": 720248,
"utime_ticks": 576,
"stime_ticks": 32,
"cg_current": 711356416,
"cg_peak": 711356416,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6414,
"msgs": 2301,
"events": 8254,
"pty_bytes": 79226,
"pty_writes": 37,
"rss_kb": 724996,
"pss_kb": 681959,
"private_dirty_kb": 664424,
"vmhwm_kb": 724996,
"utime_ticks": 611,
"stime_ticks": 32,
"cg_current": 716890112,
"cg_peak": 716890112,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6418,
"msgs": 2401,
"events": 8596,
"pty_bytes": 79226,
"pty_writes": 37,
"rss_kb": 724996,
"pss_kb": 681959,
"private_dirty_kb": 664424,
"vmhwm_kb": 724996,
"utime_ticks": 611,
"stime_ticks": 32,
"cg_current": 716890112,
"cg_peak": 716890112,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6422,
"msgs": 2501,
"events": 8957,
"pty_bytes": 79226,
"pty_writes": 37,
"rss_kb": 724996,
"pss_kb": 681959,
"private_dirty_kb": 664424,
"vmhwm_kb": 724996,
"utime_ticks": 612,
"stime_ticks": 32,
"cg_current": 716890112,
"cg_peak": 716890112,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6425,
"msgs": 2601,
"events": 9345,
"pty_bytes": 79226,
"pty_writes": 37,
"rss_kb": 724996,
"pss_kb": 681959,
"private_dirty_kb": 664424,
"vmhwm_kb": 725252,
"utime_ticks": 612,
"stime_ticks": 32,
"cg_current": 717152256,
"cg_peak": 717152256,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7094,
"msgs": null,
"events": null,
"pty_bytes": 79226,
"pty_writes": 37,
"rss_kb": 791260,
"pss_kb": 748223,
"private_dirty_kb": 730688,
"vmhwm_kb": 791264,
"utime_ticks": 685,
"stime_ticks": 38,
"cg_current": 786272256,
"cg_peak": 786419712,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7193,
"msgs": 2701,
"events": 9688,
"pty_bytes": 82734,
"pty_writes": 39,
"rss_kb": 791972,
"pss_kb": 748935,
"private_dirty_kb": 731400,
"vmhwm_kb": 792180,
"utime_ticks": 696,
"stime_ticks": 38,
"cg_current": 787808256,
"cg_peak": 787808256,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7197,
"msgs": 2801,
"events": 10028,
"pty_bytes": 82734,
"pty_writes": 39,
"rss_kb": 792180,
"pss_kb": 749143,
"private_dirty_kb": 731608,
"vmhwm_kb": 792180,
"utime_ticks": 696,
"stime_ticks": 38,
"cg_current": 787808256,
"cg_peak": 787808256,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7469,
"msgs": 2901,
"events": 10398,
"pty_bytes": 82734,
"pty_writes": 39,
"rss_kb": 820308,
"pss_kb": 777271,
"private_dirty_kb": 759736,
"vmhwm_kb": 828512,
"utime_ticks": 725,
"stime_ticks": 40,
"cg_current": 817610752,
"cg_peak": 826732544,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8096,
"msgs": null,
"events": null,
"pty_bytes": 84634,
"pty_writes": 40,
"rss_kb": 851796,
"pss_kb": 808759,
"private_dirty_kb": 791224,
"vmhwm_kb": 851796,
"utime_ticks": 788,
"stime_ticks": 43,
"cg_current": 850386944,
"cg_peak": 850386944,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8148,
"msgs": 3000,
"events": 10759,
"pty_bytes": 84869,
"pty_writes": 41,
"rss_kb": 853500,
"pss_kb": 810463,
"private_dirty_kb": 792928,
"vmhwm_kb": 853500,
"utime_ticks": 793,
"stime_ticks": 43,
"cg_current": 852226048,
"cg_peak": 852316160,
"cg_oom_kill": 0
},
{
"kind": "done",
"t_ms": 8154,
"msgs": 3000,
"events": 10759,
"pty_bytes": 84869,
"pty_writes": 41,
"rss_kb": 853500,
"pss_kb": 810463,
"private_dirty_kb": 792928,
"vmhwm_kb": 853500,
"utime_ticks": 793,
"stime_ticks": 43,
"cg_current": 852389888,
"cg_peak": 852422656,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9099,
"msgs": 3000,
"events": null,
"pty_bytes": 89936,
"pty_writes": 46,
"rss_kb": 880800,
"pss_kb": 837763,
"private_dirty_kb": 820228,
"vmhwm_kb": 880800,
"utime_ticks": 887,
"stime_ticks": 48,
"cg_current": 880590848,
"cg_peak": 880893952,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 10102,
"msgs": 3000,
"events": null,
"pty_bytes": 90008,
"pty_writes": 47,
"rss_kb": 880800,
"pss_kb": 837763,
"private_dirty_kb": 820228,
"vmhwm_kb": 880800,
"utime_ticks": 887,
"stime_ticks": 48,
"cg_current": 880443392,
"cg_peak": 880893952,
"cg_oom_kill": 0
},
{
"kind": "final",
"t_ms": 10336,
"msgs": 3000,
"events": 10759,
"pty_bytes": 90008,
"pty_writes": 47,
"rss_kb": 880800,
"pss_kb": 837763,
"private_dirty_kb": 820228,
"vmhwm_kb": 880800,
"utime_ticks": 887,
"stime_ticks": 48,
"cg_current": 880353280,
"cg_peak": 880893952,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 11111,
"msgs": 3000,
"events": null,
"pty_bytes": 94096,
"pty_writes": 48,
"rss_kb": 761480,
"pss_kb": 718443,
"private_dirty_kb": 700908,
"vmhwm_kb": 880000,
"utime_ticks": 972,
"stime_ticks": 61,
"cg_current": 758190080,
"cg_peak": 881381376,
"cg_oom_kill": 0
}
],
"events": [
{
"kind": "rpc",
"method": "session.create",
"t_ms": 202
},
{
"kind": "rpc",
"method": "startup.catalog",
"t_ms": 202
},
{
"kind": "rpc",
"method": "model.options",
"t_ms": 202
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 11408
},
"stream_done": true,
"msgs_streamed": 3000,
"events_streamed": 10759,
"pty_bytes_total": 94216,
"pty_data_callbacks": 50,
"first_byte_ms": 160,
"session_create_ms": 202,
"stream_start_ms": 1712,
"vmhwm_kb": 880000,
"cg_peak": 881381376,
"drain_max_loop_lag_ms": 24,
"drain_lag_violations": 4,
"drain_ok": false,
"digest": null
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,849 +0,0 @@
{
"meta": {
"cell": "mem3000",
"ui": "opentui",
"config": "otui-uncapped",
"mode": "mem",
"rep": 0,
"run_id": "mq8nfdmr-dz7x",
"utc": "2026-06-10T22:37:08.931Z",
"sha": "a939c9a71",
"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": "2G",
"container_cap": false,
"container_memory": null,
"opentui_cap": 100000,
"fixture": {
"path": "/home/daimon/github/worktrees/hermes-agent/lively-thrush/hermes-agent/bench/.cache/fixture-3000.ndjson",
"msgs": 3000,
"sha256": "0df05a04a611dda68aa07865f21c45b08edc78e0a71d4c8cb2b674729778d96d"
},
"sample_every": 100,
"mode_params": {},
"ui_pid": 2475728,
"gw_pid": 2475738,
"cgroup": "/sys/fs/cgroup/user.slice/user-1001.slice/user@1001.service/app.slice/hermes-bench-mq8nfdmr-dz7x.scope",
"load_avg_at_start": [
0.6,
0.52,
0.38
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 52,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 59164,
"pss_kb": 32615,
"private_dirty_kb": 21440,
"vmhwm_kb": 59356,
"utime_ticks": 3,
"stime_ticks": 0,
"cg_current": 24412160,
"cg_peak": 24412160,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 1064,
"msgs": null,
"events": null,
"pty_bytes": 28911,
"pty_writes": 13,
"rss_kb": 104692,
"pss_kb": 64433,
"private_dirty_kb": 47852,
"vmhwm_kb": 107208,
"utime_ticks": 17,
"stime_ticks": 3,
"cg_current": 61648896,
"cg_peak": 66031616,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1699,
"msgs": 100,
"events": 355,
"pty_bytes": 31413,
"pty_writes": 16,
"rss_kb": 106476,
"pss_kb": 66196,
"private_dirty_kb": 49636,
"vmhwm_kb": 107208,
"utime_ticks": 19,
"stime_ticks": 3,
"cg_current": 72019968,
"cg_peak": 72019968,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1725,
"msgs": 200,
"events": 738,
"pty_bytes": 31413,
"pty_writes": 16,
"rss_kb": 111420,
"pss_kb": 71033,
"private_dirty_kb": 54452,
"vmhwm_kb": 111444,
"utime_ticks": 22,
"stime_ticks": 3,
"cg_current": 77451264,
"cg_peak": 77451264,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 1926,
"msgs": 300,
"events": 1051,
"pty_bytes": 32136,
"pty_writes": 17,
"rss_kb": 184892,
"pss_kb": 142211,
"private_dirty_kb": 124792,
"vmhwm_kb": 184892,
"utime_ticks": 57,
"stime_ticks": 6,
"cg_current": 152375296,
"cg_peak": 152403968,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2078,
"msgs": 400,
"events": 1432,
"pty_bytes": 36353,
"pty_writes": 19,
"rss_kb": 217036,
"pss_kb": 174216,
"private_dirty_kb": 156748,
"vmhwm_kb": 217164,
"utime_ticks": 78,
"stime_ticks": 7,
"cg_current": 185921536,
"cg_peak": 185921536,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 2079,
"msgs": null,
"events": null,
"pty_bytes": 36353,
"pty_writes": 19,
"rss_kb": 218040,
"pss_kb": 175220,
"private_dirty_kb": 157752,
"vmhwm_kb": 218152,
"utime_ticks": 78,
"stime_ticks": 7,
"cg_current": 186937344,
"cg_peak": 186937344,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2102,
"msgs": 501,
"events": 1792,
"pty_bytes": 37549,
"pty_writes": 20,
"rss_kb": 232004,
"pss_kb": 189105,
"private_dirty_kb": 171588,
"vmhwm_kb": 232120,
"utime_ticks": 86,
"stime_ticks": 8,
"cg_current": 202698752,
"cg_peak": 202698752,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2104,
"msgs": 601,
"events": 2154,
"pty_bytes": 37549,
"pty_writes": 20,
"rss_kb": 232320,
"pss_kb": 189421,
"private_dirty_kb": 171904,
"vmhwm_kb": 232340,
"utime_ticks": 86,
"stime_ticks": 8,
"cg_current": 202960896,
"cg_peak": 202960896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2105,
"msgs": 701,
"events": 2496,
"pty_bytes": 37549,
"pty_writes": 20,
"rss_kb": 228660,
"pss_kb": 185761,
"private_dirty_kb": 168244,
"vmhwm_kb": 231604,
"utime_ticks": 86,
"stime_ticks": 8,
"cg_current": 199286784,
"cg_peak": 202960896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2106,
"msgs": 801,
"events": 2857,
"pty_bytes": 37549,
"pty_writes": 20,
"rss_kb": 229072,
"pss_kb": 186173,
"private_dirty_kb": 168656,
"vmhwm_kb": 231604,
"utime_ticks": 86,
"stime_ticks": 8,
"cg_current": 199811072,
"cg_peak": 202960896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2107,
"msgs": 901,
"events": 3245,
"pty_bytes": 37549,
"pty_writes": 20,
"rss_kb": 229416,
"pss_kb": 186517,
"private_dirty_kb": 169000,
"vmhwm_kb": 231604,
"utime_ticks": 86,
"stime_ticks": 8,
"cg_current": 199827456,
"cg_peak": 202960896,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2459,
"msgs": 1001,
"events": 3588,
"pty_bytes": 37549,
"pty_writes": 20,
"rss_kb": 353952,
"pss_kb": 310940,
"private_dirty_kb": 293412,
"vmhwm_kb": 354000,
"utime_ticks": 164,
"stime_ticks": 14,
"cg_current": 329641984,
"cg_peak": 329641984,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2688,
"msgs": 1101,
"events": 3928,
"pty_bytes": 39272,
"pty_writes": 21,
"rss_kb": 386872,
"pss_kb": 343860,
"private_dirty_kb": 326332,
"vmhwm_kb": 387480,
"utime_ticks": 190,
"stime_ticks": 16,
"cg_current": 365137920,
"cg_peak": 365137920,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2989,
"msgs": 1201,
"events": 4298,
"pty_bytes": 41741,
"pty_writes": 23,
"rss_kb": 431544,
"pss_kb": 387634,
"private_dirty_kb": 371004,
"vmhwm_kb": 431552,
"utime_ticks": 227,
"stime_ticks": 17,
"cg_current": 410570752,
"cg_peak": 410570752,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2992,
"msgs": 1300,
"events": 4659,
"pty_bytes": 41741,
"pty_writes": 23,
"rss_kb": 431828,
"pss_kb": 387918,
"private_dirty_kb": 371288,
"vmhwm_kb": 431936,
"utime_ticks": 227,
"stime_ticks": 17,
"cg_current": 411095040,
"cg_peak": 411095040,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2995,
"msgs": 1400,
"events": 5011,
"pty_bytes": 41741,
"pty_writes": 23,
"rss_kb": 432044,
"pss_kb": 388134,
"private_dirty_kb": 371504,
"vmhwm_kb": 432056,
"utime_ticks": 228,
"stime_ticks": 17,
"cg_current": 411095040,
"cg_peak": 411095040,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2997,
"msgs": 1500,
"events": 5384,
"pty_bytes": 41741,
"pty_writes": 23,
"rss_kb": 432240,
"pss_kb": 388330,
"private_dirty_kb": 371700,
"vmhwm_kb": 432336,
"utime_ticks": 228,
"stime_ticks": 17,
"cg_current": 411332608,
"cg_peak": 411332608,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 2999,
"msgs": 1600,
"events": 5730,
"pty_bytes": 41741,
"pty_writes": 23,
"rss_kb": 432488,
"pss_kb": 388578,
"private_dirty_kb": 371948,
"vmhwm_kb": 432572,
"utime_ticks": 228,
"stime_ticks": 17,
"cg_current": 411594752,
"cg_peak": 411594752,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 3089,
"msgs": null,
"events": null,
"pty_bytes": 41741,
"pty_writes": 23,
"rss_kb": 463200,
"pss_kb": 419290,
"private_dirty_kb": 402660,
"vmhwm_kb": 463292,
"utime_ticks": 240,
"stime_ticks": 18,
"cg_current": 443895808,
"cg_peak": 443895808,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3316,
"msgs": 1700,
"events": 6100,
"pty_bytes": 41741,
"pty_writes": 23,
"rss_kb": 541412,
"pss_kb": 497502,
"private_dirty_kb": 480872,
"vmhwm_kb": 541524,
"utime_ticks": 268,
"stime_ticks": 21,
"cg_current": 525774848,
"cg_peak": 525901824,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 3993,
"msgs": 1800,
"events": 6455,
"pty_bytes": 45651,
"pty_writes": 25,
"rss_kb": 600748,
"pss_kb": 556838,
"private_dirty_kb": 540208,
"vmhwm_kb": 600748,
"utime_ticks": 338,
"stime_ticks": 24,
"cg_current": 587055104,
"cg_peak": 587055104,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 4095,
"msgs": null,
"events": null,
"pty_bytes": 45651,
"pty_writes": 25,
"rss_kb": 601024,
"pss_kb": 557114,
"private_dirty_kb": 540484,
"vmhwm_kb": 601024,
"utime_ticks": 349,
"stime_ticks": 24,
"cg_current": 587452416,
"cg_peak": 587452416,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4598,
"msgs": 1900,
"events": 6838,
"pty_bytes": 51436,
"pty_writes": 27,
"rss_kb": 632832,
"pss_kb": 588922,
"private_dirty_kb": 572292,
"vmhwm_kb": 632880,
"utime_ticks": 402,
"stime_ticks": 25,
"cg_current": 621420544,
"cg_peak": 621420544,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4623,
"msgs": 2000,
"events": 7151,
"pty_bytes": 51865,
"pty_writes": 28,
"rss_kb": 635152,
"pss_kb": 591242,
"private_dirty_kb": 574612,
"vmhwm_kb": 635228,
"utime_ticks": 405,
"stime_ticks": 25,
"cg_current": 623579136,
"cg_peak": 623710208,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 4725,
"msgs": 2100,
"events": 7532,
"pty_bytes": 51865,
"pty_writes": 28,
"rss_kb": 663316,
"pss_kb": 619406,
"private_dirty_kb": 602776,
"vmhwm_kb": 663352,
"utime_ticks": 416,
"stime_ticks": 27,
"cg_current": 653373440,
"cg_peak": 653520896,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 5103,
"msgs": null,
"events": null,
"pty_bytes": 54132,
"pty_writes": 29,
"rss_kb": 697048,
"pss_kb": 653138,
"private_dirty_kb": 636508,
"vmhwm_kb": 697040,
"utime_ticks": 457,
"stime_ticks": 27,
"cg_current": 688340992,
"cg_peak": 688578560,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 5502,
"msgs": 2201,
"events": 7892,
"pty_bytes": 55529,
"pty_writes": 30,
"rss_kb": 709588,
"pss_kb": 665678,
"private_dirty_kb": 649048,
"vmhwm_kb": 709588,
"utime_ticks": 497,
"stime_ticks": 29,
"cg_current": 700932096,
"cg_peak": 700932096,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 6104,
"msgs": null,
"events": null,
"pty_bytes": 57349,
"pty_writes": 31,
"rss_kb": 739300,
"pss_kb": 695390,
"private_dirty_kb": 678760,
"vmhwm_kb": 739300,
"utime_ticks": 563,
"stime_ticks": 32,
"cg_current": 731607040,
"cg_peak": 731607040,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6232,
"msgs": 2301,
"events": 8254,
"pty_bytes": 58331,
"pty_writes": 32,
"rss_kb": 739648,
"pss_kb": 695738,
"private_dirty_kb": 679108,
"vmhwm_kb": 739648,
"utime_ticks": 576,
"stime_ticks": 32,
"cg_current": 732422144,
"cg_peak": 732553216,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 6480,
"msgs": 2401,
"events": 8596,
"pty_bytes": 59214,
"pty_writes": 33,
"rss_kb": 741748,
"pss_kb": 697838,
"private_dirty_kb": 681208,
"vmhwm_kb": 741756,
"utime_ticks": 601,
"stime_ticks": 32,
"cg_current": 734691328,
"cg_peak": 734736384,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 7106,
"msgs": null,
"events": null,
"pty_bytes": 60913,
"pty_writes": 34,
"rss_kb": 762584,
"pss_kb": 718674,
"private_dirty_kb": 702044,
"vmhwm_kb": 762584,
"utime_ticks": 665,
"stime_ticks": 34,
"cg_current": 756621312,
"cg_peak": 756621312,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 7231,
"msgs": 2501,
"events": 8957,
"pty_bytes": 63322,
"pty_writes": 35,
"rss_kb": 762828,
"pss_kb": 718918,
"private_dirty_kb": 702288,
"vmhwm_kb": 762836,
"utime_ticks": 678,
"stime_ticks": 34,
"cg_current": 757383168,
"cg_peak": 757383168,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8009,
"msgs": 2601,
"events": 9345,
"pty_bytes": 68595,
"pty_writes": 37,
"rss_kb": 784084,
"pss_kb": 740174,
"private_dirty_kb": 723544,
"vmhwm_kb": 784088,
"utime_ticks": 757,
"stime_ticks": 38,
"cg_current": 779403264,
"cg_peak": 779493376,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 8111,
"msgs": null,
"events": null,
"pty_bytes": 68595,
"pty_writes": 37,
"rss_kb": 795236,
"pss_kb": 751326,
"private_dirty_kb": 734696,
"vmhwm_kb": 799008,
"utime_ticks": 767,
"stime_ticks": 39,
"cg_current": 791212032,
"cg_peak": 795938816,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 8665,
"msgs": 2701,
"events": 9688,
"pty_bytes": 73256,
"pty_writes": 39,
"rss_kb": 804884,
"pss_kb": 760974,
"private_dirty_kb": 744344,
"vmhwm_kb": 804896,
"utime_ticks": 823,
"stime_ticks": 41,
"cg_current": 801591296,
"cg_peak": 801591296,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 9119,
"msgs": null,
"events": null,
"pty_bytes": 73256,
"pty_writes": 39,
"rss_kb": 825440,
"pss_kb": 781530,
"private_dirty_kb": 764900,
"vmhwm_kb": 825440,
"utime_ticks": 869,
"stime_ticks": 43,
"cg_current": 822652928,
"cg_peak": 823140352,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9143,
"msgs": 2801,
"events": 10028,
"pty_bytes": 76788,
"pty_writes": 41,
"rss_kb": 825928,
"pss_kb": 782018,
"private_dirty_kb": 765388,
"vmhwm_kb": 825960,
"utime_ticks": 877,
"stime_ticks": 43,
"cg_current": 823140352,
"cg_peak": 823308288,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9170,
"msgs": 2901,
"events": 10398,
"pty_bytes": 76788,
"pty_writes": 41,
"rss_kb": 833412,
"pss_kb": 789502,
"private_dirty_kb": 772872,
"vmhwm_kb": 833424,
"utime_ticks": 890,
"stime_ticks": 44,
"cg_current": 831004672,
"cg_peak": 831004672,
"cg_oom_kill": 0
},
{
"kind": "boundary",
"t_ms": 9669,
"msgs": 3000,
"events": 10759,
"pty_bytes": 78873,
"pty_writes": 42,
"rss_kb": 848484,
"pss_kb": 804574,
"private_dirty_kb": 787944,
"vmhwm_kb": 853932,
"utime_ticks": 959,
"stime_ticks": 47,
"cg_current": 847081472,
"cg_peak": 853630976,
"cg_oom_kill": 0
},
{
"kind": "done",
"t_ms": 9675,
"msgs": 3000,
"events": 10759,
"pty_bytes": 78873,
"pty_writes": 42,
"rss_kb": 848484,
"pss_kb": 804574,
"private_dirty_kb": 787944,
"vmhwm_kb": 853932,
"utime_ticks": 959,
"stime_ticks": 47,
"cg_current": 847081472,
"cg_peak": 853630976,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 10123,
"msgs": 3000,
"events": null,
"pty_bytes": 79683,
"pty_writes": 43,
"rss_kb": 849580,
"pss_kb": 805670,
"private_dirty_kb": 789040,
"vmhwm_kb": 853932,
"utime_ticks": 1006,
"stime_ticks": 49,
"cg_current": 847863808,
"cg_peak": 853630976,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 11133,
"msgs": 3000,
"events": null,
"pty_bytes": 85164,
"pty_writes": 47,
"rss_kb": 849448,
"pss_kb": 805538,
"private_dirty_kb": 788908,
"vmhwm_kb": 853932,
"utime_ticks": 1056,
"stime_ticks": 50,
"cg_current": 847593472,
"cg_peak": 853630976,
"cg_oom_kill": 0
},
{
"kind": "final",
"t_ms": 12119,
"msgs": 3000,
"events": 10759,
"pty_bytes": 85236,
"pty_writes": 48,
"rss_kb": 849448,
"pss_kb": 805538,
"private_dirty_kb": 788908,
"vmhwm_kb": 853932,
"utime_ticks": 1057,
"stime_ticks": 50,
"cg_current": 847593472,
"cg_peak": 853630976,
"cg_oom_kill": 0
},
{
"kind": "periodic",
"t_ms": 12140,
"msgs": 3000,
"events": null,
"pty_bytes": 85236,
"pty_writes": 48,
"rss_kb": 849456,
"pss_kb": 805546,
"private_dirty_kb": 788916,
"vmhwm_kb": 853932,
"utime_ticks": 1059,
"stime_ticks": 50,
"cg_current": 847855616,
"cg_peak": 853630976,
"cg_oom_kill": 0
}
],
"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": 13118
},
"stream_done": true,
"msgs_streamed": 3000,
"events_streamed": 10759,
"pty_bytes_total": 89444,
"pty_data_callbacks": 51,
"first_byte_ms": 142,
"session_create_ms": 177,
"stream_start_ms": 1698,
"vmhwm_kb": 853932,
"cg_peak": 853630976,
"drain_max_loop_lag_ms": 14,
"drain_lag_violations": 2,
"drain_ok": false,
"digest": null
}
}

View File

@@ -1,405 +0,0 @@
{
"meta": {
"cell": "gate",
"ui": "ink",
"config": "ink",
"mode": "digest",
"rep": 0,
"run_id": "mq8w0mrq-zq29",
"utc": "2026-06-11T02:37:37.478Z",
"sha": "805e08081",
"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": 2716268,
"gw_pid": 2716276,
"cgroup": null,
"load_avg_at_start": [
0.25,
0.27,
0.2
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 29,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56548,
"pss_kb": 30399,
"private_dirty_kb": 19112,
"vmhwm_kb": 56604,
"utime_ticks": 2,
"stime_ticks": 0
},
{
"kind": "periodic",
"t_ms": 1035,
"msgs": null,
"events": null,
"pty_bytes": 6604,
"pty_writes": 12,
"rss_kb": 108384,
"pss_kb": 69262,
"private_dirty_kb": 49176,
"vmhwm_kb": 108384,
"utime_ticks": 23,
"stime_ticks": 3
},
{
"kind": "boundary",
"t_ms": 1466,
"msgs": 100,
"events": 355,
"pty_bytes": 14568,
"pty_writes": 16,
"rss_kb": 125968,
"pss_kb": 86789,
"private_dirty_kb": 66036,
"vmhwm_kb": 126076,
"utime_ticks": 32,
"stime_ticks": 4
},
{
"kind": "boundary",
"t_ms": 1516,
"msgs": 200,
"events": 738,
"pty_bytes": 18594,
"pty_writes": 17,
"rss_kb": 159396,
"pss_kb": 120153,
"private_dirty_kb": 99464,
"vmhwm_kb": 159404,
"utime_ticks": 41,
"stime_ticks": 5
},
{
"kind": "boundary",
"t_ms": 1568,
"msgs": 300,
"events": 1051,
"pty_bytes": 22497,
"pty_writes": 18,
"rss_kb": 195068,
"pss_kb": 155793,
"private_dirty_kb": 135072,
"vmhwm_kb": 195416,
"utime_ticks": 52,
"stime_ticks": 5
},
{
"kind": "done",
"t_ms": 1570,
"msgs": 300,
"events": 1051,
"pty_bytes": 22497,
"pty_writes": 18,
"rss_kb": 195424,
"pss_kb": 156149,
"private_dirty_kb": 135428,
"vmhwm_kb": 195456,
"utime_ticks": 52,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 2045,
"msgs": 300,
"events": null,
"pty_bytes": 33995,
"pty_writes": 22,
"rss_kb": 185100,
"pss_kb": 145793,
"private_dirty_kb": 125104,
"vmhwm_kb": 194764,
"utime_ticks": 61,
"stime_ticks": 6
},
{
"kind": "final",
"t_ms": 2931,
"msgs": 300,
"events": 1051,
"pty_bytes": 34040,
"pty_writes": 23,
"rss_kb": 185108,
"pss_kb": 145801,
"private_dirty_kb": 125112,
"vmhwm_kb": 194764,
"utime_ticks": 61,
"stime_ticks": 6
},
{
"kind": "periodic",
"t_ms": 3059,
"msgs": 300,
"events": null,
"pty_bytes": 37554,
"pty_writes": 25,
"rss_kb": 185416,
"pss_kb": 146109,
"private_dirty_kb": 125420,
"vmhwm_kb": 194764,
"utime_ticks": 64,
"stime_ticks": 6
},
{
"kind": "periodic",
"t_ms": 4066,
"msgs": 300,
"events": null,
"pty_bytes": 48264,
"pty_writes": 31,
"rss_kb": 185472,
"pss_kb": 146165,
"private_dirty_kb": 125476,
"vmhwm_kb": 194764,
"utime_ticks": 66,
"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": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "session.create",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 227
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1439
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1439
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1466
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1466
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1489
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1514
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1516
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1539
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1539
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1570
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1589
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1589
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1614
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1614
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1614
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1639
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1639
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 1715
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2956
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2956
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3057
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3107
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 3233
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3335
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3335
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3435
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3511
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 4545
},
"stream_done": true,
"msgs_streamed": 300,
"events_streamed": 1051,
"pty_bytes_total": 48490,
"pty_data_callbacks": 40,
"first_byte_ms": 69,
"session_create_ms": 227,
"stream_start_ms": 1439,
"vmhwm_kb": 194764,
"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"
}

View File

@@ -1,405 +0,0 @@
{
"meta": {
"cell": "gate",
"ui": "ink",
"config": "ink",
"mode": "digest",
"rep": 1,
"run_id": "mq8w0y42-742j",
"utc": "2026-06-11T02:37:52.178Z",
"sha": "805e08081",
"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": 2716655,
"gw_pid": 2716663,
"cgroup": null,
"load_avg_at_start": [
0.33,
0.29,
0.2
],
"instrumented": false
},
"samples": [
{
"kind": "periodic",
"t_ms": 26,
"msgs": null,
"events": null,
"pty_bytes": 0,
"pty_writes": 0,
"rss_kb": 56588,
"pss_kb": 30443,
"private_dirty_kb": 19156,
"vmhwm_kb": 56616,
"utime_ticks": 1,
"stime_ticks": 1
},
{
"kind": "periodic",
"t_ms": 1032,
"msgs": null,
"events": null,
"pty_bytes": 6602,
"pty_writes": 11,
"rss_kb": 107700,
"pss_kb": 68558,
"private_dirty_kb": 48572,
"vmhwm_kb": 107700,
"utime_ticks": 23,
"stime_ticks": 3
},
{
"kind": "boundary",
"t_ms": 1438,
"msgs": 100,
"events": 355,
"pty_bytes": 10173,
"pty_writes": 14,
"rss_kb": 125840,
"pss_kb": 86605,
"private_dirty_kb": 65928,
"vmhwm_kb": 125856,
"utime_ticks": 31,
"stime_ticks": 3
},
{
"kind": "boundary",
"t_ms": 1513,
"msgs": 200,
"events": 738,
"pty_bytes": 21551,
"pty_writes": 17,
"rss_kb": 159976,
"pss_kb": 120667,
"private_dirty_kb": 100000,
"vmhwm_kb": 160032,
"utime_ticks": 44,
"stime_ticks": 4
},
{
"kind": "boundary",
"t_ms": 1515,
"msgs": 300,
"events": 1051,
"pty_bytes": 21551,
"pty_writes": 17,
"rss_kb": 160116,
"pss_kb": 120807,
"private_dirty_kb": 100140,
"vmhwm_kb": 160440,
"utime_ticks": 44,
"stime_ticks": 4
},
{
"kind": "done",
"t_ms": 1515,
"msgs": 300,
"events": 1051,
"pty_bytes": 21551,
"pty_writes": 17,
"rss_kb": 160512,
"pss_kb": 121203,
"private_dirty_kb": 100536,
"vmhwm_kb": 160676,
"utime_ticks": 44,
"stime_ticks": 4
},
{
"kind": "periodic",
"t_ms": 2042,
"msgs": 300,
"events": null,
"pty_bytes": 32521,
"pty_writes": 23,
"rss_kb": 177228,
"pss_kb": 137919,
"private_dirty_kb": 117252,
"vmhwm_kb": 184556,
"utime_ticks": 60,
"stime_ticks": 5
},
{
"kind": "final",
"t_ms": 2914,
"msgs": 300,
"events": 1051,
"pty_bytes": 32566,
"pty_writes": 24,
"rss_kb": 177240,
"pss_kb": 137931,
"private_dirty_kb": 117264,
"vmhwm_kb": 184556,
"utime_ticks": 60,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 3055,
"msgs": 300,
"events": null,
"pty_bytes": 36080,
"pty_writes": 26,
"rss_kb": 180628,
"pss_kb": 141319,
"private_dirty_kb": 120652,
"vmhwm_kb": 184556,
"utime_ticks": 65,
"stime_ticks": 5
},
{
"kind": "periodic",
"t_ms": 4060,
"msgs": 300,
"events": null,
"pty_bytes": 46790,
"pty_writes": 32,
"rss_kb": 181216,
"pss_kb": 141907,
"private_dirty_kb": 121240,
"vmhwm_kb": 184556,
"utime_ticks": 70,
"stime_ticks": 5
}
],
"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": 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": 1410
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1435
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1435
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1438
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1460
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1460
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1486
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1513
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1513
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1515
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1538
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 1563
},
{
"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": 1588
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 1713
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2925
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 2925
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3027
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3077
},
{
"kind": "rpc",
"method": "session.active_list",
"t_ms": 3203
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3328
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3328
},
{
"kind": "rpc",
"method": "terminal.resize",
"t_ms": 3428
},
{
"kind": "rpc",
"method": "config.get",
"t_ms": 3478
}
],
"summary": {
"result": "completed",
"cap_hit": false,
"cap_hit_basis": null,
"at_messages": null,
"exit": {
"exitCode": 0,
"signal": 0,
"t": 4525
},
"stream_done": true,
"msgs_streamed": 300,
"events_streamed": 1051,
"pty_bytes_total": 47016,
"pty_data_callbacks": 34,
"first_byte_ms": 61,
"session_create_ms": 200,
"stream_start_ms": 1410,
"vmhwm_kb": 184556,
"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"
}

Some files were not shown because too many files have changed in this diff Show More