hermes-agent/hermes_cli
alt-glitch 6e3c393ef9 opentui(v6): configurable V8 heap (HERMES_TUI_HEAP_MB) + --expose-gc (W1)
Low-mem enabler — default unchanged (8192 for both engines), low blast radius.

- Heap knob honored by BOTH engines via the shared NODE_OPTIONS injection:
  HERMES_TUI_HEAP_MB env (highest precedence, matches the HERMES_TUI_ENGINE
  env-first pattern) > display.tui_heap_mb config (minimal early YAML read,
  mirrors _config_tui_engine_early) > the existing cgroup-aware default. The
  override REPLACES the 8192 default inside _resolve_tui_heap_mb (D3): low =
  the low-mem opt-in, high = raise the ceiling. The cgroup-fit 75% clamp still
  applies on top, so an override never exceeds the container. A non-secret
  behavioral setting → config.yaml, NOT the denylisted NODE_OPTIONS bridge.

- --expose-gc added to the OpenTUI argv in _make_opentui_argv (D4, parity with
  Ink which already has it). Must be an argv flag — Node rejects --expose-gc in
  NODE_OPTIONS. Makes global.gc() a real call so the engine's GC hooks
  (/heapdump; W2's proactive idle GC) work instead of silent no-ops. Verified:
  `node --expose-gc -e 'typeof global.gc'` → "function" (vs "undefined").

Tests: TestHeapOverride (env>config precedence, cgroup clamp on a too-high
override, low override honored under a big container, garbage/non-positive
fall-through) + TestExposeGcOnOpenTuiArgv. test_tui_heap_sizing.py 29 passed.
2026-06-14 14:15:32 +05:30
..
dashboard_auth tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
proxy chore: remove dead code — 28 unused functions/classes across 16 files 2026-05-29 04:22:27 -07:00
subcommands tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
__init__.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
_parser.py tui_gateway+cli: session.list filters + session.peek + bare --resume picker sentinel 2026-06-10 21:31:59 +05:30
_subprocess_compat.py fix(windows): retry watcher Popen without breakaway when parent job denies it, plus regression tests for the breakaway bit (#40956) 2026-06-07 01:21:58 -07:00
active_sessions.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
auth.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
auth_commands.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
azure_detect.py
backup.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
banner.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
blueprint_cmd.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
browser_connect.py
build_info.py fix(docker): bake build-time git SHA into the image 2026-05-28 15:14:05 +10:00
bundles.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
callbacks.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
checkpoints.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
claw.py fix: batch of small robustness/correctness fixes from @kyssta-exe 2026-06-01 19:51:03 -07:00
cli_agent_setup_mixin.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
cli_commands_mixin.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
cli_output.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
clipboard.py fix(clipboard): only read PNG signature bytes, not entire file 2026-05-13 22:54:21 -07:00
codex_models.py fix(codex): drop dead model slugs that HTTP 400 on ChatGPT Pro (#33424) 2026-05-27 12:16:15 -07:00
codex_runtime_plugin_migration.py
codex_runtime_switch.py
colors.py
commands.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
completion.py fix: batch of small robustness/correctness fixes from @kyssta-exe 2026-06-01 19:51:03 -07:00
config.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
container_boot.py fix(docker): seed s6 gateway state for legacy run cmd (#34829) 2026-06-01 11:28:56 +10:00
copilot_auth.py
cron.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
curator.py
curses_ui.py feat(cli): ranked fuzzy search in the curses model picker 2026-06-01 16:58:58 -07:00
dashboard_register.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
debug.py feat(dashboard): add Debug Share to the System page (#38600) 2026-06-03 19:37:04 -07:00
default_soul.py
dep_ensure.py
dingtalk_auth.py
doctor.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
dump.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
env_loader.py fix(secrets): only apply external secrets once per HERMES_HOME per process (#32271) 2026-05-25 15:18:55 -07:00
fallback_cmd.py
fallback_config.py
gateway.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
gateway_windows.py fix(gateway,windows): reliability — JOB breakaway + status --deep probes + test-leak fix (#40909) 2026-06-06 19:53:58 -07:00
goals.py feat(kanban): goal_mode cards run workers in a /goal loop (#35710) 2026-05-31 01:16:33 -07:00
gui_uninstall.py feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) 2026-06-06 18:22:38 -07:00
hooks.py
inventory.py fix(inventory): avoid fresh Nous tier checks in picker payloads 2026-06-07 00:41:13 -07:00
kanban.py fix(kanban): isolate board override per concurrent call 2026-06-04 07:39:53 -07:00
kanban_db.py fix(kanban): sweep deferred scratch parent on non-scratch child completion + tests 2026-06-07 09:50:44 -07:00
kanban_decompose.py docs(kanban): clarify decomposer profile roles 2026-06-06 19:29:00 -07:00
kanban_diagnostics.py chore: remove dead code — 28 unused functions/classes across 16 files 2026-05-29 04:22:27 -07:00
kanban_specify.py fix: guard int(os.getenv()) casts against malformed env vars (#40598) 2026-06-07 06:14:24 -07:00
kanban_swarm.py fix(kanban): CLI dispatch honors max_in_progress/max_spawn from config; swap missing 'avoid-ai-writing' skill for bundled humanizer (#33488, #29415) (#34337) 2026-05-28 21:00:46 -07:00
logs.py feat(debug): include desktop.log in hermes debug share / /debug / hermes logs (#38203) 2026-06-03 05:41:35 -07:00
main.py opentui(v6): configurable V8 heap (HERMES_TUI_HEAP_MB) + --expose-gc (W1) 2026-06-14 14:15:32 +05:30
managed_uv.py fix(update/windows): don't return _UvResult on Windows (subprocess argv crash) (#39820) 2026-06-05 07:54:08 -05:00
mcp_catalog.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
mcp_config.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
mcp_picker.py feat(mcp): Nous-approved MCP catalog with interactive picker (#30870) 2026-05-26 12:48:14 -07:00
mcp_startup.py perf(cli): stop eager MCP discovery from blocking agent-capable startup 2026-05-30 07:45:26 -07:00
memory_setup.py fix(memory): fall back to pip when uv is unavailable (salvage #5954) (#38668) 2026-06-04 14:03:02 +10:00
middleware.py fix(middleware): single-use next_call guard + deepcopy-safe request copies 2026-06-06 23:07:25 +05:30
migrate.py
model_catalog.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
model_cost_guard.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
model_normalize.py remove Vercel AI Gateway and Vercel Sandbox (#33067) 2026-05-27 00:43:32 -07:00
model_setup_flows.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
model_switch.py refactor(inventory): make force_fresh_nous_tier keyword-only + pin contract 2026-06-07 00:41:13 -07:00
models.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
nous_account.py feat(credits): usage-aware credits — in-session notices, /usage view, dev readout (#40011) 2026-06-06 13:18:18 +05:30
nous_subscription.py fix(cli): require Chromium for local browser readiness in setup/status surfaces 2026-06-05 04:06:17 -07:00
oneshot.py fix(cli): surface oneshot agent exceptions to stderr with rc=1 2026-05-30 07:31:48 -07:00
pairing.py
partial_compress.py Inspired by Claude Code: /compress here [N] — boundary-aware 'summarize up to here' (#35048) 2026-05-29 17:49:15 -07:00
platforms.py
plugins.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
plugins_cmd.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
portal_cli.py feat(cli): make hermes portal run the full quick-setup Nous flow (model picker) 2026-06-04 02:20:31 +05:30
profile_describer.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
profile_distribution.py fix(dist): stop USER_OWNED_EXCLUDE from filtering nested directories 2026-06-07 21:50:57 -07:00
profiles.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
prompt_size.py feat(cli): add hermes prompt-size diagnostic (#35276) 2026-05-30 02:53:42 -07:00
providers.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
psutil_android.py fix(android): reject unsafe tar members in psutil compatibility installer 2026-05-28 02:36:09 -07:00
pt_input_extras.py fix(cli): ignore terminal focus reports (salvage of #16780) 2026-05-29 00:31:44 -07:00
pty_bridge.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
relaunch.py
runtime_provider.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
secret_prompt.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
secrets_cli.py fix(secrets): fail early with clear error when bitwarden setup runs without TTY (#40571) 2026-06-06 18:36:40 -07:00
security_advisories.py fix(stt,tts): restore mistralai — 2.4.8 is clean, ban lifted (#34841) 2026-05-29 13:24:12 -07:00
security_audit.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
send_cmd.py
service_manager.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
session_recap.py
setup.py fix(cli): require Chromium for local browser readiness in setup/status surfaces 2026-06-05 04:06:17 -07:00
skills_config.py
skills_hub.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
skin_engine.py
slack_cli.py
status.py feat(cli): make hermes portal the human-readable Portal onboarding alias 2026-06-04 01:19:28 +05:30
stdio.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
suggestions_cmd.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
telegram_managed_bot.py Add CLI Telegram QR onboarding 2026-06-05 03:20:10 -07:00
timeouts.py
tips.py docs: align runtime footer field docs 2026-06-06 11:20:40 -06:00
tools_config.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
uninstall.py feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) 2026-06-06 18:22:38 -07:00
voice.py
web_server.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
webhook.py
win_pty_bridge.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
write_approval_commands.py tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 2026-06-12 10:32:40 +05:30
xai_retirement.py