The numbers you keep checking, one click away.

What Claude Code and Codex cost today, and how close each account is to a rate limit. One panel in the macOS menu bar.

macOS 26 or later·Apple Silicon or Intel·No account, no telemetry

The cost is what Sissy counted at published rates, not what a vendor charged.

The provider rows, the agents line and the identity line open the pages behind them.

See the numbers

Rate limits

See how close you are before the CLI stops you.

The Overview shows one gauge per account, on the window it is closest to running out of.

69%

The mark on the bar is where even spending would have reached by now, so being ahead of pace is visible instead of calculated.

Claude · xSmyile · weekly windowPace at this hour

Click the gauge for that account's own page: the session and the week, each with what is used, how far off pace it is, when it runs out at this rate and when it resets. Under them, today against the days before it, and this account's own projects.

Accounts

Several accounts, each metered on its own.

A work account, a personal one, a Codex sign-in beside them: each gets its own row, its own windows and its own plan. The day's cost adds them up. The limits never do, because a window belongs to an account.

One page each
The picker at the top of a page moves between that vendor's accounts. The plan sits beside the address, because it is the account that is on a plan and not the CLI.
Use in CLI
On Claude, the account you are reading is one you can hand the CLI. Sissy asks before it writes anything, keeps the account you are leaving, and says the part you cannot work out for yourself: your next claude starts as it, and a session that is already open will switch it back when it next refreshes its token, so quit that one first.

Agents

What is running right now, and what it holds.

A rate limit and the Mac's memory are the two things that stop work now, so the Overview keeps one line about agents next to the gauges. Click it for the page behind it.

Every running session with its memory and how long it has been up, named after the repository it is working in, and under them the day: how many sessions and agents it has had, how long it was worked, and when.

Git

Catch the wrong name before you push.

The work repository you are about to push under your personal name, or the other way round. For every repository your agents have worked in, Sissy asks git who would sign the next commit, and compares it with the other repositories on the same forge account.

Findings come first, with the name it would commit under, what its forge expects and how many repositories say so, and the file the wrong value comes from. Where that file is the repository's own, Copy the fix puts the git config --unset-all command on the clipboard. Sissy never writes to a repository or to any git config. A commit made with -c, --author or GIT_AUTHOR_EMAIL is outside what it can see, and the page says so.

By project Where the day went, one row per repository. A worktree counts against the one it was cut from, whichever CLI did the work.
Contributions What you pushed on each forge you connected. Every counter has a switch in Settings, and one switched off is not asked for.

Privacy

Your session logs never leave the machine.

Sissy reads the logs Claude Code and Codex already write on your Mac and does the arithmetic there. It has no account of its own, no analytics and no crash reporting, and it binds no port.

Nothing to grant

The first launch asks for nothing: no Full Disk Access, no keychain dialog, no prompt of any kind.

Every request has a switch

Sissy does connect out, for readings you asked for: each vendor's usage endpoint, the public price list, a forge you connected, a status page. Each has an off switch of its own, the way the counters above do.

Off until you say so

Anything that costs a permission, or writes into another program's files, is off until you switch it on and says what it will do first.

Every host Sissy talks to, and how to switch each one off
HostForOff
raw.githubusercontent.comLiteLLM's public price list, dailyremotePricing: false
api.anthropic.comUsage and profile, with Claude Code's own tokenSwitch the Claude Code provider off
claude.aiUsage and credits for a Claude account you linkedUnlink the account
chatgpt.comThe Codex usage endpointSwitch the Codex provider off, or unlink
auth.openai.comSigning a Codex account in, and renewing that credential afterwardsUnlink the account
api.github.com, or the Enterprise or GitLab host you connectedYour own activity countsDisconnect it in Settings ▸ Forge
status.claude.com, status.openai.comEach vendor's public status pagestatusChecks: false

What Sissy keeps

One day-by-model archive under ~/Library/Application Support/Sissy/history/: totals, repository paths, session counts and how long each day was worked. Never prompts, and never a line of your logs. Settings names the folder, deletes it on a button, and historyRetentionDays bounds it, with 0 recording nothing.

What it writes elsewhere

Off by default. Name projects even when Sissy is off adds one line to ~/.claude/settings.json and one to ~/.codex/hooks.json, and takes both out when you switch it off. Use in CLI writes the Claude account you picked into the slot the CLI reads its credential from.

SECURITY.md has the full surface: what Sissy reads, runs and holds →

How it works

One process, reading the logs as they land.

No daemon, no socket, no second half to keep in step. Quit Sissy and the counting stops.

Priced as it lands
Sissy watches the log directories and prices each turn as it lands. The readings that are not a log tail, such as limits, forge counters and vendor status, are polls beside it.
Picks up where it left off
Counting happens while Sissy runs and resumes where it stopped, so Start at login is what keeps a day complete.
No price table in the source
Rates come from LiteLLM at runtime, with a snapshot compiled in as the offline floor, so a CLI that ships a new model prices correctly without a Sissy release. ccusage prices from LiteLLM too, which is why the two agree.
What it reads, and where
Claude Code
~/.claude/projects/**/*.jsonl, or wherever claudeDataDir points
Codex
~/.codex/sessions/**/rollout-*.jsonl, honoring CODEX_HOME
GitHub, GitLab
Each vendor's API, with a token you connect in Settings ▸ Forge
Your repositories
git, to resolve a project and read its commit identity

Both CLIs report the same things: tokens, cost, the per-repository split, the sessions and agents behind them, every rate-limit window, the plan and the credits. Claude Code is on unless you switch it off; Codex is picked up whenever its session directory exists.

Install

Put the numbers in the menu bar.

macOS 26 or later, Apple Silicon or Intel. Free and open source.

Download for macOS$brew install --cask xsmyile/sissy/sissy

The app is Developer ID signed and notarized, so there is no xattr workaround and no right-click → Open. The first launch asks for nothing.

Source on GitHub →
Uninstall
$brew uninstall --cask sissy

Or drag Sissy out of Applications. Either way the counting stops: no daemon to kill, no power assertion still held, nothing listening anywhere.