By laiadlotape
CLI-native prompt notepad sidebar for Claude Code (and any HITL agent framework). Compose deliberately, send to the Claude pane via tmux without auto-pressing Enter.
Record the current tmux window to a gif with keystroke overlay. Uses vhs (preferred) or asciinema+agg (fallback).
Override the auto-detected claude pane for the illo TUI. Pass a tmux pane id like %4.
Clear the illo TUI pane override; return to auto-detection of the claude pane.
Toggle live session recording (asciinema + agg). Captures all tmux panes in one cast. Recordings land in ~/.claude/illo-sidebar/recordings/.
Resume a pending sidebar item by id (e.g. /illo-resume itm_abc123). With no arg, lists pending items.
Record the current tmux window to a gif with keystroke overlay. Uses vhs (preferred) or asciinema+agg (fallback). Both optional.
Coordinator for the illo-sidebar plugin. Use when the user references the sidebar, "the side panel", "pending inputs", or wants to resume a question Claude asked earlier. Also use when injecting a resumed question's context back into a turn.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
warnStyleAnimation style for re-warn: 'pulse', 'blink', 'glow', or 'none'.
${user_config.warnStyle}daemonPortLocalhost port the daemon and sidebar UI share.
${user_config.daemonPort}pushProviderMobile push provider: 'ntfy', 'pushover', or 'off'. DISABLED BY DEFAULT — see docs/push.md to opt in.
${user_config.pushProvider}pushNtfyTopicntfy.sh topic name (only used if pushProvider=ntfy).
${user_config.pushNtfyTopic}browserCommandBrowser launcher used by /illo-web only (e.g. 'google-chrome', 'chromium', 'firefox'). Empty = autodetect.
${user_config.browserCommand}pushNtfyServerntfy server base URL (self-host capable).
${user_config.pushNtfyServer}autoOpenSidebarOpen the sidebar automatically on session start. With the TUI default, this only auto-spawns inside tmux or when ILLO_SIDEBAR_AUTO_TERMINAL is set; for the browser fallback, see /illo-web.
${user_config.autoOpenSidebar}warnIntervalSecondsSeconds between gentle re-warn animations on a still-unacknowledged item. 0 disables re-warn.
${user_config.warnIntervalSeconds}pushAfkThresholdSecondsOnly mobile-push items pending this long without focus. Default: 120 seconds.
${user_config.pushAfkThresholdSeconds}A prompt notepad that lives next to Claude. Write deliberately, review once more, then send — without auto-pressing Enter.

Claude interrupts you. You're deep in a task, and it asks a question — but you're mid-thought somewhere else. By the time you context-switch back, you've lost the thread of what you were doing. That friction compounds across a long session.
The chat input box makes it worse. You type fast, you hit Enter too soon, you send something half-formed. There's no draft space, no undo before the prompt leaves, no moment to re-read what you're about to hand off to a system that will act on it literally.
illo puts a real editor in a tmux split, right next to Claude. The left pane is claude. The right pane is yours: an event log on top (questions, notifications, what Claude just finished), and a compose buffer below where you write at your own pace. When you're ready, one keystroke injects your text into the Claude pane. illo does not press Enter for you. That last step is yours.
"Never prompt directly in chat. Write in an editor, read it twice, dehumanize it. You are configuring a system, not chatting with a colleague." — FindingMemo
Open illo with /illo. A 40%-wide vertical split appears on the right. The bottom two-thirds is your compose buffer — a full text editor.

Type naturally. Use Ctrl-Left / Ctrl-Right to jump words, Ctrl-W to delete a word backward, Ctrl-Z to undo. For longer drafts, Ctrl-E opens the buffer in your $EDITOR and pastes it back when you save and quit.
┌─────────────────────────────────────────┐
│ ┌─ prompt ──── lines: 3 · words: 18 ──┐ │
│ │ Claude, before running the migration│ │
│ │ 1. Verify /backups exists │ │
│ │ 2. Abort if row count differs█ │ │
│ └─────────────────────────────────────┘ │
│ Ctrl-S send · Ctrl-D send+Enter · ? help│
└─────────────────────────────────────────┘
The top third of the illo pane is the event log. It shows items from Claude's hooks in real time: questions (ask_user), status updates (notification), and what you just sent (sent).

Press Ctrl-Up to focus the event log. Use j / k to scroll through items. Press Enter on any item to open a detail popup with the full text, options (for questions), and a transcript snapshot. Press v to toggle between the default low-noise filter and the full verbose log — useful when you want to see stop events or session boundaries.
When you're ready, press Ctrl-S. illo injects your text into the Claude pane via tmux send-keys -l (literal — no shell interpretation) and shifts focus there. A "sent →" toast appears in the status bar. You land in the Claude pane, read the prompt as it sits in the input, and press Enter yourself.

Ctrl-D does the same thing but also presses Enter for you. Use it only when you've already read the prompt once and are confident.
Full keybinding reference is in docs/tui.md.
Coming in v0.6: a settings panel (,) and ~/.claude/illo/config.json will let you change themes, key overrides, filter presets, and default $EDITOR behaviour without touching the plugin source. This is not built yet — the config system is in the roadmap.
Requirements: Node 20+, tmux, curl, jq.
# 1. Clone anywhere
git clone https://github.com/laiadlotape/illo /path/to/illo
# 2. Install the plugin
/plugin install /path/to/illo
# 3. Register hooks in ~/.claude/settings.json
{
"hooks": { "hooksJsonPath": "/path/to/illo/hooks/hooks.json" }
}
# 4. Verify Node
node --version # 20.x or newer
The daemon starts automatically on the first hook that fires. No separate daemon install step.
# Inside a tmux window with claude running in one pane:
/illo
A 40%-wide vertical split opens on the right. Switch back to illo with Prefix → o.
npx claudepluginhub laiadlotape/illo --plugin illoMulti-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Memory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.