Skip to content
Alan Wizemann edited this page Apr 20, 2026 · 12 revisions

Chat

Two modes share the same sidebar item: Rich Chat (real-time ACP streaming with iMessage-style bubbles) and Terminal (the hermes chat CLI rendered with full ANSI color in an embedded terminal). Switch between them in the chat toolbar.

Rich Chat

Streams tokens, thoughts, and tool calls live via the ACP subprocess. No DB polling — when Hermes emits a message chunk, you see it immediately.

What it renders:

  • iMessage-style bubbles, user vs. assistant.
  • Markdown content (links, lists, code blocks, tables).
  • Reasoning / thinking chunks in a collapsible block above the answer.
  • Tool calls as inline cards with the function name, argument summary, and (when complete) the result.
  • Permission requests as modal sheets — Hermes asks before executing risky tools; you choose Allow / Deny.
  • /compress — when Hermes advertises the command via availableCommands, a one-click focus sheet appears in the toolbar.

Session lifecycle:

  • Each new conversation creates a session via session/new (cwd = your local working directory if you set one).
  • Resume an old conversation: pick from the session picker; Scarf calls session/load or session/resume depending on the state.
  • Auto-reconnect — if the subprocess dies, Scarf attempts a session/resume to pick up where it left off.

Voice mode controls: PTT (push-to-talk), TTS playback, STT transcription preferences live in Settings → Voice. The chat toolbar exposes the basic toggles.

Terminal mode

The full hermes chat CLI rendered in an embedded SwiftTerm terminal:

  • ANSI color and Rich formatting work as in your shell.
  • WhatsApp / Signal pairing flows render their QR codes here for scanning.
  • Useful when you need a feature only the CLI exposes (e.g. obscure flags, daemon management).

Cancellation

The Stop button sends session/cancel over the JSON-RPC channel. The model stops generating; any in-flight tool call completes. You can immediately send another prompt without restarting the session.

Multi-server chat

Each window is bound to one server, so chat in window A talks to local Hermes while window B talks to a remote one. Sessions don't cross windows — they live on the server they were created on.

Troubleshooting

  • "Spinning forever, no response" — check the Logs view for ACP errors. Common causes: missing ANTHROPIC_API_KEY (Scarf attaches a hint), rate limit, or hermes binary not on $PATH.
  • Connection lost — Rich Chat surfaces this banner; click Reconnect to call session/resume.
  • Permission sheet doesn't appear — make sure Hermes's approval_mode in config.yaml is set so it asks (not auto-approve).

Related pages


Last updated: 2026-04-20 — Scarf v2.0.1

Clone this wiki locally