ThreadHop is a terminal UI, a CLI and an agent plugin over one local SQLite store. This page lists all three surfaces. Nothing here leaves your machine.
macOS. The installer brings in uv if you don't have it, clones to ~/.local/share/threadhop, and links threadhop into ~/.local/bin. Re-run it to update.
$ curl -LsSf https://threadhop.parzival.computer/install.sh | bashThen, from inside any agent chat, add the plugin for the slash commands:
/plugin marketplace add parzival1l/threadhop /plugin install threadhop@threadhop
The core move. In the chat that has the context:
!threadhop prepare ✓ ticket tk_1a2b3c4d · paste in the target chat: !threadhop receive tk_1a2b3c4d
In the chat that needs it:
!threadhop receive tk_1a2b3c4dA ticket is a markdown file in ~/.config/threadhop/transfers/: a short summary of the conversation's head plus the last few exchanges verbatim. Reading one costs zero LLM calls. To just look without a ticket: !threadhop peek <session> --last 5.
Full-text search (SQLite FTS5) across every indexed session. Results jump straight to the message.
/project: user: assistant:↑ ↓ · Ctrl+N Ctrl+PEnterCtrl+FCtrl+XSelect one message or a range, then copy, export, or bookmark it. Selection lives in the transcript pane.
l / hmj kvyeEscPin a message for later. Two kinds: bookmark (keep) and research (follow up). One table shared by TUI, CLI and plugin.
SpaceLbEnter · L · dEvery session has a status. The sidebar groups by it; the board shows it as columns.
s Sa ABh l · j kShift+← Shift+→The sidebar is live: it polls every 5 s and marks what's running (◐ working · ● active · ○ idle).
j kEnter / /ngJ K[ ]t T?Every subcommand auto-detects the session you're in when run from inside an agent chat via ! bash passthrough. Pass --session <id> from anywhere else.
threadhopthreadhop search '<terms>'threadhop peek <session> [--last N | --range A:B | --grep RE]threadhop prepare --session <id>threadhop receive <tk_id>threadhop tag <status>threadhop bookmark [research] [--note …]threadhop copy [N | all]threadhop update · changelog · futureThin wrappers over the CLI, so they run instantly with no model turn. Requires threadhop on your $PATH.
/threadhop:tag <status>/threadhop:bookmark [--note …]/threadhop:copy [N | all]/threadhop:handoff <session>~/.config/threadhop/sessions.db~/.config/threadhop/transfers/~/.config/threadhop/config.jsonTranscripts are read in place from each agent's own directory. ThreadHop never writes to them except when you rename a session.