tally

agent
Security Audit
Warn
Health Warn
  • License — License: GPL-3.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Warn
  • fs module — File system access in Resources/bloub/export.cjs
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Claude Code & Codex session status and AI usage quotas in your MacBook notch. 把 Claude Code / Codex 会话状态和各家 AI 配额(Claude、Codex、Cursor、Kimi、GLM…)放进刘海。SwiftUI + AppKit,零依赖。

README.md
Tally 图标

Tally

把 Claude Code / Codex 的会话状态和 AI 配额放进 MacBook 刘海

谁在等你、谁跑完了、额度还剩多少,鼠标一停就知道。

A macOS notch app for Claude Code and Codex: session status, quota and usage monitor.

简体中文 | English

下载 Tally(macOS 版)

或者用 Homebrew 装(免放行):brew install --cask guokuaile/tally/tally

macOS 15+ Apple Silicon License GPL-3.0

会话跑完时刘海垂下提示,鼠标停上去展开面板,在 AI、网络、系统几页之间切换

同时开着几个 Claude Code / Codex 会话,得不停切窗口看谁在等审批、谁跑完了;配额快见底了也不知道。Tally 是一个 macOS 刘海 app(Dynamic Island 式的交互):靠 hook 拿到每个会话的状态,配额和用量从各家接口与本地日志读;平时和刘海融为一体,有事才往下垂一条提示,鼠标停上去就展开成一整块面板。

为什么用 Tally

  • 谁在等你,一眼看清:Claude Code 和 Codex 的会话按「等你 / 在跑 / 最近」分组;等审批、等输入、跑完了,刘海垂一条提示并响一声。
  • 状态判得准:按 Esc 打断、API 报错、主回合结束后子 agent 还在后台跑,这些 hook 不报的情况也判得对,不会一直挂着「忙」。
  • 一下回到那个终端:点一行(或 ⌘1–⌘9、⌘0)直接跳到会话所在的终端标签,tmux 的 pane 也行;关掉的会话点「接着聊」开个新窗口接着聊。
  • 各家额度摆一排:Claude、Codex、Cursor、Antigravity,加上 DeepSeek、Kimi、智谱 GLM、New API 中转站;Claude 和 Codex 还有今日 / 本周花费和配速线,照这个速度会不会在重置前用完一眼能看出,过 80% 和用完都会提醒。
  • 本地、原生、零依赖:SwiftUI + AppKit,只读各家登录留下的 token(不刷新、不往钥匙串写),没有统计上报。

顺手还带着:网速与代理、内存与电池、在跑的 app、文件架、保持唤醒(含合盖不休眠),和一只可选的菜单栏小恐龙。

和同类工具的区别

你可能已经在用 它们侧重 Tally 补上的
CodexBar、ccusage、Claude Code Usage Monitor 菜单栏或终端里看 Claude / Codex 的用量与配额 用量之外还有会话状态:谁在等你审批、谁跑完了,点一行跳回那个终端标签或 tmux pane,关掉的会话一键接着聊
Claude Pulse、Vibe Island、AgentNotch、vibe-notch、notchi 刘海里看 Claude Code(部分也支持 Codex、Cursor)的会话 打断、API 报错、主回合结束后子 agent 还在跑,这些 hook 不报的状态也判得准;配额覆盖 Claude、Codex、Cursor、Antigravity、DeepSeek、Kimi、智谱 GLM、New API 八家,带花费与配速线
Atoll、boring.notch 刘海里放音乐、文件架、系统信息 以 agent 会话和 AI 配额为主,网络、系统、应用、文件架顺带;零依赖、只读各家 token、没有统计上报

五个页面

AI 页:会话列表与各家用量
AI:会话列表 + 各家用量条
网络页:吞吐、Wi-Fi、IP 与 DNS
网络:吞吐、Wi-Fi、IP、DNS
系统页:CPU、内存、电池与废纸篓
系统:CPU、内存、电池、废纸篓
应用页:在跑的 app 按内存排
应用:在跑的 app 按内存排
  • AI:会话行带提供方标志和模型名。会话跑完或在等你时,刘海垂一条提示并响一声;面板开着时不提示,会话所在的 Ghostty / Terminal.app / iTerm2 标签正在前台时也不打扰;合盖只剩外接屏时改发系统通知。
  • 网络:网卡吞吐(最近 60 秒折线)、Wi-Fi 信号、本机 IP、网关、DNS;开着系统代理或代理软件时多一张卡片,认出是哪个代理 app、端口、有没有 TUN(接了 mihomo 内核的控制接口时还显示模式)。
  • 系统:芯片、内存、CPU、磁盘、开机时长,电池健康,内存大户前三,废纸篓大小与一键清空。
  • 应用:在跑的 app 按内存排,Dock 里看不见的菜单栏工具和后台 app 带标记,点行打开,右键退出。
  • 音乐:系统「正在播放」的那首歌——封面、歌名、歌手,上一曲 / 播放暂停 / 下一曲。Apple Music、Spotify、酷狗、网易云、浏览器里的视频都认,不弹授权;页签可以常驻,也可以有东西在播才出现。
  • 文件架:把文件拖到刘海上暂存一份副本(脚本里 open -a Tally <文件>、新截图也能自动放进来),之后拖出去、AirDrop 或打开;到了保留时间自动清掉(文件默认 1 天,截图默认 30 分钟,设置里可调)。

文件架页:拖到刘海上的文件与截图

25 秒完整走一遍:提示条 → 悬停展开 → AI、网络、系统、应用、文件架五页。

https://github.com/user-attachments/assets/118fcdd1-92fb-4f42-9dde-9b452a773ada

悬停展开、快捷键、文件架、提示音、配额提醒、各家用量都能在设置里单独关掉;「全屏 app 时隐藏面板」「新截图自动放进文件架」默认关,要用在设置里打开。

菜单栏小恐龙

菜单栏小恐龙的睡觉、跑步、冲刺、生气四个状态,旁边的蛋显示内存
睡觉 · 跑步 · 冲刺(蛋过 70% 变橙) · 生气(蛋过 85% 变红裂开)

设置「面板」里打开(默认关)。恐龙跟着 CPU 睡觉、跑步、冲刺,内存吃紧就冲刺、生气;身边一颗窝里的蛋按内存已用填满,70% 变橙、85% 变红裂开。点它展开面板到「系统」页。

安装

Homebrew(推荐,装完不用再放行):

brew install --cask guokuaile/tally/tally

或者下载 DMG:

  1. 下载 Tally.dmg,把 Tally 拖进「应用程序」。

  2. 在终端放行一次,再从「应用程序」里打开:

    xattr -dr com.apple.quarantine /Applications/Tally.app
    

[!IMPORTANT]
Tally 是个人项目,没有 Apple 开发者签名和公证,macOS 默认会拦下来,所以要有第 2 步。不想敲命令的话,先双击打开一次,被拦下后去「系统设置 → 隐私与安全性」最下面点「仍要打开」。提示「已损坏,无法打开」是同一回事,执行上面那条命令即可。

一定从「应用程序」里打开。直接在 DMG 或下载文件夹里运行时,系统会把 app 挪到临时位置,这时设置里不让注册 hook(那个路径重启就失效)。

系统要求:macOS 15 及以上、Apple Silicon、带刘海的 MacBook(2021 年起的 14 / 16 英寸 MacBook Pro、M2 及以后的 MacBook Air);界面为简体中文。别的 Mac 能启动,但面板不会出现(提醒改发系统通知)。

接上 Claude Code 和 Codex

打开设置(面板右上角齿轮,或展开时按 ⌘,)→「hook」→ 两边各点一次「安装」。

  • Claude 侧改 ~/.claude/settings.json,Codex 侧改 ~/.codex/hooks.json 和 ~/.codex/config.toml(写入信任哈希);改之前都备份成 .tally-backup,你原有的 hook 不动。设置过 CLAUDE_CONFIG_DIR / CODEX_HOME 的会装到那里,用量和配额也跟着读那里;CODEX_HOME 只写在 alias 或启动脚本里、Tally 读不到的,会从 ~/.codex* 里按会话记录认出终端 codex 用的那个目录,不会装进 ChatGPT 桌面版的目录。
  • 装之前就开着的会话要重开一次才会挂上,Codex 只在启动时读 hook。
  • 装好后每一侧下面显示「最近收到事件」;一直显示「还没收到过」时点「自检」,能看出是 hook 本身跑不起来,还是 agent 没在调它。

支持哪些

Agent 会话状态 跳回终端 接着聊
Claude Code ✓ ✓ claude --resume
Codex ✓ ✓ codex resume
用量 配额 花费 / 余额
Claude 5 小时、7 天、按模型的周窗口(带配速线) 今日 / 本周花费
Codex 5 小时、7 天(带配速线) 今日 / 本周花费
Cursor 「Cursor 模型」「其他模型」两个池 —
Antigravity Gemini、Claude 两个池 —
DeepSeek — 余额
Kimi Kimi Code 会员 5 小时、7 天(带配速线) 开放平台余额
智谱 GLM Coding Plan 5 小时、7 天(带配速线) —
New API 中转站 — 余额

后四家默认关,在设置「用量」里打开。key 先从 Claude Code 设置、Kimi Code、zcode、opencode 里自动找,找不到再手填;智谱的配额接口没有公开文档,改版可能失效。

点会话行能跳到哪些终端
终端 点会话行
Ghostty、Terminal.app、iTerm2 切到那个会话所在的标签
tmux 切到那个 pane;外层是 Terminal.app / iTerm2 时连标签一起切,别的终端带到前台
VS Code、Cursor 打开会话所在的工程窗口
Warp、kitty、WezTerm 只把 app 叫到前台(没有稳定的脚本接口)

表外的终端点了会提示找不到窗口。「接着聊」回到会话原来的终端开新窗口(Ghostty、Terminal.app、iTerm2;tmux 里开一个新的 tmux 窗口),其余情况装了 Ghostty 用 Ghostty,没装用 Terminal.app。

快捷操作

操作 效果
鼠标停在刘海上 / 移开 展开 / 收起
⌥⇧T 展开并钉住 / 收起
两指横滑、三指轻扫、数字键 1–9 翻页
⌘1–⌘9、⌘0 跳到第 N 个会话(⌘0 是第 10 个),按住 ⌘ 显示编号
齿轮、展开时按 ⌘, 设置
右键收起的刘海 菜单:设置、刷新用量、退出

权限与隐私

用到时才会问的权限

  • 自动化(控制终端):跳回终端、接着聊、判断会话标签是否在前台。第一次控制某个终端时系统问一次。
  • 管理员密码:只跟「合盖也不休眠」有关。第一次打开时装一条 /etc/sudoers.d/tally 免密规则,只放行开 / 关休眠的两条 pmset 和删掉这条规则自己;另外,启动时发现合盖不休眠开着、又不是 Tally 开的,会给一个「恢复」按钮,点它要输一次密码。
  • 钥匙串:各家登录凭据只读,取值走系统自带的 security 工具,平时不弹框。Codex、Cursor、Antigravity 平时读本地文件或本地服务,钥匙串只作兜底。
  • 通知:只在没有刘海屏(合盖接外接屏)、第一次要发提醒时问。
  • 文件夹访问:打开「新截图自动放进文件架」时,在选择面板里点一下截图文件夹;桌面受隐私保护,点这一下就是授权,不另弹框。

不会申请:屏幕录制、摄像头、麦克风(占用提示只读设备状态)、辅助功能、定位、完全磁盘访问。

数据:会话、日志统计、设置都留在本机,没有统计上报,也没有自动更新。主动联网的行为只有下面这些,每一行都能关。各家配额每 5 分钟查一次(展开面板、手动刷新也查,60 秒内不重复;接口回 429 就按接口退避),token 和 key 只随请求发给它自己那一家,不经过别的服务器。

联网 发给谁 带什么 在哪关
Claude 配额 api.anthropic.com Claude Code 登录留下的 access token,只读不刷新 设置「用量」关掉 Claude
Codex 配额 chatgpt.com Codex auth.json 里的 access token,只读不刷新 设置「用量」关掉 Codex
Cursor 配额 cursor.com、api2.cursor.sh Cursor 登录留下的 access token 设置「用量」关掉 Cursor
Antigravity 配额 先问本机 Antigravity 的语言服务器(127.0.0.1,不出本机);它没开才问 cloudcode-pa.googleapis.com 云端那一步带钥匙串里 Antigravity 的登录 token 设置「用量」关掉 Antigravity
DeepSeek 余额(默认关) api.deepseek.com 你填的 key,或 Claude Code 设置里指向它的那个 设置「用量」
Kimi 配额与余额(默认关) api.kimi.com;api.moonshot.cn 或 api.moonshot.ai 你填的 key、Claude Code 设置里指向它的,或 Kimi Code 登录留下的 token 设置「用量」
GLM 配额(默认关) open.bigmodel.cn 或 api.z.ai,跟 key 的区走,不会发给另一个区 你填的 key,或 Claude Code / zcode / opencode 里配好的 设置「用量」
New API 余额(默认关) 你填的站点 访问令牌和用户 ID 设置「用量」
新版本检查 api.github.com,启动时和之后每 24 小时一次 不带任何账号信息,GitHub 只看到 IP 和「Tally」这个 User-Agent 设置「通用」关掉「检查新版本」

手填的 key 只存在本机 ~/Library/Application Support/Tally/providers.json(权限 600)。网络页读网卡计数和系统代理设置、代理卡片读本机的 mihomo 控制接口,都不出本机;定价表随 app 打包,不远程拉。

占用:面板收起时 CPU 0.8%(一个核的,60 秒中位数)、内存 145 MB(活动监视器「内存」列)。本机 14 寸 MacBook Pro(M3 Max)实测,配额开关按默认、刘海小人开着、一周 Claude 日志 480 MB。

常见问题

  • 面板不出现:只在带刘海的内建屏上显示;合盖或只用外接显示器时会隐藏(提醒改发系统通知)。开了「全屏 app 时隐藏面板」的话,全屏 app 里也不出现。
  • 全屏看视频时不想看到刘海面板:设置「面板」打开「全屏 app 时隐藏面板」。只认系统全屏(绿色按钮、⌃⌘F)。
  • 提示「已损坏」或「无法验证开发者」:见「安装」第 2 步。
  • 会话列表是空的:先到设置「hook」看是不是已安装、有没有「最近收到事件」;装之前开着的会话要重开;还不行就点「自检」。
  • 点会话行提示「要允许 Tally 控制 ××」:去「系统设置 → 隐私与安全性 → 自动化」,打开 Tally 下面对应的开关。找不到开关时执行 tccutil reset AppleEvents com.aiden.tally,再点一次让系统重新问。
  • 只把终端叫到前台、没切到那个标签:Warp、kitty、WezTerm 没有稳定的脚本接口,只能做到这一步。
  • 配额显示「登录已过期」:去 Claude Code 或 Codex 里跑一轮,让它自己刷新登录。Tally 不刷新 token。
  • 百分比后面带「~」:这一轮没取到新读数,显示的是之前的值。

卸载

  1. 设置「hook」里两边各点「移除」,只删 Tally 自己的那几条。
  2. 开过「开机自启」的,先在设置「通用」里关掉;开过「合盖也不休眠」的,在设置「面板」里取消「合盖不休眠的免密规则」。
  3. 退出 Tally,把 Tally.app 拖进废纸篓。
  4. 想清干净,再删 ~/Library/Application Support/Tally/。

用 Homebrew 装的:第 1 步照做,第 3、4 步换成 brew uninstall --zap --cask tally(连数据目录和开机自启一起清)。

工作原理
Claude Code / Codex ──hook──▶ tally-hook ──▶ ~/Library/Application Support/Tally/sessions/<id>.json ──▶ 刘海面板
                                                                                            ▲
                                        transcript、Claude Code 自己的会话状态(补判打断与报错)

hook 只往本地写两样东西:会话状态文件,和一份「最近收到的事件」(给自检用),写完立即退出,从不拦 agent。面板盯着会话目录更新;hook 报不出来的情况(打断、报错),再读 transcript 和 Claude Code 自己的状态补判。配额来自本地日志和各家接口。设计细节见 docs/,参与开发见 CONTRIBUTING.md。

致谢

  • Atoll:用量数据层移植自它(GPL-3.0),文件清单见 NOTICE。
  • NotchDrop:文件架的交互参考了它,代码是重写的。
  • Lobe Icons:提供方标志(MIT),取自 Pulse 整理的版本。
  • 借鉴过的做法:vibe-notch 与 CodeIsland(终端标签在前台时不提示)、codenotch(读 Claude Code 自己的会话状态、429 退避)、codex-island(睡醒后缓一分钟再查配额)。

许可

GPL-3.0。Claude、OpenAI、Codex、Cursor、Antigravity 的名称与标志归各自所有者,Tally 只用它们标明是哪家的会话与用量;Tally 是个人项目,与 Anthropic、OpenAI、Anysphere、Google 均无关联。


觉得 Tally 好用的话,点个 ⭐ Star,让更多同样开着一堆 agent 的人看到它。

Reviews (0)

No results found