mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
docs(tui): rename "Ink TUI" to just "TUI" throughout user-facing surfaces
"Ink" is the React reconciler — implementation detail, not branding. Consistent naming: the classic CLI is the CLI, the new one is the TUI. Updated docs: user-guide/tui.md, user-guide/cli.md cross-link, quickstart, cli-commands reference, environment-variables reference. Updated code: main.py --tui help text, server.py user-visible setup error, AGENTS.md "TUI Architecture" section. Kept "Ink" only where it is literally the library (hermes-ink internal source comments, AGENTS.md tree note flagging ui-tui/ as a React/Ink dir).
This commit is contained in:
parent
2812bfe5b9
commit
7ffefc2d6c
8 changed files with 22 additions and 22 deletions
|
|
@ -64,7 +64,7 @@ hermes-agent/
|
|||
│ ├── src/components/ # Ink components (branding, markdown, prompts, pickers, etc.)
|
||||
│ ├── src/hooks/ # useCompletion, useInputHistory, useQueue, useVirtualHistory
|
||||
│ └── src/lib/ # Pure helpers (history, osc52, text, rpc, messages)
|
||||
├── tui_gateway/ # Python JSON-RPC backend for Ink TUI
|
||||
├── tui_gateway/ # Python JSON-RPC backend for the TUI
|
||||
│ ├── entry.py # stdio entrypoint
|
||||
│ ├── server.py # RPC handlers and session logic
|
||||
│ ├── render.py # Optional rich/ANSI bridge
|
||||
|
|
@ -194,7 +194,7 @@ if canonical == "mycommand":
|
|||
|
||||
## TUI Architecture (ui-tui + tui_gateway)
|
||||
|
||||
The Ink TUI is a full replacement for the PT CLI, activated via `hermes --tui` or `HERMES_TUI=1`.
|
||||
The TUI is a full replacement for the PT CLI, activated via `hermes --tui` or `HERMES_TUI=1`.
|
||||
|
||||
### Process Model
|
||||
|
||||
|
|
|
|||
|
|
@ -843,7 +843,7 @@ def _ensure_tui_node() -> None:
|
|||
|
||||
|
||||
def _make_tui_argv(tui_dir: Path, tui_dev: bool) -> tuple[list[str], Path]:
|
||||
"""Ink TUI: --dev → tsx src; else node dist (HERMES_TUI_DIR or ui-tui, build when stale)."""
|
||||
"""TUI: --dev → tsx src; else node dist (HERMES_TUI_DIR or ui-tui, build when stale)."""
|
||||
_ensure_tui_node()
|
||||
|
||||
def _node_bin(bin: str)-> str:
|
||||
|
|
@ -925,7 +925,7 @@ def _make_tui_argv(tui_dir: Path, tui_dev: bool) -> tuple[list[str], Path]:
|
|||
return [node, str(root / "dist" / "entry.js")], root
|
||||
|
||||
def _launch_tui(resume_session_id: Optional[str] = None, tui_dev: bool = False):
|
||||
"""Replace current process with the Ink TUI."""
|
||||
"""Replace current process with the TUI."""
|
||||
tui_dir = PROJECT_ROOT / "ui-tui"
|
||||
|
||||
env = os.environ.copy()
|
||||
|
|
@ -5236,7 +5236,7 @@ For more help on a command:
|
|||
"--tui",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="Launch the Ink-based terminal UI instead of the classic REPL"
|
||||
help="Launch the modern TUI instead of the classic REPL"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--dev",
|
||||
|
|
@ -5349,7 +5349,7 @@ For more help on a command:
|
|||
"--tui",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="Launch the Ink-based terminal UI instead of the classic REPL"
|
||||
help="Launch the modern TUI instead of the classic REPL"
|
||||
)
|
||||
chat_parser.add_argument(
|
||||
"--dev",
|
||||
|
|
|
|||
|
|
@ -1985,7 +1985,7 @@ def _cli_exec_blocked(argv: list[str]) -> str | None:
|
|||
return "bare `hermes` is interactive — use `/hermes chat -q …` or run `hermes` in another terminal"
|
||||
a0 = argv[0].lower()
|
||||
if a0 == "setup":
|
||||
return "`hermes setup` needs a full terminal — run it outside the Ink UI"
|
||||
return "`hermes setup` needs a full terminal — run it outside the TUI"
|
||||
if a0 == "gateway":
|
||||
return "`hermes gateway` is long-running — run it in another terminal"
|
||||
if a0 == "sessions" and len(argv) > 1 and argv[1].lower() == "browse":
|
||||
|
|
|
|||
|
|
@ -78,13 +78,13 @@ You can switch providers at any time with `hermes model` — no code changes, no
|
|||
|
||||
```bash
|
||||
hermes # classic CLI
|
||||
hermes --tui # modern Ink TUI (recommended)
|
||||
hermes --tui # modern TUI (recommended)
|
||||
```
|
||||
|
||||
That's it! You'll see a welcome banner with your model, available tools, and skills. Type a message and press Enter.
|
||||
|
||||
:::tip Pick your interface
|
||||
Hermes ships with two terminal interfaces: the classic `prompt_toolkit` CLI and a newer [Ink TUI](../user-guide/tui.md) with modal overlays, mouse selection, and non-blocking input. Both share the same sessions, slash commands, and config — try each with `hermes` vs `hermes --tui`.
|
||||
Hermes ships with two terminal interfaces: the classic `prompt_toolkit` CLI and a newer [TUI](../user-guide/tui.md) with modal overlays, mouse selection, and non-blocking input. Both share the same sessions, slash commands, and config — try each with `hermes` vs `hermes --tui`.
|
||||
:::
|
||||
|
||||
```
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ hermes [global-options] <command> [subcommand/options]
|
|||
| `--worktree`, `-w` | Start in an isolated git worktree for parallel-agent workflows. |
|
||||
| `--yolo` | Bypass dangerous-command approval prompts. |
|
||||
| `--pass-session-id` | Include the session ID in the agent's system prompt. |
|
||||
| `--tui` | Launch the [Ink TUI](../user-guide/tui.md) instead of the classic CLI. Equivalent to `HERMES_TUI=1`. |
|
||||
| `--tui` | Launch the [TUI](../user-guide/tui.md) instead of the classic CLI. Equivalent to `HERMES_TUI=1`. |
|
||||
| `--dev` | With `--tui`: run the TypeScript sources directly via `tsx` instead of the prebuilt bundle (for TUI contributors). |
|
||||
|
||||
## Top-level commands
|
||||
|
|
|
|||
|
|
@ -346,7 +346,7 @@ For cloud sandbox backends, persistence is filesystem-oriented. `TERMINAL_LIFETI
|
|||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `HERMES_TUI` | Launch the [Ink TUI](../user-guide/tui.md) instead of the classic CLI when set to `1`. Equivalent to passing `--tui`. |
|
||||
| `HERMES_TUI` | Launch the [TUI](../user-guide/tui.md) instead of the classic CLI when set to `1`. Equivalent to passing `--tui`. |
|
||||
| `HERMES_TUI_DIR` | Path to a prebuilt `ui-tui/` directory (must contain `dist/entry.js` and populated `node_modules`). Used by distros and Nix to skip the first-launch `npm install`. |
|
||||
|
||||
## Cron Scheduler
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ description: "Master the Hermes Agent terminal interface — commands, keybindin
|
|||
Hermes Agent's CLI is a full terminal user interface (TUI) — not a web UI. It features multiline editing, slash-command autocomplete, conversation history, interrupt-and-redirect, and streaming tool output. Built for people who live in the terminal.
|
||||
|
||||
:::tip
|
||||
Hermes also ships a modern Node-based terminal UI with modal overlays, mouse selection, and non-blocking input. Launch it with `hermes --tui` — see the [Ink TUI](tui.md) guide.
|
||||
Hermes also ships a modern TUI with modal overlays, mouse selection, and non-blocking input. Launch it with `hermes --tui` — see the [TUI](tui.md) guide.
|
||||
:::
|
||||
|
||||
## Running the CLI
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
---
|
||||
sidebar_position: 2
|
||||
title: "Ink TUI"
|
||||
description: "Launch the modern Node-based terminal UI for Hermes — mouse-friendly, rich overlays, and non-blocking input."
|
||||
title: "TUI"
|
||||
description: "Launch the modern terminal UI for Hermes — mouse-friendly, rich overlays, and non-blocking input."
|
||||
---
|
||||
|
||||
# Ink TUI
|
||||
# TUI
|
||||
|
||||
The Ink TUI is the modern front-end for Hermes — a Node/React terminal UI backed by the same Python runtime as the [Classic CLI](cli.md). Same agent, same sessions, same slash commands; a cleaner, more responsive surface for interacting with them.
|
||||
The TUI is the modern front-end for Hermes — a terminal UI backed by the same Python runtime as the [Classic CLI](cli.md). Same agent, same sessions, same slash commands; a cleaner, more responsive surface for interacting with them.
|
||||
|
||||
It's the recommended way to run Hermes interactively.
|
||||
|
||||
## Launch
|
||||
|
||||
```bash
|
||||
# Launch the Ink TUI
|
||||
# Launch the TUI
|
||||
hermes --tui
|
||||
|
||||
# Resume the latest Ink session (falls back to the latest classic session)
|
||||
# Resume the latest TUI session (falls back to the latest classic session)
|
||||
hermes --tui -c
|
||||
hermes --tui --continue
|
||||
|
||||
|
|
@ -32,13 +32,13 @@ You can also enable it via env var:
|
|||
|
||||
```bash
|
||||
export HERMES_TUI=1
|
||||
hermes # now uses the Ink TUI
|
||||
hermes # now uses the TUI
|
||||
hermes chat # same
|
||||
```
|
||||
|
||||
The classic CLI remains available as the default. Anything documented in [CLI Interface](cli.md) — slash commands, quick commands, skill preloading, personalities, multi-line input, interrupts — works in the Ink TUI identically.
|
||||
The classic CLI remains available as the default. Anything documented in [CLI Interface](cli.md) — slash commands, quick commands, skill preloading, personalities, multi-line input, interrupts — works in the TUI identically.
|
||||
|
||||
## Why the Ink TUI
|
||||
## Why the TUI
|
||||
|
||||
- **Instant first frame** — the banner paints before the app finishes loading, so the terminal never feels frozen while Hermes is starting.
|
||||
- **Non-blocking input** — type and queue messages before the session is ready. Your first prompt sends the moment the agent comes online.
|
||||
|
|
@ -123,7 +123,7 @@ display:
|
|||
|
||||
## Sessions
|
||||
|
||||
Sessions are shared between the Ink TUI and the classic CLI — both write to the same `~/.hermes/state.db`. You can start a session in one, resume in the other. The session picker surfaces sessions from both sources, with a source tag.
|
||||
Sessions are shared between the TUI and the classic CLI — both write to the same `~/.hermes/state.db`. You can start a session in one, resume in the other. The session picker surfaces sessions from both sources, with a source tag.
|
||||
|
||||
See [Sessions](sessions.md) for lifecycle, search, compression, and export.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue