The ghost that haunts your CI.
A macOS menubar app that watches your GitHub Actions workflows, nudges you when builds finish, and stays out of your way the rest of the time.
Click the ghost in your menubar. A panel drops down showing your workflow runs grouped by repo, sorted by most recent activity. Green dot means it passed. Red dot means it didn't. Click any run to open it in your browser. When a run finishes, a native macOS notification tells you the result. A badge on the icon shows how many runs are currently active.
- Custom panel that drops down from the tray icon, grouped by repo
- Badge count showing active runs on the menubar icon
- Native notifications when workflow runs complete
- Click any run to jump straight to it on GitHub
- Settings window for binding your GitHub PAT and picking repos to watch
- macOS
- Rust (stable)
- Node.js 18+
- Tauri CLI v2:
cargo install tauri-cli --version "^2.0" - A GitHub Personal Access Token with
repoandworkflowscopes
git clone https://github.com/jpwesselink/ghast.git
cd ghast
cd src-panel && npm install && cd ..
cargo tauri devGrab the .dmg from Releases, open it, drag ghast to Applications. On first launch, macOS may block it because it's not signed yet. If so, run this once:
xattr -cr /Applications/ghast.appcargo tauri buildThe .app bundle lands in src-tauri/target/release/bundle/macos/ghast.app.
- Launch ghast. A ghost appears in your menubar.
- Click the ghost, then Settings...
- Paste your GitHub PAT and click Bind
- Check the repos you want to watch, then click Unleash
ghast starts polling immediately.
With the panel open, type hellripper to enter the other realm. Pentagrams. Baphomet. Blood rain. Gothic blackletter. Candlelight glow.
To return to humanity, type holydiver.
The theme persists across restarts. You have been warned.
| Layer | Tech |
|---|---|
| App shell | Tauri v2 |
| Backend | Rust, octocrab, tokio |
| Panel UI | React, Vite, TypeScript |
| Notifications | notify-rust |
src-panel/ React frontend (panel + settings + about)
src-tauri/
src/
lib.rs Tauri setup, commands
config.rs Config persistence
github.rs GitHub API client
poller.rs Background polling loop
state.rs Shared app state
panel.rs Panel window positioning
tray.rs Tray icon, badge, settings
notify.rs Completion detection, notifications
Hellripper-mode status icons are from Game Icons by their respective authors, licensed under CC BY 3.0, served via Iconify.
MIT. Use it. Fork it. Haunt your own builds.