太刀tachi-agent · tachi-watch

A second brain beside Claude Code.

A terminal pane that follows one Claude Code session. It shows every TachiBot call in full, has a second model check each one against your project memory, and sends Claude the message you approved.

The tachi-watch pane: a list of TachiBot calls, a jury verdict with the second brain's notes citing CLAUDE.md, and a chat column with follow-up questions

The real pane, showing a staged session. node scripts/watch-demo.mjs in the repo writes it.

01 · Open it

One command, from inside Claude Code.

The pane opens in a split beside Claude and follows that session. It reads Claude Code's transcript and TachiBot's trace; it never writes to either.

open the paneshell
1# from inside Claude Code: opens a split beside it
2! tachi-agent watch --open
3
4# pick the second model
5! tachi-agent watch --open --brain claude # claude[:model] | codex | gemini | grok | driver[:name]
calls
Every TachiBot call, in full
Grouped under the question you asked. Jury panels, diff reviews, triage rankings and planner checklists each get their own view; anything else shows as the tool rendered it. ^F searches every call's output, ^O compares two.
second brain
Checked against your memory
A second model reads each finished call next to CLAUDE.md, AGENTS.md, Claude Code's auto-memory and .remember/, and optionally dokoro recall. Its notes cite the file and line they rest on.
chat
Ask about what you are looking at
Type a question; the selected call rides along as context. Answers come with follow-ups on keys 1–3.
prompts
The technique catalog, built in
TachiBot's 88 prompt techniques ship with the pane. Search them, let the second model pick three for your task, and apply one to Claude with Enter.
02 · Send to Claude

Nothing reaches Claude until you approve it.

The second brain may propose a message; ^S sends it, ^E edits it, Esc drops it. @claude <text> sends your own words.

sending from any terminalshell
1tachi-agent watch --install-hooks # this project (.claude/settings.local.json)
2tachi-agent watch --install-hooks --global # every project (~/.claude/settings.json)
3tachi-agent watch --uninstall-hooks

A Claude Code hook carries the message, so the terminal does not matter. Restart Claude Code after installing. The hook hands Claude what you sent at its next step: after a tool call, when it finishes a turn (it then carries on with your message), or with your next prompt. The pane shows a receipt when Claude has it.

Nothing is typed into Claude's prompt, so a message can never answer one of its dialogs. A message that waits an hour is dropped, and the pane says so.

Delivery is at-least-once. If a hook is killed between printing a message and recording it, a later hook delivers it again: Claude may see that message twice, but never misses one.
03 · Terminals

Opening the split and sending are separate jobs.

The split needs a terminal that can be scripted. Sending does not, once the hook is installed.

Terminalwatch --open splits itSends to Claude
cmuxyesyes, with a delivery receipt
Herdr, Herdr appyesyes — typed into Claude's prompt, held while a dialog is open
tmux, zellij, WezTermyeswith the hook
kittyyes, with allow_remote_control yes and listen_on in kitty.confwith the hook
Ghostty 1.3+, iTerm2yes, on macOS, by AppleScriptwith the hook
anything elseprints the command to run in a pane you splitwith the hook

The pane draws in 24-bit colour where the terminal has it and in the 256-colour palette elsewhere, and shows fewer sections on a short pane instead of squeezing them.

The model calls nested under each TachiBot call come from TachiBot's trace (TACHIBOT_TRACE_UI=1). The pane follows only the TachiBot that its own Claude session started, so it never shows another project's calls. That needs Claude's pid, which watch --open passes.

04 · Keys

Keyboard first; the mouse works too.

KeyDoes
Tab / Shift+TabNext / previous view: HOME, CALLS, CHAT, PROMPTS, MEMORY
↑ ↓ ← →Move in the list; switch focus between list and card
^FSearch every call's output
^BBehind the scenes: the model calls of the selected call
^S / ^E / EscSend / edit / drop the proposed message
^Y ^K ^P ^OCopy, export, pin, compare the selected call
^G ? ^CHome, all keys, quit