A macOS menu bar app that monitors the status of your developer credentials and services at a glance.
Built as a SwiftBar plugin.
🔑
───────────────────────────────────────
✅ AWS — Account 123456789 (2070h remaining)
✅ GCP — user@company.com
✅ GitHub — username
✅ Axiom — org-name
✅ WorkOS — user@company.com (75h remaining)
✅ Slack — Workspace Name
✅ Linear — workspace-slug
✅ Notion — connected
✅ Gmail — user@company.com
───────────────────────────────────────
⚙️ Settings
✓ AWS
✓ GCP
...
- Green = authenticated / running
- Yellow = app not running
- Red = expired or missing credentials
- Badge count shows number of credential issues
| Service | What it checks | Expiry info |
|---|---|---|
| AWS | aws sts get-caller-identity |
SSO session remaining time from cache |
| GCP | gcloud auth print-access-token |
Tokens auto-refresh; no expiry shown |
| GitHub | gh auth status |
Shows expiry if using fine-grained PAT |
| Axiom | API call with token from ~/.axiom.toml |
API tokens don't expire |
| WorkOS | Decodes JWT from ~/.factory/auth.encrypted |
Token expiry countdown |
| Slack | Process check + workspace name from app data | N/A |
| Linear | Process check + workspace from app data | N/A |
| Notion | Process check | N/A |
| Gmail | Mail.app process check + account email | N/A |
- macOS
- SwiftBar (
brew install --cask swiftbar) - Python 3 (ships with macOS)
- CLI tools for services you want to monitor:
awsCLI (for AWS)gcloudCLI (for GCP)ghCLI (for GitHub)curl(for Axiom)
git clone https://github.com/sumeet-k-agarwal/locksmith.git
cd locksmith
chmod +x install.sh
./install.shThe install script will:
- Install SwiftBar via Homebrew if not present
- Copy the plugin to
~/Library/Application Support/SwiftBar/Plugins/ - Copy icons to
~/.config/locksmith/icons/ - Create a default config at
~/.config/locksmith/config
Then open SwiftBar and point it at your plugins directory.
Toggle services on/off by editing ~/.config/locksmith/config:
aws=1
gcp=1
github=1
axiom=1
workos=0
slack=1
linear=1
notion=0
gmail=1
Set to 1 to show, 0 to hide. You can also toggle from the menu bar via Settings.
The filename locksmith.1h.sh means it refreshes every hour. Rename to change:
locksmith.30m.sh— every 30 minuteslocksmith.5m.sh— every 5 minuteslocksmith.1d.sh— daily
You can also click Refresh All in the menu.
Add a new check_yourservice() function in the plugin script that prints status|detail where status is one of: ok, warn, expired, missing, error. Then add the service name to ALL_SERVICES and the corresponding entries in display_name() and fix_cmd().
./uninstall.shMIT