Getting Started with Hermes Agent

Lesson 3 of 6

Your First Session in the Terminal UI

Estimated time: 9 minutes

Your First Session in the Terminal UI

Hermes's primary interface is a sophisticated Terminal User Interface (TUI). It has more in common with Vim or a modern REPL than with a chat window — everything is keyboard-driven, outputs stream live, and long-running tasks can be interrupted and redirected mid-flight.

This lesson walks you through a productive first session.

Launching the TUI

From any directory:

uv run hermes

You'll see something like:

┌─ Hermes · claude-sonnet-4-6 · sandbox:docker ──────────────┐
│                                                            │
│   ~/.hermes/ ready · 0 skills loaded · session #1 opened   │
│                                                            │
│  › _                                                       │
└────────────────────────────────────────────────────────────┘

The bottom line is your prompt. Everything above scrolls; only the prompt pane accepts input.

Multiline Editing

Unlike most chat-style clients, Hermes treats the prompt as a proper editor:

  • Enter submits.
  • Shift+Enter inserts a newline — use this for multi-paragraph prompts, code blocks, or bullet lists.
  • Ctrl+A / Ctrl+E jump to start / end of line.
  • Ctrl+U clears the current line.
  • Up / Down navigate prompt history.

Try it — paste a 10-line bug report directly into the prompt; Hermes keeps the formatting intact when it sends the request.

Slash Commands

Slash commands are the control surface. Type / and autocomplete opens a menu. The essentials:

CommandPurpose
/helpCommand reference
/clearClear the viewport (session persists)
/newEnd current session, open a new one (memory is kept)
/model <name>Swap the model mid-session (e.g. /model gpt-5-mini)
`/sandbox onoff`
/skillsList installed skills
/memoryOpen the MEMORY.md / USER.md editor
/toolsList available tools + MCP servers
/quitExit the TUI

All slash commands work in the middle of a session without losing context. Swapping the model with /model keeps the conversation history intact — Hermes re-sends the session to the new model on the next turn.

Your First Task

Let's watch the agent work. Paste this into the prompt:

Look at the current working directory. Summarize what kind of project this is
in two sentences, then tell me one thing I could improve about the structure.

What you'll see stream past:

› Tool call: list_directory(path=".")
  ├── package.json
  ├── src/
  ├── README.md
  └── ... (12 more)

› Tool call: read_file(path="package.json")
  {...streaming output...}

› Thinking: this appears to be a Next.js app using...

› Response:
  This is a Next.js App Router project using Supabase for data and Tailwind
  for styling. The `src/` layout follows the standard Next.js convention.

  Improvement: there's no `tsconfig.json` `paths` alias shown in the top-level
  imports — adding `@/*` → `./src/*` would clean up deep imports.

Tool calls stream in real time, one line at a time. This matters because:

  1. You can interrupt mid-stream. If Hermes starts reading the wrong file, press Ctrl+C and redirect immediately.
  2. You see the reasoning trajectory. When a skill gets promoted to ~/.hermes/skills/, this is the trace that becomes its procedural record.

Interrupt-and-Redirect

This is the single most useful feature of the TUI. Mid-task, you can:

  1. Press Esc to pause the agent after the current tool call finishes.
  2. Type a redirection: "stop reading the frontend, focus on src/lib/actions only".
  3. Press Enter — the agent resumes with the new constraint injected at the top of the context.

Interrupt-and-redirect is a core workflow. It replaces the session-and-restart dance typical of session-bound tools.

Session vs. Memory

A session is one conversation window. It lives in ~/.hermes/sessions.db (FTS5-indexed) and can be searched later. /new ends a session.

Memory spans all sessions. Long-term facts ("I'm a TypeScript developer using Next.js 16", "our codebase uses Prettier with 2-space tabs") live in ~/.hermes/MEMORY.md and USER.md, kept pristine by background summarization.

You'll learn to manage memory explicitly in the next lesson.

Gateway Mode (Optional)

If you want to talk to the same Hermes agent from Telegram, Discord, or Slack instead of the TUI:

uv run hermes gateway --telegram --discord

This starts a background messaging gateway. The agent state, memory, and skills are shared between the TUI and the gateway — you can open the TUI on your laptop, hand off to Telegram on your phone, and pick back up.

This is narrower than OpenClaw's 24+ channel reach by design. Hermes treats messaging as a secondary surface; the terminal is the primary.

What's Next

You've now run the TUI, streamed a real task, and used interrupt-and-redirect. The next lesson explains how Hermes remembers what you care about across sessions — and how to hot-swap between five different memory providers to match your workflow.