Minimal macOS menu bar app that reads Codex session logs from disk and shows session/weekly usage percentages in the status bar.
Inspired by CodexMonitor. Built because the newly shipped Codex app from OpenAI doesn’t surface session/weekly usage at a glance.
“Codesh” is a short nod to Codex Session / Codex Shell—a tiny status‑bar companion for your local Codex usage.
- Reads JSONL session logs from
~/.codex/sessions/YYYY/MM/DD/*.jsonl - Uses
rate_limits.primary.used_percent(session) andrate_limits.secondary.used_percent(weekly) - Falls back to cached values on startup for instant display
- Open
codesh/codesh.xcodeproj. - Ensure the Swift files in
codesh/codesh/are added to the app target. - In your target's Info tab, add:
Application is agent (UIElement)=YES(hides Dock icon)
- Build and run.
- Download
codesh.app.zipfrom the latest GitHub Release. - Unzip it to get
codesh.app. - Drag
codesh.appinto/Applications. - Launch it from Applications.
- If you set
CODEX_HOME, the app will read sessions from$CODEX_HOME/sessions. - App Sandbox is disabled so the app can read
~/.codex/sessionsdirectly.
codesh/codesh/AppDelegate.swiftcodesh/codesh/UsageScanner.swiftcodesh/codesh/UsageController.swiftcodesh/codesh/UsageSnapshot.swiftcodesh/codesh/SettingsStore.swiftcodesh/codesh/Formatters.swift
Run the release script to archive, sign, notarize, and zip the app.
TEAM_ID=ABCDE12345 \\
APPLE_ID=you@appleid.com \\
APP_PASSWORD=app-specific-password \\
BUNDLE_ID=com.your.bundleid \\
./scripts/release.shOutput: ./dist/codesh.app.zip
- In Xcode, set your Signing & Capabilities team and update the bundle identifier.
- Use Product → Archive to create a signed build.
- Distribute the
.appfrom the Organizer, or export it and zip the app bundle for release.
MIT

