st0012 / cctop
A keyboard-first menubar app to monitor and jump between Claude Code and opencode sessions — minimum setup required.
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing st0012/cctop in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewcctop **A keyboard-first menubar app to monitor and jump between Claude Code and opencode sessions — minimum setup required.** Works with your existing editor and terminal. No IDE needed, no workflow changes — just install the app, connect your tools, and every session shows up in a floating panel you can navigate with your keyboard. Features **At-a-glance status.** A floating menubar panel shows all active sessions with color-coded badges: idle, working, waiting for input, waiting for permission, compacting. See the current prompt or tool in use (e.g. "Editing auth.ts") without switching windows. **Jump directly to any session.** Click a session card to raise its VS Code, Cursor, or iTerm2 window — or stay on the keyboard. Arrow keys to browse, Enter to jump, Tab to switch tabs. **Draggable panel.** Drag the header to reposition the panel anywhere on screen — position persists across launches. Double-click the header to snap back to the default menubar anchor. **Navigate mode.** Hit a global hotkey to overlay numbered badges (1–9) on every session card, then press the number to jump instantly. **Recent Projects.** A second tab keeps session history so you can reopen past projects easily. **Smart status icon.** See session health without opening the panel: • **Status bar:** A proportional bar next to the icon shows green (working), amber (needs input), red (permission pending), or gray (idle). • **Attention tint:** When any session needs your input, the icon shifts to terracotta — visible even in your peripheral vision. • **Notch-aware:** On MacBooks where the notch hides the menubar icon, a small status pill appears next to the camera so you always have a signal. Works with Claude Code and opencode. Themes Four color schemes inspired by beloved developer tools — each with dark and light variants. | Claude | Tokyo Night | Gruvbox | Nord | |:------:|:-----------:|:-------:|:----:| | | | | | Switch themes in Settings > Appearance > Color. Installation Step 1: Install the app **Homebrew:** Or download the latest release — the app is signed and notarized by Apple. Step 2: Connect your tools Follow the app's instructions to install Claude Code and/or opencode plugin. Privacy **No network access. No analytics. No telemetry. All data stays on your machine.** cctop stores only: • Session status (idle / working / waiting) • Project directory name • Last activity timestamp • Current tool or prompt context This data lives in as plain JSON files. You can inspect it anytime: FAQ **Does cctop slow down my coding tool?** No. The plugin writes a small JSON file on each event and returns immediately. There is no measurable impact on performance. **Do I need to configure anything per project?** No. Once the plugin is installed, all sessions are automatically tracked. No per-project setup required. **Does it work with VS Code and Cursor?** Yes. Clicking a session card focuses the correct project window. **Does it work with iTerm2?** Yes. Clicking a session card raises the correct iTerm2 window, selects the tab, and focuses the pane — even with split panes or multiple windows. > [!NOTE] > Requires macOS Automation permission. You'll be prompted to grant it on first use. **Does it work with Warp or other terminals?** It activates the app but cannot target a specific terminal tab. You'll need to find the right tab manually. **How does cctop name sessions?** By default, the project directory name (e.g. shows as "my-app"). In Claude Code, you can rename a session with and cctop picks that up. **No sessions are showing up — what do I check?** First, make sure you restarted sessions after installing the plugin. Then check if session files exist: . If the directory is empty, the plugin isn't writing data — verify it's installed correctly (see Step 2). If files exist but the menubar shows nothing, try restarting the cctop app. **What happens if opencode (or Claude Code) crashes?** cctop detects dead sessions automatically. It checks whether each session's process is still running and removes stale entries. No manual cleanup needed. **Does the opencode plugin need Node.js or Bun installed separately?** No. The plugin runs inside opencode's built-in Bun runtime. You don't need to install anything beyond the plugin file itself. **Why does the app need to be in /Applications/?** The Claude Code plugin looks for inside . Installing elsewhere breaks the hook path. (The opencode plugin writes session files directly and does not need the app in a specific location.) Uninstall If installed via Homebrew: How it works Both tools write to the same session store — the menubar app doesn't care where the data comes from. • Each tool has its own plugin that translates events into session state • **Claude Code**: hooks invoke (a Swift CLI), which writes JSON session files • **opencode**: a JS plugin listens to events and writes the same JSON format directly • Both write to — the menubar app watches this directory and displays live status Build from source Requires Xcode 16+ and macOS 13+. License MIT