跳到正文

realfishsam

agent-notch

The open-source alternative to vibe-island

README 已保存到本站,可直接阅读

Documentation snapshot

README 快照

本页保存的是公开项目资料快照,阅读过程不需要连接 GitHub。

Agent Notch

Your AI agents, living next to the MacBook notch.

While Claude Code or Codex is working, its mascot walks beside the notch — the Claude Code banner critter for Claude, the official Codex pet for Codex. Each agent has its own slot: the moment one finishes, its mascot becomes a green blob (even while the other keeps working). The green is a “finished since you last looked” notification — focusing your terminal clears it. Click to open a panel of your sessions, grouped by prompt, with every subagent tucked under a dropdown.

The panel

One row per session, titled by the tool, led by your latest prompt — not the agents’ chatter. Subagents (Codex’s philosopher swarm, Claude’s Task agents) fold under a ▸ N subagents dropdown. Running rows show their mascot walking in place; finished rows get a green pixel checkmark. The tag on the right is the actual model that session runs.

How it works

No hooks, no APIs, no accounts. Liveness detection follows open-vibe-island’s model — a session is a running agent process in a terminal — polled every 3 s:

  • ps finds claude/codex processes attached to a TTY (headless/background sessions are ignored)
  • lsof maps each process to the transcript it holds open (Codex), or to its working directory (Claude Code, which doesn’t keep the transcript fd open)
  • transcripts provide the metadata: prompts, snippets, models, subagents
    • Claude Code: ~/.claude/projects/*/*.jsonl (+ /subagents/agent-*.jsonl)
    • Codex: ~/.codex/sessions/**/*.jsonl, grouped by parent_thread_id

Within a live session, busy vs idle is a hybrid: process alive + transcript written in the last 30 s = busy (mascot walks); alive but quiet = idle (nothing in the notch, dimmed row in the panel); process gone for 2 polls = done (green blob). Sessions idle over 6 h drop off the panel. Activating a terminal app (Ghostty, Terminal, iTerm2, kitty, Warp, Alacritty) acknowledges finished agents and clears their green indicator.

Known limitation: the ~30 s afterglow

Busy/idle is inferred from transcript write times, and transcript writes are bursty — so the mascot keeps walking for up to ~33 s (30 s window + 3 s poll) after a turn actually ends, and conversely a turn’s quiet stretches are smoothed over. No process-level proxy (network, CPU, child processes) can fully fix this: only the agent knows when its turn ends. The precise fix would be agent hooks (UserPromptSubmit/Stop writing a state file, as open-vibe-island does), deliberately skipped here to keep the zero-config, no-hooks design. If the afterglow bothers you, that’s the upgrade path.

The collapsed window is transparent and fully click-through except the tiny indicator zone, so it never blocks menu items or apps underneath. In fullscreen spaces the bar spans the whole top edge.

Codex pet

The Codex animation uses the official Codex Pets spritesheets (in pets/). Switch pets with:

echo dewey > ~/.config/agent-notch/pet

Options: codex, dewey, fireball, rocky, seedy, stacky, bsod, null-signal. Takes effect within a couple of seconds, no restart needed. (Spritesheets © OpenAI, from their public pets CDN.)

Build & run

swiftc -O main.swift -o AgentNotch
./AgentNotch &
  • Click the indicator → open the panel. Click anywhere → close.
  • To start at login: System Settings → General → Login Items → add AgentNotch.
  • Requires macOS 12+ (built and tested on a notched MacBook; on notchless displays it centers on a virtual notch).

Official distribution

获取与安装

暂未发现可确认的官方软件包地址

当前 README 快照没有出现 npm、PyPI、Crates.io、pub.dev 等官方包页链接。本站不会根据仓库名称猜测下载地址。

本站不托管项目文件;需要安装时,请以项目维护者发布的官方文档为准。

使用前核验

本站保存公开资料用于阅读,不代表安全审计或功能背书。安装前请核对许可证、依赖来源和发布签名,不要直接运行来源不明的二进制文件或高权限脚本。