A lightweight macOS menu bar app that gives you instant access to Claude Code via a global hotkey. Press Option+Space anywhere, type a question, get a streaming response in a floating panel.
Think of it as the ChatGPT desktop overlay, but backed by your local Claude Code CLI.
- Option+Space opens a floating frosted-glass panel above all windows
- Type a question, hit Return — response streams in with markdown rendering
- Panel stays visible when you switch apps
- Escape to dismiss, Option+Space again for a fresh prompt
- Menu bar icon only — no Dock icon, no Cmd+Tab entry
- ~350KB release binary
- macOS 14+
- Claude Code CLI installed at
~/.local/bin/claude - Accessibility permissions (for the global hotkey)
git clone https://github.com/eddowding/ClaudeLauncher.git
cd ClaudeLauncher
swift build
.build/debug/ClaudeLauncherFor a release build:
swift build -c release
.build/release/ClaudeLauncherCreate a proper .app bundle so macOS can add it to Login Items:
# Build the bundle
APP=ClaudeLauncher.app
mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources"
swift build -c release
cp .build/release/ClaudeLauncher "$APP/Contents/MacOS/"Then copy the Info.plist from this repo into $APP/Contents/ (or use the one generated by the build script), move to /Applications, and add to Login Items via System Settings > General > Login Items.
cp -R ClaudeLauncher.app /Applications/
codesign -f -s - /Applications/ClaudeLauncher.appClaude Code picks up CLAUDE.md from whatever directory it runs in. By default, Claude Launcher runs from $HOME. To point it at a specific project:
Option 1: Dotfile (recommended)
echo "$HOME/path/to/your/project" > ~/.claude-launcher-dirOption 2: Environment variable
export CLAUDE_LAUNCHER_DIR="$HOME/path/to/your/project"The dotfile is simpler for Login Items since environment variables don't persist across app launches. Resolution order: CLAUDE_LAUNCHER_DIR env var > ~/.claude-launcher-dir file > $HOME.
Four files, one dependency:
| File | Purpose |
|---|---|
main.swift |
NSApplication bootstrap, .accessory policy (no dock icon) |
AppDelegate.swift |
Menu bar icon + HotKey registration |
FloatingPanel.swift |
Borderless NSPanel — stays above all apps, frosted glass, bottom-center positioning |
ContentView.swift |
SwiftUI: text input + streaming markdown response |
The app spawns claude -p "your question" --output-format text via a clean shell, streams stdout chunks into the UI, and renders markdown inline.
Uses soffes/HotKey for the global keyboard shortcut (Carbon wrapper, keeps it simple).
After making changes:
pkill ClaudeLauncher; swift build -c release && cp .build/release/ClaudeLauncher /Applications/ClaudeLauncher.app/Contents/MacOS/ClaudeLauncher && codesign -f -s - /Applications/ClaudeLauncher.app && open /Applications/ClaudeLauncher.appMIT