LiveNL

Tmux Claude Status — Development skill for Claude Code

Development community

Every Claude Code session's state, live in your tmux tab bar — animated, event-driven, zero polling.

How to install Tmux Claude Status

This entry records only its repository, not the path inside it, so there is no exact command to give. Open LiveNL/tmux-claude-status and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Tmux Claude Status does

Every Claude Code session's state, live in your tmux tab bar — animated, event-driven, zero polling.

Alternatives in Development

  • Tmux Claude Hatch — tmux plugin that runs Claude Code sessions in popups per project directory, with an fzf picker showing each se 381 ★
  • Handmux — A mobile vibe-coding cockpit — built on tmux: drive your live session, Claude Code / Codex — anything a termin 162 ★
  • State Analyzer.Cn — 你是 Omux 的终端状态分析器 94 ★

README

tmux-claude-status

Every Claude Code session's state, live in your tmux tab bar — a spinner while it works, amber when it asks, red when it's blocked on an approval, green when it's done.

[![tests](https://github.com/LiveNL/tmux-claude-status/actions/workflows/tests.yml/badge.svg)](https://github.com/LiveNL/tmux-claude-status/actions/workflows/tests.yml)

![Demo: Claude state cycling through running → permission → input → done across four tmux windows](screenshots/demo.gif)

Run five Claude sessions in five windows and you spend your day guessing which tab wants you. This makes the bar answer it at a glance:

State Glyph Color When
running ⬢ (animates) cyan Claude is working
input ? amber Claude is waiting on your reply
permission ! red Claude needs approval to run a command
done ✓ green Claude finished without a question
(idle) — dim No active Claude session

**No polling. No cron. No daemons.** [Claude Code hooks](https://docs.anthropic.com/en/docs/claude-code/hooks) fire at each lifecycle event; the tab is repainted at that exact moment. Questions latch, finished turns hold their colour, and the transitions Claude never reports — Esc, a granted permission, a stop hook resuming the turn — are caught by watchers. Subagents can't repaint a tab that's waiting on you. The whole state machine is pinned by 260+ assertions run in CI, including a payload contract checked against captured real Claude payloads.

Curious why the tab never lies? Read [how it works](docs/how-it-works.md).

Install

git clone https://github.com/LiveNL/tmux-claude-status
cd tmux-claude-status
bash install.sh

The installer copies the hook scripts to `~/.claude/hooks/` and merges their wiring into `~/.claude/settings.json` (backs up first, preserves existing hooks).

Requires [tmux](https://github.com/tmux/tmux) ≥ 3.0, [jq](https://stedolan.github.io/jq/), and the [Claude Co