A simple, intuitive TUI dashboard for managing your tmux sessions — designed for running multiple AI agents (pi / codex / claude / aider ...) side by side.
直观的 tmux 会话管理 TUI,专为同时跑多个 AI agent(pi / codex / claude / aider …)的场景设计。
不再需要盯着 tmux ls + 手动 tmux attach -t xxx —— 打开一个全屏仪表盘,所有会话一眼看全,按键直达。
- 🔭 实时概览:每 2 秒自动刷新,展示所有会话的窗口数/面板数/连接状态/创建时间/最近活动/正在运行的命令/工作目录
- 🤖 AI agent 自动识别:会话名或进程名命中
pi / codex / claude / aider / gpt / agent ...自动打标 - 🟢 活跃度一目了然:最近 1 分钟内有动静的会话显示为绿色(= agent 正在干活),越久越红
- 🗂️ 多 tmux server 支持:自动发现所有 socket(
tmux -L work ...之类),跨 socket 统一管理,自动显示 SOCK 列 - ⏎ 一键进入:Enter 进入会话,
Ctrl-b d退出后自动回到仪表盘 - 常用操作全覆盖:新建 / 重命名 / 删除 / 踢出客户端 / 强制进入 / 按窗口进入 / 过滤 / 排序
# 依赖: python3 + rich
python3 -m venv .venv
.venv/bin/pip install rich
# 运行
./tmux-dash # 或 .venv/bin/python tmux-dash.py
# 演示环境(可选): 创建几个模拟 agent 会话
./demo.sh --reset # 注意: --reset 会杀掉所有现有 tmux 会话!
# 纯文本列表模式(适合脚本)
./tmux-dash --list# 方式一: 直接克隆
git clone https://github.com/LinckLin/TmuxDash.git && cd TmuxDash
./setup.sh # 自动装依赖 + 自动加 tmux-dash 别名
# 方式二: 手动装
python3 -m venv .venv && .venv/bin/pip install rich核心就两个文件: tmux-dash(启动器) + tmux-dash.py(主程序), 只有 python3 + tmux + rich 三个依赖, 不用 root、不用编译。
# 拷到其他服务器 (任选一种)
rsync -av --exclude .venv ~/tmux-dash/ user@server:/opt/tmux-dash/
# 或:
tar czf tmux-dash.tgz tmux-dash tmux-dash.py demo.sh preview.py setup.sh README.md
scp tmux-dash.tgz user@server:/tmp/
ssh user@server 'cd /tmp && tar xzf tmux-dash.tgz -C /opt'
# 服务器上装依赖 (一条命令, 自动加别名)
cd /opt/tmux-dash && ./setup.sh服务器要求:
- tmux (apt install tmux / yum install tmux)
- python3 (Debian/Ubuntu 建议加装 python3-venv; 没有也能用, setup.sh 会自动退回 pip3 --user)
跨平台说明:
- macOS / Linux 都支持; 多 socket 发现、嵌套 attach 等行为一致
- 在 Linux 上 agent 进程识别更准: tmux 能直接读到真实命令名(如 codex), 不像 macOS 上只显示 node/python
| 按键 | 功能 |
|---|---|
↑↓ / jk |
选择会话 |
⏎ |
进入会话(Ctrl-b d 返回仪表盘) |
a |
强制进入(踢掉其他客户端) |
w |
进入当前活动窗口 |
d |
踢出该会话的所有客户端 |
n |
新建会话(创建后自动进入) |
r |
重命名会话 |
x |
删除会话(y 确认) |
/ |
过滤会话(Enter 确认,空 = 清除;Esc 取消) |
s |
切换排序:最近活动 / 名称 / 创建时间 |
p |
显示/隐藏详情面板 |
R |
手动刷新 |
q / Ctrl-C |
退出 |
# 让自己所有的 agent 都在 tmux 里跑, 然后用 tmux-dash 统一管理
tmux new-session -d -s pi-agent 'cd ~/work/agent && pi'
tmux new-session -d -s codex-api 'codex exec "实现登录接口"'
tmux new-session -d -s claude 'claude'
./tmux-dash # 全部会话一目了然, 谁在干活谁闲着一眼看出小提示: 在 tmux 里跑
tmux-dash也可以(tmux new -A -s dash),嵌套 attach 会自动抑制 tmux 警告。
| 文件 | 说明 |
|---|---|
tmux-dash.py |
主程序(可独立运行) |
tmux-dash |
启动器(自动选择 venv / 系统 python,不改变当前目录) |
setup.sh |
一键安装:装依赖 + 自动添加 tmux-dash 别名 |
demo.sh |
演示会话脚本 |
preview.py |
本地生成效果预览图(合成数据,不入库) |
- 数据源:
tmux list-sessions/list-panes -a(每 2 秒轮询,开销极小) - 终端模式:只把输入设为 raw(禁用行缓冲/回显),保留输出
\n→\r\n转换 —— 否则在 tmux 里显示会错位 - agent 识别:会话名正则 + 面板进程名命中表,命中即显示 🤖 徽章
- 在 macOS 上 agent 的进程名通常显示为运行时(node/python),因此会话名是更可靠的识别信号
MIT © LinckLin