Two halves of one system for running Claude Code inside Tabby:
plugin/— the Tabby plugin (tabby-claude-statuson npm). Watches Claude Code hook events and drives per-tab visual state (color, emoji, progress bar, taskbar flash/overlay) plus optional TTS announcements (Web Speech, Edge Neural, Windows OneCore, or local Piper).web/— companion webapp that talks totabby-mcp-serverover HTTP. Snapshot/restore of Tabby tabs, an MCP tool explorer UI, and a sink for the plugin's hook fan-out (POST /api/claude/hook).
The two communicate via:
- A status JSON file at
%TEMP%\tabby-claude-status.json— the plugin's own decorator reads it; the webapp doesn't. - HTTP
POST /api/claude/hook— the plugin'shook.jsfires this fire-and-forget on every Claude Code event so the webapp can resolve subsequent curl-only events to a tab. URL is configurable viaTABBY_CLAUDE_STATUS_WEBHOOK_URL.
The webapp is optional. The plugin works standalone; the webapp adds the snapshot UI and persistent session-resume server-side.
Plugin — install from npm into Tabby's plugin manager (search tabby-claude-status), or build from source:
cd plugin
npm install
npm run install-plugin # builds + copies into %APPDATA%\tabby\plugins\node_modules\tabby-claude-statusRestart Tabby, then go to Settings → Claude Status to wire up Claude Code hooks.
Webapp — designed to run behind a local reverse proxy via container labels (no port mappings):
cd web
docker compose up --build
# → reachable at https://tabby-claude-status.lvh.meThis requires local-proxy (or any compatible label-driven local proxy) on the traefik Docker network.
- Plugin: actively maintained, published to npm as
tabby-claude-status@1.x. - Webapp: tracks the same release cadence as the plugin since they share an IPC contract.
MIT — see LICENSE. Forked from upstream tabby-claude-status-gse@1.0.1 by graphix.