A keyboard-first menubar app to monitor and jump between AI coding sessions — minimum setup required.
See the codeKeep an eye on your AI coding sessions.
See which session is waiting on you. Jump back to the right tab, pane, thread, or project with a keystroke.
Download for Apple Silicon | Intel | Website
One compact menubar view for sessions across tools.
Full launch video (MP4)
Each integration reports session events locally; cctop turns them into one menubar view and a reliable jump target.
|
Claude Code / Desktop Claude plugin + event hooks |
Codex CLI / Desktop Codex event hooks + trust step |
opencode opencode plugin events |
pi pi extension events |
When you click a session card, or use Navigate mode, cctop tries to take you to the most specific place it can.
allow_remote_control socket-only and
listen_on are enabled in kitty.conf; otherwise it falls back to app
activation.WARP_FOCUS_URL), available
since Warp v0.2026.05.27. Sessions started on older Warp versions fall back to
app activation.
Navigate modeHit a global hotkey to overlay numbered badges on every session card, then press 1 to 9 to jump instantly. |
|
Draggable panelDrag the header anywhere on screen. cctop remembers the position, and double-clicking snaps it back to the menubar anchor. |
|
Smart status iconThe menubar icon summarizes session health: healthy, needs attention, and a slim pill for laptops with a camera notch. |
|
Worktree cleanupCleanup finds ended agent worktrees that still exist on disk, especially CLI or manual worktree runs. cctop checks Git state before offering the right remove action. |
|
Recent projectsA second tab keeps session history so you can reopen past projects without hunting through old terminals. |
|
Download the latest signed and notarized build:
Or use Homebrew:
brew install --cask st0012/cctop/cctop
cctop runs on macOS 13+. Signed release builds can check for updates through Sparkle.
Open Settings. cctop shows setup actions for detected coding clients under Tools, and companion apps under Integrations:
Claude setup:
claude plugin marketplace add st0012/cctop
Then install the plugin:
claude plugin install cctop
Restart any running sessions to pick up newly installed hooks or plugins.
Four palettes inspired by developer tools, each with light and dark variants. Switch themes in Settings > Appearance > Color.
| Claude | Tokyo Night | Gruvbox | Nord |
|---|---|---|---|
|
|
|
|
No analytics, no telemetry, and no session upload. Session data stays on your
machine in ~/.cctop/sessions/ as plain JSON.
cctop also publishes ~/.cctop/display-state.json for display integrations.
Each session entry contains only the ordered display identity, name, status,
and resolved color needed for the keys. The file also includes its schema
version, generation time, and cctop process-liveness metadata. The Stream Deck
plugin does not inspect session files or any Claude, Codex, opencode, or pi data.
Signed release builds use network access only for Sparkle update checks and downloads.
Inspect the files anytime:
ls ~/.cctop/sessions/
cat ~/.cctop/sessions/*.json | python3 -m json.tool
The session-file fields are documented in
docs/session-files.md.
No. Each integration calls the lightweight native helper (cctop-hook) on
session events, writes a small JSON file, and returns immediately.
No. Once your tools are connected, new sessions are automatically tracked.
By default, cctop uses the project directory name. In Claude Code, you can rename
a session with /rename and cctop picks that up.
First, restart sessions after installing the plugin or hooks. Then check whether session files exist:
ls ~/.cctop/sessions/
If the directory is empty, the integration is not writing data yet. If files
exist but the menubar shows nothing, check whether those JSON files have
"hidden": true, then try restarting cctop.
Some desktop clients remove their managed worktree when you archive a session. In that case, there is nothing left for cctop to remove, so Cleanup stays quiet. Cleanup is most useful for CLI and manual-worktree sessions where the linked Git worktree remains on disk after the session ends.
Codex only runs hooks you have explicitly reviewed and trusted. cctop can install the hooks, but Codex Desktop does not currently surface the hook-review prompt. Start one Codex CLI session in a terminal and trust the hooks there; Codex Desktop shares that trust state.
cctop detects dead sessions automatically by checking whether each session's process is still running, then removes stale entries.
Plugins look for cctop-hook inside /Applications/cctop.app,
~/Applications/cctop.app, or ~/.cctop/bin/. Installing elsewhere breaks the
hook path.
cctop releases up to and including v0.15.2 shipped an appcast that confused Sparkle's update picker, so Intel Macs could receive the Apple Silicon build. The fix is in place going forward, but installed copies of cctop v0.15.2 and older may need one manual replacement:
cctop-macOS-x86_64.dmg.cctop.app into /Applications/, replacing the existing one.All integrations call cctop-hook, a single native helper that owns session
state.
flowchart LR
tools["Claude / Codex / opencode / pi"] --> hook["cctop-hook"]
hook --> files["~/.cctop/sessions/*.json"]
files --> app["cctop menubar app"]
cctop-hook calls.cctop-hook writes one small JSON file per session.~/.cctop/sessions/ and renders live status.# Remove the menubar app
rm -rf /Applications/cctop.app
# Remove the Claude Code / Claude Desktop plugin
claude plugin remove cctop
claude plugin marketplace remove cctop
# Remove the opencode plugin
rm ~/.config/opencode/plugins/cctop.js
# Remove the pi extension
rm ~/.pi/agent/extensions/cctop.ts
# Remove the Codex CLI / Codex Desktop hooks
rm ~/.codex/cctop-shim.sh
# Then remove cctop entries from ~/.codex/hooks.json
# Remove session data and config
rm -rf ~/.cctop
If installed via Homebrew:
brew uninstall --cask cctop
Requires Xcode 16+ and macOS 13+.
git clone https://github.com/st0012/cctop.git
cd cctop
./scripts/bundle-macos.sh
cp -R dist/cctop.app /Applications/
open /Applications/cctop.app
MIT
Swift
87.3%
HTML
5.1%
JavaScript
3.5%
Shell
3.0%
A keyboard-first menubar app to monitor and jump between AI coding sessions — minimum setup required.
See the codeKeep an eye on your AI coding sessions.
See which session is waiting on you. Jump back to the right tab, pane, thread, or project with a keystroke.
Download for Apple Silicon | Intel | Website
One compact menubar view for sessions across tools.
Full launch video (MP4)
Each integration reports session events locally; cctop turns them into one menubar view and a reliable jump target.
|
Claude Code / Desktop Claude plugin + event hooks |
Codex CLI / Desktop Codex event hooks + trust step |
opencode opencode plugin events |
pi pi extension events |
When you click a session card, or use Navigate mode, cctop tries to take you to the most specific place it can.
allow_remote_control socket-only and
listen_on are enabled in kitty.conf; otherwise it falls back to app
activation.WARP_FOCUS_URL), available
since Warp v0.2026.05.27. Sessions started on older Warp versions fall back to
app activation.
Navigate modeHit a global hotkey to overlay numbered badges on every session card, then press 1 to 9 to jump instantly. |
|
Draggable panelDrag the header anywhere on screen. cctop remembers the position, and double-clicking snaps it back to the menubar anchor. |
|
Smart status iconThe menubar icon summarizes session health: healthy, needs attention, and a slim pill for laptops with a camera notch. |
|
Worktree cleanupCleanup finds ended agent worktrees that still exist on disk, especially CLI or manual worktree runs. cctop checks Git state before offering the right remove action. |
|
Recent projectsA second tab keeps session history so you can reopen past projects without hunting through old terminals. |
|
Download the latest signed and notarized build:
Or use Homebrew:
brew install --cask st0012/cctop/cctop
cctop runs on macOS 13+. Signed release builds can check for updates through Sparkle.
Open Settings. cctop shows setup actions for detected coding clients under Tools, and companion apps under Integrations:
Claude setup:
claude plugin marketplace add st0012/cctop
Then install the plugin:
claude plugin install cctop
Restart any running sessions to pick up newly installed hooks or plugins.
Four palettes inspired by developer tools, each with light and dark variants. Switch themes in Settings > Appearance > Color.
| Claude | Tokyo Night | Gruvbox | Nord |
|---|---|---|---|
|
|
|
|
No analytics, no telemetry, and no session upload. Session data stays on your
machine in ~/.cctop/sessions/ as plain JSON.
cctop also publishes ~/.cctop/display-state.json for display integrations.
Each session entry contains only the ordered display identity, name, status,
and resolved color needed for the keys. The file also includes its schema
version, generation time, and cctop process-liveness metadata. The Stream Deck
plugin does not inspect session files or any Claude, Codex, opencode, or pi data.
Signed release builds use network access only for Sparkle update checks and downloads.
Inspect the files anytime:
ls ~/.cctop/sessions/
cat ~/.cctop/sessions/*.json | python3 -m json.tool
The session-file fields are documented in
docs/session-files.md.
No. Each integration calls the lightweight native helper (cctop-hook) on
session events, writes a small JSON file, and returns immediately.
No. Once your tools are connected, new sessions are automatically tracked.
By default, cctop uses the project directory name. In Claude Code, you can rename
a session with /rename and cctop picks that up.
First, restart sessions after installing the plugin or hooks. Then check whether session files exist:
ls ~/.cctop/sessions/
If the directory is empty, the integration is not writing data yet. If files
exist but the menubar shows nothing, check whether those JSON files have
"hidden": true, then try restarting cctop.
Some desktop clients remove their managed worktree when you archive a session. In that case, there is nothing left for cctop to remove, so Cleanup stays quiet. Cleanup is most useful for CLI and manual-worktree sessions where the linked Git worktree remains on disk after the session ends.
Codex only runs hooks you have explicitly reviewed and trusted. cctop can install the hooks, but Codex Desktop does not currently surface the hook-review prompt. Start one Codex CLI session in a terminal and trust the hooks there; Codex Desktop shares that trust state.
cctop detects dead sessions automatically by checking whether each session's process is still running, then removes stale entries.
Plugins look for cctop-hook inside /Applications/cctop.app,
~/Applications/cctop.app, or ~/.cctop/bin/. Installing elsewhere breaks the
hook path.
cctop releases up to and including v0.15.2 shipped an appcast that confused Sparkle's update picker, so Intel Macs could receive the Apple Silicon build. The fix is in place going forward, but installed copies of cctop v0.15.2 and older may need one manual replacement:
cctop-macOS-x86_64.dmg.cctop.app into /Applications/, replacing the existing one.All integrations call cctop-hook, a single native helper that owns session
state.
flowchart LR
tools["Claude / Codex / opencode / pi"] --> hook["cctop-hook"]
hook --> files["~/.cctop/sessions/*.json"]
files --> app["cctop menubar app"]
cctop-hook calls.cctop-hook writes one small JSON file per session.~/.cctop/sessions/ and renders live status.# Remove the menubar app
rm -rf /Applications/cctop.app
# Remove the Claude Code / Claude Desktop plugin
claude plugin remove cctop
claude plugin marketplace remove cctop
# Remove the opencode plugin
rm ~/.config/opencode/plugins/cctop.js
# Remove the pi extension
rm ~/.pi/agent/extensions/cctop.ts
# Remove the Codex CLI / Codex Desktop hooks
rm ~/.codex/cctop-shim.sh
# Then remove cctop entries from ~/.codex/hooks.json
# Remove session data and config
rm -rf ~/.cctop
If installed via Homebrew:
brew uninstall --cask cctop
Requires Xcode 16+ and macOS 13+.
git clone https://github.com/st0012/cctop.git
cd cctop
./scripts/bundle-macos.sh
cp -R dist/cctop.app /Applications/
open /Applications/cctop.app
MIT
Swift
87.3%
HTML
5.1%
JavaScript
3.5%
Shell
3.0%