tagents

Know which Claude Code session needs you, without leaving tmux.

A live dashboard for every Claude Code chat you run in tmux: what each one is doing, which one is waiting on you, how much context it holds and what it has spent.

See it work

The dashboard
Five chats in four projects. One stops to ask for a permission, the list marks it BLOCKED, and enter shows its chat beside the list. Recorded from the real dashboard, with made-up chats.

What it does

A closer look

Every key, in one list
Press ? for every key. Pick one from the list and enter runs it, so there is nothing to memorise. Recorded from the real dashboard, with made-up chats.
A new chat where the cursor is
ctrl-n starts a new chat in the project under the cursor: a row appears in the list and the chat opens beside it. Recorded from the real dashboard, with made-up chats.
Closed chats come back
ctrl-y lists the chats that were closed. Pick one and it resumes where it ran. Recorded from the real dashboard, with made-up chats.

Never lose a session

tmux-resurrect and tmux-continuum bring back your sessions, windows and splits, but a chat comes back as an empty shell: they cannot know which conversation it was. tagents remembers, and resumes each one in its place, on the account it ran on, with its model and its window name.

Add two lines to ~/.tmux.conf, after the tmux-resurrect settings:

set -g @resurrect-hook-post-save-layout '~/.local/bin/tagents --resurrect-save'
set -g @resurrect-hook-post-restore-all '~/.local/bin/tagents --resurrect --auto'

Without tmux-resurrect it still works: tagents --resurrect rebuilds what is missing.

Install

  1. One command. It needs tmux, fzf, jq, git, Node 22.18+ and pnpm.

    curl -fsSL https://raw.githubusercontent.com/SkuratovichA/tagents/main/install.sh | sh

    It puts one managed copy in ~/.local/share/tagents, the commands in ~/.local/bin and the Claude Code hooks in ~/.claude/hooks. Run it again, or tagents update, to update.

  2. Then tell Claude Code about the hooks. Add this to ~/.claude/settings.json:

    settings.json
    {
      "hooks": {
        "SessionStart":     [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"" }] }],
        "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"" }] }],
        "PreToolUse":       [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"", "async": true }] }],
        "PostToolUse":      [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"", "async": true }] }],
        "Notification":     [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"" }] }],
        "Stop":             [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"" }] }],
        "SubagentStop":     [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"", "async": true }] }],
        "SessionEnd":       [{ "hooks": [{ "type": "command", "command": "sh \"$HOME/.claude/hooks/tmux-agent-state.sh\"" }] }]
      },
      "statusLine": {
        "type": "command",
        "command": "sh \"$HOME/.claude/hooks/claude-statusline.sh\"",
        "padding": 0,
        "refreshInterval": 30
      }
    }

    The hook is how a chat tells tagents what it is doing; the status line is where the model column comes from.

  3. Then run it inside any tmux session. Every Claude chat with the hook shows up on its own, whether tagents started it or you typed claude in a pane yourself.

    tagents

Notifications, status bar, plugin

Notifications

macOS asks once whether tagents may notify you. After that, a question, a permission prompt or a finished turn raises a banner, and a click opens that chat beside the list.

tagents plugin add ~/.local/share/tagents/packages/notify
tagents notify install

Status bar

For the tmux status bar, a one-line tally of your chats by state:

set -g status-right '#{?@tagents_counts,#{@tagents_counts},#(~/.local/bin/tagents --counts)}'

Claude Code plugin

Gives every chat the tagents skill, so it knows the exact commands and flags of tagents instead of guessing, and a knowledge MCP server that searches your markdown notes.

/plugin install tagents --marketplace SkuratovichA/tagents