Tmux Core Flow banner
dimaCaptain dimaCaptain

Tmux Core Flow

Development community

Description

Deterministic monitoring & permission control for teams of Claude Code agents in tmux

Installation

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

README

tmux-core-flow

Deterministic state tracking and permission control for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) agents running in tmux.

[![CI](https://github.com/dimaCaptain/tmux-core-flow/actions/workflows/ci.yml/badge.svg)](https://github.com/dimaCaptain/tmux-core-flow/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)

Running several Claude Code agents at once, two things get tedious: knowing which one needs you, and approving a permission prompt for every safe tool call. This does both from Claude Code's own hooks β€” no screen scraping, no simulated keypresses, no background daemon.

  1. State β€” claude-hook-notify turns hook events into a colour on the tmux tab: 🟑 working, 🟒 waiting for your approval, πŸ”΄ finished. It also writes timestamps and a paneβ†’session map to disk.
  2. Permissions β€” flow-approve is a PreToolUse hook that auto-approves tool calls except those matching an always_ask deny-list.
  3. Survival β€” flow-session-index records which session ran in which window, so a reboot does not cost you the context of a dozen agents, and flow-sync keeps an encrypted copy of that state off the machine entirely.

No dashboard here β€” on purpose

You get the state, not a widget. The hard part is the state machine: knowing that a finished agent must *stay* red when its pane keeps printing, that green clears when a tool runs because that means you approved. Rendering is the easy part, and it is where everyone's needs differ β€” your columns are not mine.

So the tab colour is already a usable display on its own, and [`docs/state-format.md`](docs/state-format.md) documents every file this writes so you can build exactly the widget you want, in any language. That contract is stable and versioned; a dashboard shipped here would only rot.

How th