cctop Session Panel
Track AI coding sessions from the macOS menu bar and jump back to the one that needs you.
- Source repo
- st0012/cctop
- Stars
- ★ 154
- Last updated
- 9d ago
- License
- MIT
- Primary language
- Swift
- FA score
- 73/100 · Some gaps
At a glance
- How it runs
- Works with
- Platform-specificCodex · Claude Code
- Cost
- Free, no paid service needed
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A developer running several Claude Code or Codex sessions who needs to spot which one is waiting for input.
- Not a fit if
- Users who need a native Windows or Linux app
- Users who need exact focus on an IDE window from the panel
- Source review
- 73/100 · Some gaps
What does this agent do, and when should you use it?
cctop is a menu bar app for macOS 13+ that brings local session status from Claude Code, Codex, opencode, and pi into one view. Each tool uses a plugin, extension, or event hook to call the native helper `cctop-hook`, which writes a JSON file per session under `~/.cctop/sessions/`; the app watches those files and displays session status. From a session card or Navigate mode, users can jump to supported terminal windows, tabs, panes, or desktop threads, open a project folder, or activate an app. It also keeps recent projects and finds ended agent worktrees for cleanup, checking Git state before offering removal actions. Session data stays local; signed builds use the network for Sparkle update checks and downloads.
After installing and opening the macOS app, connect tools in Settings: Claude Code / Claude Desktop use a plugin and event hooks, Codex CLI / Desktop use event hooks, opencode uses a plugin, and pi uses an extension. On session events, each integration calls cctop-hook to write session status and related information as JSON under ~/.cctop/sessions/; cctop watches that directory and shows working, idle, or waiting sessions in its menu bar panel. Clicking a card or using Navigate mode jumps to a recognized terminal target. For editors, the app focuses a window and uses a workspace file if present; when it cannot find an exact target, it activates the app or opens the project in Finder. It also keeps recent projects and finds ended agent worktrees that remain on disk, checking Git safety before offering removal actions.
- A developer running several Claude Code or Codex sessions who needs to spot which one is waiting for input.
- A user running agent sessions in iTerm2, Ghostty, tmux, or another supported terminal who wants to return to the right window or pane from the menu bar.
- An individual developer using Claude Code, Codex, opencode, or pi who wants one local view of session status across those tools.
- A CLI agent user who regularly creates Git worktrees and needs to inspect and remove worktrees left behind by ended sessions.
- A developer who wants to reopen recent project folders without searching through old terminals.
How do you install or deploy this agent?
Requires macOS 13 or later. Download the signed DMG for your processor, or install with Homebrew:
brew install --cask st0012/cctop/cctopApple Silicon and Intel builds are also available:
Apple Silicon: https://github.com/st0012/cctop/releases/latest/download/cctop-macOS-arm64.dmg
Intel: https://github.com/st0012/cctop/releases/latest/download/cctop-macOS-x86_64.dmgOpen the app, then connect tools in Settings. For Claude Code / Claude Desktop, install the plugin with:
claude plugin marketplace add st0012/cctop
claude plugin install cctopFor opencode, pi, and Codex, use Install Plugin or Install Hooks in Settings. After installing Codex hooks, start a Codex CLI session and choose Trust all and continue; Codex Desktop shares that trust state. Building from source requires Xcode 16+ and macOS 13+.
How do you use this agent?
Open cctop's Settings and install detected client integrations under Tools and companion integrations under Integrations. Restart sessions already running after installing hooks or plugins; new sessions are then tracked automatically, with no per-project setup. Open the menu bar panel to review status and click a session card to jump back. Alternatively, use the global hotkey for Navigate mode, then press 1–9 to select a session. Right-clicking hides a session, but it cannot be shown again while its local session record exists. Codex hooks also require an initial trust step in Codex CLI.
What are this agent's strengths and limitations?
- Combines session status from Claude Code, Codex, opencode, and pi in one menu bar panel.
- Offers exact window, tab, or pane jumps for multiple terminals, plus a numbered Navigate mode.
- Stores session records as local JSON; the project states it has no analytics, telemetry, or session upload.
- Checks Git state before offering actions to remove worktrees left by ended sessions.
- Requires macOS 13+; the README documents no Windows or Linux build.
- Each client needs its own plugin, extension, or hook setup; Codex also requires the user to trust its hooks.
- Exact jumps depend on the terminal and its configuration; some targets need macOS Automation permission and may fall back to app activation.
- Editor integration focuses a project window rather than providing the documented exact session-level window targeting.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| cctop Session Panel This agent | 73 · Some gaps | Desktop appFree | ★ 154 | 9d ago | Swift | Codex · Claude Code |
| Alook AI Workforce Layer | 42 · Major gaps | CLIFree + model costs | ★ 1.3k | today | TypeScript | Codex · Claude Code |
| Hermes Studio | 44 · Major gaps | Desktop appFree + model costs | ★ 11k | today | TypeScript | Codex · Claude Code · OpenAI API |
| Wondel.ai Agent Skills | 40 · Major gaps | Agent plugin / skillFree | ★ 2.4k | 1mo ago | Shell | — |
How does FollowAgents rate this agent?
Why each dimension lost points
The README says session state is stored locally as JSON, is not uploaded, and identifies updater checks and downloads as network activity; it also diagrams local hooks writing state for the app to read. Hiding a session requires confirmation, cleanup checks Git state, and uninstall steps describe removal, supporting the least-privilege, confirmation, and recovery scores. Deductions: session files include prompt context and are plain text, with no encryption or access-control discussion; automation permissions and Codex hook trust are documented, but setup and navigation can still cause system-level effects; the license names a copyright holder, but publisher identity is unverified and no clear maintenance responsibility or dependency-security policy is shown.
The README describes integrations, session files, navigation targets, and fallback behavior in useful detail. CI configuration lists Swift linting, build and tests, plugin tests, hook-contract validation, and a helper smoke test, with GitHub Actions pinned to commit hashes. Deductions: static materials cannot establish that these workflows actually pass; runtime failure handling and comprehensive error messages are not shown, beyond FAQ troubleshooting steps; SwiftLint and check-jsonschema installation depend on external package sources.
The audience and scenarios are concrete, spanning several coding tools, editors, terminals, multi-session navigation, recent projects, and worktree cleanup. The README specifies permissions, tool versions, fallback behavior, and differences in setup and trust across clients. Deductions: the stated environment is limited to macOS 13 and later, and some navigation depends on particular app configuration or versions; the supplied materials do not enumerate the event scope and trigger boundaries for every integration.
The README is organized around features, compatibility, installation, privacy, FAQ, and reference material; it includes installation, build, and uninstall commands, and documents limitations, platform requirements, and a past Intel updater issue. The MIT license text is complete. Deductions: the supplied files contain no changelog or clear version policy, and the README only links to the latest release; maintenance responsibility can only be inferred from the repository and copyright names, with no team, support channel, or response commitment; there is no separate naming-stability policy.
The product provides scannable session status, numbered hotkey navigation, project opening or app activation, and a cleanup list for a clear multi-session switching problem. The README identifies supported tools and navigation targets, supporting its intended practical value. Deductions: cost-benefit is inferred from feature descriptions, with no resource-use or user-outcome data; integrations require plugin or hook setup and may require system automation permission or a Codex trust action.
README claims about privacy, integrations, and workflow are supported with local paths, data fields, commands, and a flow diagram; CI configuration lists corresponding static checks and test commands, and the license can be inspected directly. Deductions: documentation and CI are from the same repository, so corroboration is limited; claims about signing, notarization, and no telemetry have no independent evidence in the supplied material; this assessment is static and does not treat documented checks as executed verification.
- Session data is stored as plain JSON locally and includes current tool or prompt context; handle it as sensitive local data.
- Exact navigation varies by app, version, configuration, and system permission; some cases fall back to activating an app or opening the project folder.
- The CI file lists tests and checks, but this assessment did not run them and cannot confirm their actual results.
FAQ
Does cctop upload session data or send it to a cloud service?
~/.cctop/sessions/. Signed builds use the network for Sparkle update checks and downloads.