Skip to content

Interactive mode ​

hipmmcode (or hipmmcode chat) opens the interactive REPL. By default it runs in a fullscreen managed viewport — an alternate-screen TUI with mouse support, a pinned bottom bar, and in-viewport streaming. Prefer the classic scrollback renderer? hipmmcode config set tui=inline (or /tui inline live).

bash
hipmmcode                                      # fullscreen TUI REPL
hipmmcode chat -p deepseek-anthropic -m deepseek-flash
hipmmcode chat -p xai-oauth -m grok-4.5
hipmmcode chat --legion my-team                # activate a legion for this session only
hipmmcode chat --as team-designer              # adopt an agent profile as the lead persona
hipmmcode -c                                   # continue the most recent session

The screen ​

  • Transcript area — streaming markdown (headers, lists, bold, code, tables, clickable links) rendered line-by-line as the model responds. Tool calls render as collapsible cards.
  • In-turn task tree — while the agent works, a live tree shows the current tool, todo progress, and spawned teammates, with an animated spinner.
  • Background tasks bar (v0.16.0+) — consecutive background status lines (e.g. bash-7 · running…, teammate notices) collapse into a single ⏺ Background tasks (N) row. Click it or press Ctrl+O to expand the individual lines. The header no longer uses "Team" wording.
  • Input box — multi-line editor with history, completion, and optional vim bindings.
  • Status bar (HUD) — pinned bottom row(s): model, cwd, context pressure gauge ([████░░░░] 42% 85k/200k, model-aware), session tool counts. Style it with /hud (native rows / compact bar), or plug an external command via statusLineCommand.

Welcome screen & status line ​

  • Welcome screen — on the left, a 12-row colour braille dot-matrix HM Bot (spring antenna, gold headband, gold headphones, winking smile, blue scarf); on the right, HiPMM Code, the signed-in account and plan, and the working directory. The first launch after an upgrade shows the first line of that version's notes under the robot. A long working directory no longer stretches the logo.
  • Spinner line — says what is happening (Reading, Writing, Running a web search), with elapsed time, token count and thinking state; the line below carries a tip. The whole frame redraws every 100 ms, so the status is always one line — no doubled Continuing….
  • Remote control corner — the corner above the input shows the remote state: ● /rcl active, /rcl · Xiaomi 14 (the phone connected), ● /rcl waiting (on, no phone yet), ○ /rc /rcl off. The effort stays in the footer. When a phone connects, disconnects or reconnects only this corner redraws; the screen does not flash. See Remote control.

How replies are drawn ​

  • Markdown — italic, bold italic, strikethrough, autolinks, quote bars ▎, escapes and line-end backslashes render as in Claude Code. Nested ordered lists go 1., a., i. by level. Unordered lists are drawn with •, ◦ and ▪ by nesting level; copied text keeps the - . Your own messages are rendered too, with list markers as you typed them.
  • Nothing jumps while writing — what you see while a reply is written is what stays when it is done. One blank line stays between a tool row and the reply below; an unfinished heading, list item or inline code waits until its line is complete; a table appears once it is whole; thinking before a tool call is not shown twice.
  • Wrap width — on Linux and Windows a reply uses the full terminal width, so a closing 。 does not drop onto its own line; on macOS ⏺ takes two cells and two columns are kept. Mixed CJK and Latin text wraps by character, and CJK text no longer leaves one character alone on a line.
  • Links — clickable in terminals that support OSC 8. Set FORCE_HYPERLINK=false to turn that off.

ultrathink ​

Write ultrathink in a message and that turn runs at xhigh effort, or at the model's top level when it has no xhigh. Your /effort setting is unchanged and the next turn goes back to it. It also works in a message queued while a reply is running, and the keyword is highlighted in colour. Set CLAUDE_CODE_DISABLE_ULTRATHINK=1 to turn the keyword off.

Keyboard ​

Everyday ​

KeyAction
EnterSend
Shift+Enter / Alt+EnterInsert newline (run /terminal-setup once to enable Shift+Enter in your terminal)
EscInterrupt the running turn when input is empty (keeps already-streamed text) · clear the draft when not
Ctrl+CInterrupt turn / clear input; twice to exit
Ctrl+OFullscreen transcript view (scroll, expand, select); also expands/collapses the Background tasks bar when that row is focused
Ctrl+BSend the running foreground Bash / Agent to the background (session-resident completion notice)
Ctrl+Z / Shift+Ctrl+ZUndo / redo in the input editor
Ctrl+X Ctrl+EEdit the draft in $VISUAL/$EDITOR (/editor does the same)
Shift+TabCycle permission mode: default → acceptEdits → plan → auto → default (with mode indicator)
↑ / ↓Input history (or move within a multi-line draft)
Ctrl+RReverse-i-search through input history
!cmdRun a shell command directly (output lands in the conversation); shell is configurable via defaultShell

Completion ​

  • Tab — list candidates for any slash command and its arguments (/model <Tab> shows provider/model pairs filtered to channels with a key).
  • Ghost hint — typing /mo shows a dim del suffix; press → or End to accept. Works for command names and argument values.
  • @ mentions — type @ for fuzzy completion of files, agents, and local cross-session peers. @ lists file paths and spawnable agents (name (agent) – description). /renamed sessions appear as peers; auto-generated first-message titles do not. Selecting an agent appends a directed-delegation hint.
  • Bare / — opens the searchable command palette (multi-column, arrow keys + Enter). Single keystroke execution — an exact command match runs on first Enter (/status⏎ no longer needs a second press).
  • Slash menu source tags — menu rows show (user) for custom commands and (mcp) for MCP-provided commands.

Vim mode ​

/vim (or hipmmcode config set editorMode=vim) enables modal editing in every input surface — the inline editor, the streaming view, and the resting fullscreen composer. Esc → NORMAL, i/a/o/A/I/O → INSERT, with motions (h j k l w b e 0 $), operators (d c y), paste (p), undo (u). The status line shows the current mode. In NORMAL mode with an empty draft, Esc still interrupts a running turn.

Mid-turn team keys ​

While a turn is running with background teammates: Shift+↑/↓ selects a teammate in the preview, f foregrounds it, k stops it, Enter expands its transcript.

Mid-turn input queue ​

While a turn is still running you can type the next message. Queued lines show above the composer with a dim [Send now] chip:

ActionEffect
Click [Send now]Abort the current turn, keep already-streamed text, and start the queued message immediately
Enter twice within ~800ms (empty draft, queue non-empty)Same as Send now
↑Recall / edit the most recent queued line into the draft

There is no separate cancel/edit chip on the row — edit via ↑, promote via Send now or double Enter. After a normal turn, when the input is empty and nothing is queued, a gray next-line suggestion can appear. Tab or the right arrow fills it in. Slash commands stay in the fullscreen view; only /editor leaves it. After /resume, the input title becomes the selected session's name. On Windows, Read, Write, and Edit treat \\?\C:\… and C:\… as the same file. config.json, which stores API keys, stays unreadable.

Mouse ​

The fullscreen shell captures the mouse:

  • Hover a collapsed tool card → highlight; click → expand/collapse.
  • Drag-select — character-precise selection that auto-copies on release.
  • Wheel — scroll the viewport (3-line steps); scroll back during a streaming turn.
  • Cmd+click (macOS) / Ctrl+click paths in tool output — open the file in the editor when the terminal/IDE supports it (VS Code may also handle path open itself).
  • Click a real path — a file that exists in the current directory, on the Desktop, or in Downloads opens on a single click. Repeated calls of the same tool collapse to Calling {name} ×N; expand them with Ctrl+O or a click.

Attachments — images & video ​

Multimodal input works three ways:

  1. Drag a file onto the terminal — its path is inserted and attached.
  2. @-mention a path.
  3. /paste (aliases /img, /image) — attach an image straight from the clipboard. On macOS, Terminal.app and iTerm2 swallow Cmd+V when the clipboard is an image; use Ctrl+V in the idle input instead. Ctrl+C is still interrupt.
  4. Ctrl+V on Windows — in PowerShell or Windows Terminal, Ctrl+V inserts [Image #N] when the clipboard holds an image, and pastes text when it holds only text. Drag across text in the conversation and release: the footer says it was copied, and Ctrl+V pastes exactly that selection.

Images are analyzed on vision-capable models. On DeepSeek, pixels go up through the Files API and deepseek-flash reads them on the selected model — there is no one-turn detour. Videos are analyzed on video-capable channels (e.g. Gemini, Kimi/Moonshot): the model watches the actual footage — on-screen text, UI actions, timestamps. Models without video support get a clear text placeholder instead. The inline size cap is 32 MB, configurable with HIPMMCODE_VIDEO_MAX_MB.

File paths in file:// form, with spaces, or percent-encoded are resolved cross-platform (POSIX and Windows).

Notifications & terminal integration ​

  • notifyOnDone=true / notifyOnInputNeeded=true — beep or send a terminal notification when a turn finishes or a permission prompt opens while the window is unfocused. Channel auto-detected (iTerm2, kitty, ghostty, bell) or pinned via notifyChannel.
  • terminalTitle / terminalProgress — status in the tab title (OSC 0) and a progress indicator (OSC 9;4) where supported.
  • awayRecap=true (default) — a "welcome back" recap after ≥5 minutes idle.
  • tips=true (default) — rotating keyboard-shortcut hints under the input.
  • reduce motion — calmer animations (accessibility).

Voice ​

/voice talk and /voice speak read replies aloud. Pause and Stop stay in the footer for the whole playback; the grey next-message suggestion comes back to that line only when the sound ends. /voice setup checks the microphone and player, and /tts picks the Grok voice and speed. Voice is billed to the platform plan; see Model channels.

Appearance pickers ​

/color (alias /theme) opens a live-preview picker — the whole screen re-tints as the highlight moves, so you judge each theme in place and Enter keeps it:

hipmmcode
› /color

Themes  — previews live as you move
  default      terminal ANSI palette
❯ tokyo-night  icy blues + violet  (active)
  solarized    warm classic
  catppuccin   soft pastel
  monokai      high-contrast neon

↑/↓ preview · Enter keep · Esc revert

/hud picks the bottom status-bar style the same way (native rows / compact bar / force-native). The same picker pattern — arrow keys, (active) marker, Esc-safe — is used across /effort, /output-style, /experiments, and /expand.

Output styles ​

/output-style switches the response style (concise, explanatory, learning, …); custom styles are markdown files. language=<name> pins the response language.