简体中文 · English
A macOS desktop AI pet that shows what your Claude Code and Codex CLI agents are doing: thinking, running tools, waiting for confirmation, asking for permission, or wrapping up, all through animations and speech bubbles so you can keep track without switching back to the terminal.
--- ## About Hopet is a desktop AI coding companion for macOS that turns the live session state of Claude Code / Codex CLI into something you can actually see: thinking, calling tools, awaiting confirmation, requesting permission, completing, or failing — every transition is expressed through pet animations, inline bubbles, and the menu-bar indicator. It is not another chat window, but a lightweight companion layer that lets you stay in your editor and still know, at a glance, what the agent is doing, whether it needs you to step in, and whether the session is making progress — without switching back to the terminal. Hopet lifts the agent lifecycle out of the command line and makes it clearer, and a little friendlier — adding a touch of order, and warmth, to the long hours you spend pairing with an AI. The release ships with the built-in **Hopi** theme: a hand-drawn pixel seal with one animation per state. Prefer a different pet? Import one with a name and eight GIFs, or import a Codex pet folder or ZIP archive directly. ## Supported AI tools Hopet works through the lifecycle hooks of the agent CLIs, so the following four entry points are covered: - **Claude Code** — the `claude` CLI in any terminal - **Claude Code for VS Code** — the official VS Code extension - **Codex CLI** — the `codex` CLI in any terminal - **Codex VS Code Extension** — the official VS Code extension Because everything runs through the same `~/.claude/settings.json` and `~/.codex/hooks.json` hooks, the host on top doesn't matter: Apple Terminal, iTerm2, Ghostty, Warp, the embedded terminal of VS Code or Cursor — they all behave the same. Not supported: the browser version of Claude at claude.ai, and any agent that isn't Claude Code or Codex (GitHub Copilot Chat, Gemini CLI, Aider, etc.). ## Features ### Session awareness - **Eight-state machine** covering every meaningful agent transition: `idle`, `responding`, `thinking`, `tool-use`, `permission-prompt`, `ask-user`, `completed`, and `error-interrupted` - **Multi-session aggregation** — every active session feeds into a single pet, and the pet always reflects the highest-priority state across all of them (AskUser > Permission > Error > Tool > Thinking > Responding > Completed > Idle) - **Leader highlight** — the session driving the current pet state is visually distinguished, so the answer to "which one is asking?" is always one glance away ### Hook integration - **One-click install / uninstall** for both Claude Code and Codex CLI hook settings, performed via safe JSON merge so your existing hooks are kept intact - **Unix Domain Socket IPC** with length-prefixed JSON framing for every event delivered from the CLI helper into the app - **`hopet-emit` CLI helper** with full flag support (`--require`, `--exclude`, dotted field paths) — installed at `~/.hopet/bin/` and invoked by the registered hooks - **Synchronous reply path** for `PermissionRequest` and `AskUserQuestion` — answers travel back through the same suspended hook socket, so Allow/Deny decisions and structured AskUser answers work uniformly across iTerm, Apple Terminal, VS Code, Cursor, Ghostty, and Warp embedded shells ### Desktop pet - **Floating `NSPanel`** that lives above your windows without stealing focus, joins every Space, and stays out of `⌘Tab` cycling - **Sprite animations** driven by the active theme — eight bundled animations for the Hopi theme, swapped via a short cross-dissolve on state changes - **Drag-to-move** with persisted position - **Inline interaction bubbles** — permission prompts expand into an Allow / Deny / Defer-to-terminal card; AskUserQuestion expands into a per-question answer card with options plus a free-text fallback ### Dynamic Notch / top status bar - **Dynamic Notch, enabled by default on notched MacBooks** — a compact status capsule follows the highest-priority session and reports states such as `Idle`, `Responding…`, `Thinking…`, `Running tool…`, `Permission needed`, and `Waiting for your answer` - **Expandable interaction** — click the capsule, or let a permission request, AskUserQuestion, or completion summary expand it into cards - **Resolve requests in place** — permission requests, AskUserQuestion, and plan approvals can be handled from the notch; responses travel back through the hook socket to the agent - **Fallback for Macs without a notch** — optionally show the same status bar at the top center of the display; it is off by default to avoid covering the menu bar - **Controls** — toggle **Show notch bar** in **Overview → Display** or **Behavior → Notch**. On a non-notched display, also enable **Show top bar on non-notch displays**. ### Theme system - **Built-in Hopi theme** — eight pixel-art seal animations bundled in the app - **GIF theme import** — give the theme a name and provide eight GIFs (one per `PetState`); file format and animation frames are validated on import - **Direct Codex pet import** — select a Codex pet folder / ZIP archive containing `pet.json` and `spritesheet.png` or `spritesheet.webp`. Both v1 (8×9) and current v2 (8×11) sheets are supported; format, dimensions, and animation frames are validated and mapped to Hopet states - **Safe installation** — both import paths copy the result to `~/.hopet/themes/![]() |
![]() |
![]() |
![]() |
| Ask User | Permission Prompt | Error / Interrupted | Tool Use |
![]() |
![]() |
![]() |
![]() |
| Thinking | Responding | Completed | Idle |