aieye
Native macOS menu bar app for Claude Code, Codex, and Claude background agents — unified session list, in-panel reply, sub-agent view, smart resume
Links
README
From the repo.
aieye
A native macOS menu bar app for monitoring AI CLI sessions (Claude Code, Codex) — never lose a conversation, see what's running at a glance, resume any session in one click.
Features
- Unified session list — every Claude Code and Codex session across every project, sorted by activity. One source of truth for
/resume. - Smart resume — click a row → if the session is running, focus its existing terminal tab (Terminal / iTerm2) or activate the host IDE (VS Code / Cursor / JetBrains). Not running → launch in your preferred terminal with
claude --resume <id>/codex resume <id>. - Live activity detection — per-session
generating…/idlebadge based on JSONL tail heuristic (Claude:stop_reasonaware; Codex:task_started/completeevent stream). - Animated tray icon — eye-themed frames reflect global state: closed eye idle, blink animation while any session is generating, open eye + count when sessions are waiting for your attention. Auto-clears on tray click / per-session interaction / 24h expiry.
- Per-session ✓ checkmark — sessions that just finished are flagged until you interact again (click row, acknowledge, or user types in that terminal).
- Inline + hover preview — each row shows last user/assistant text snippet inline (muxbar-style); hovering opens a right panel with the last ~10 turns full text.
- Cleanup & bulk archive — filter by CLI / age / search, checkbox multi-select, move old sessions to Trash. 7-day safety window protects recent sessions in both frontend and backend.
- Overflow menu per row — Reveal in Finder · Open in new terminal (force fresh) · Copy session ID · Move to trash (if idle).
- Adapter architecture —
SessionAdaptertrait makes adding new AI CLIs a single-module change.
Menu bar icon states
| Icon | State |
|---|---|
| No sessions active — closed eye (idle) | |
| N sessions currently generating responses — blinking animation | |
| N sessions recently finished — open eye (awaiting attention) |
Panel screenshot & demo GIF coming in
docs/assets/— see Live panel preview (TODO).
Requirements
- macOS 13 (Ventura) or later
- Node 18+ and pnpm 8+ (
brew install pnpm) - Rust 1.70+ (
brew install rustup && rustup default stable) - Xcode Command Line Tools (
xcode-select --install)
Quick start
git clone https://github.com/1989v/aieye.git
cd aieye
./build.sh install
open /Applications/aieye.app
An eye icon appears in your menu bar. Click to see every Claude Code and Codex session you've ever run.
Installation options
1. Build from source (current default)
git clone https://github.com/1989v/aieye.git
cd aieye
./build.sh # Debug build + .app bundle (keeps fast rebuild cycle)
./build.sh release # Production build
./build.sh open # Build + launch from repo
./build.sh install # Build + copy to /Applications
What build.sh does:
- Verifies
pnpm/cargo/rustc pnpm install+pnpm tauri build- Injects
LSUIElement=trueintoInfo.plist(menu-bar mode — no Dock icon) - Ad-hoc codesigns with
codesign --sign -(no Apple Developer account needed) - Strips the quarantine attribute so the app launches without Gatekeeper prompts
2. Homebrew cask (not yet published)
brew install --cask 1989v/tap/aieye
3. Pre-built .dmg (not yet published)
Attached to GitHub Releases. On first launch, right-click → Open (ad-hoc signed, not notarized).
Development
pnpm install
pnpm tauri dev # HMR dev mode
# Tests
export PATH="/opt/homebrew/opt/rustup/bin:$PATH"
cargo test --manifest-path src-tauri/Cargo.toml --lib
Supported CLIs
| CLI | Detection | Resume | Live preview | Activity |
|---|---|---|---|---|
| Claude Code | ✅ | ✅ --resume <id> | ✅ | ✅ stop_reason aware |
| Codex | ✅ | ✅ resume <id> | ✅ | ✅ task_started / task_complete events |
| Gemini CLI / Aider / GPT CLI | 🔜 | 🔜 | 🔜 | 🔜 |
Adding a CLI = implementing SessionAdapter and registering in the coordinator.
Keyboard & interaction
| Action | Behavior |
|---|---|
| Click tray icon | Toggle panel · clears all finished acknowledgements |
| Click row | Smart resume (focus existing terminal tab or launch new) |
| Click row in "정리" mode | Toggle selection checkbox |
| Hover row | Right pane loads recent turns |
| ⋯ menu | Per-session actions |
| ESC / outside click | Close menu / confirm dialog |
Design & documentation
License
MIT © 2026 kgd
Collected info
- ★ 2 stars
- Language: Rust
- Source updated: 5/21/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.