neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
cl_audit gives each of your Claude setups on macOS its own profile: a Claude Code folder, an optional separate Claude window and a Dock icon that shows its usage limits live. One dashboard with switch
Developer toolsSwift · ShellGitHub @n-ufOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Usage audit for all your Claude accounts: macOS Dock icons with 5-hour and weekly limits, a launcher and a usage dashboard. Not affiliated with Anthropic.
Taken from the repository README
Loading the full README.
Read the full README ↗Usage audit for all your Claude setups on one Mac. A small background agent inside cl_audit reads how much of each profile's 5-hour and weekly limits is used and sends the alerts. Each profile can have its own Dock icon showing its usage (a click opens that profile's Claude window). The cl_audit app adds a dashboard, a launcher and the settings.
Claude login: sign-in happens in Claude's own screens, so cl_audit never sees the password. It reads Claude Code's saved login read-only and sends it only to Anthropic (details).
Home: https://cl-audit.n-uf.com · Changes: CHANGELOG.md · Version: see Versioning
Requires a Mac with Apple silicon, macOS 13 or later, and Claude Code. The Claude desktop app is optional (for Claude windows).
Download (easiest): cl_audit.zip, the latest release, ready-built. Unzip it, move cl_audit to Applications and open it. cl_audit isn't signed with an Apple Developer ID yet, so the first time macOS says it can't verify the app: open System Settings ▸ Privacy & Security and click Open Anyway (once). The Dock icon apps cl_audit makes for your profiles are created on your Mac and open without asking.
Checked with Claude Code 2.1.310 and the Claude app 3.6556.2 (cl_audit 26.10.11). cl_audit relies on how Claude Code saves its login and on Anthropic's usage figures, which aren't public interfaces, so a newer Claude version can change them. If something stops working after a Claude update, update cl_audit. Each release's notes list the versions it was checked with.
Or build it from source, to read every line before it runs (needs the Xcode Command Line Tools,
xcode-select --install):
git clone https://github.com/n-uf/cl_audit.git
cd cl_audit
git checkout v26.10.1 # optional: exactly a released version (see CHANGELOG.md)
./build.sh # build cl_audit, install it into /Applications, update the Dock icon apps
./build.sh --no-install # build into ./build only
Then open cl_audit, go to Settings and add a profile (New profile). With Usage in the Dock on,
cl_audit installs "cl_audit <profile>" in /Applications and puts it in the Dock. The first time,
macOS says cl_audit added an item that can run in the background (its agent, see How it works),
and asks once to allow notifications for cl_audit (System Settings ▸ Notifications ▸ cl_audit, if you
missed it). To update, download the new zip (or pull and run ./build.sh again); profiles and settings are
kept, and the agent restarts with the new version on its own.
You sign in with Claude's own sign-in, never with cl_audit. Claude Code's sign-in (claude auth login
in Terminal) and the Claude app's sign-in window are Anthropic's. cl_audit only opens them. Everything you
type to sign in goes straight to Anthropic; cl_audit never sees it.
What cl_audit reads, and how. Claude Code saves its login in your macOS Keychain, in an item called
Claude Code-credentials (Claude Code-credentials-<8 characters> for a profile's own Claude Code folder).
cl_audit reads that item with Apple's /usr/bin/security tool, read-only, exactly the way Claude Code reads
it. Only cl_audit's background agent reads it, one reader for every profile; the Dock icons and the cl_audit
window never do. It asks for no Keychain permission; macOS shows no prompt because the item already trusts
that tool.
It keeps only the short-lived access token, in memory, and discards the rest (including the long-lived
renewal token). It never writes, renews, copies or logs your login. On your Mac only, it also reads the
account email in Claude Code's settings file (.claude.json) and, for the usage history, Claude Code's
session logs (only time, model, token counts, project folder and surface of each reply).
Where it goes: only to Anthropic. cl_audit uses the token for two requests to Anthropic's own server:
api.anthropic.com/api/oauth/usage (your 5-hour and weekly figures) and api.anthropic.com/api/oauth/profile
(which account a profile is signed in to). There is no cl_audit server, no analytics and no sign-up, and
nothing else goes over the network. Renew sign-in (off by default) runs Claude Code once with a tiny prompt
when the saved access key has run out, so Claude Code fetches a fresh one itself; cl_audit never writes it.
What it doesn't change. Any app running under your macOS user can read Claude Code's saved login the
same way; that is how Claude Code stores it. cl_audit makes it neither safer nor more exposed, so install
only software you trust. cl_audit's code is open to check: Login.read in Sources/Model.swift and
request in Sources/Reader.swift.
~/.claude, its own Claude window (own sign-in, chats and settings) for every other profile.Opening cl_audit shows a card per profile: its icon, both limits and a switch for each thing it has (its Claude window, its Dock icon). A usage only profile has no switches: one display says "Usage only · not in the Dock · no window".
The top strip is the profile keys, one display and the refresh key. The display shows one thing at a time, most important first: "Not updating · agent won't start · numbers 7 min old" (red; a click opens Settings ▸ General with the reason), "Starting the agent…", "Not updating · agent paused until 14:32" (after repeated crashes), "Updating…", "Updated · 2 min ago · Work: no answer" (Anthropic didn't answer for that profile), or "Updated · 2 min ago" (its hover says how many profiles the agent reads, and how often). There's no Start key: cl_audit starts its agent itself when its window opens and whenever the agent has been silent for 90 s, and the refresh key always works: it refreshes, starts the agent first, or (paused) starts it now.
At 100% the percentage stops being useful; what matters is when the profile works again. While a limit is full, its card puts the limits on the left (name, reset line, bar, percentage; the full one's line in red) and one box on the right for the full limit that holds the profile back, the one that resets last: "5-hour full" (or "Week full · 5-hour too"), how long until it's back, large ("in 1h 42m"), and when, under it ("back at 15:28").
Below the cards, Usage history (24 h / 7 d / 30 d) is read from the session files Claude Code writes on this Mac (only time, model, token counts, project folder and surface of each reply): when you use Claude, tokens per day per profile, and where they go (by project, model and surface). The period and the Show chips next to it filter the charts and are kept between launches. Usage from claude.ai chats, other computers or cloud sessions isn't there.
cl_audit stays in the Dock as a launcher:
| On the cl_audit icon | What happens |
|---|---|
| Click | The launcher palette: every profile with its icon and mini bars; ↑↓, ↩ Claude window, ⌘↩ Terminal, ⌘1–9, type to filter |
| Click, with the cl_audit window open | Behind other windows: brings it to the front as it was (Dashboard or Settings). Already in front: goes to the Dashboard |
| Press and hold | The dashboard |
| Right-click | Open Claude for any profile, Dashboard, Launcher, Settings… |
| Action | What happens |
|---|---|
| Click | The profile's click action; by default its usage for 3 s while its Claude window opens |
| Double-click or ⌥-click | The details panel: both limits with bars and reset times, the sign-in, Open Claude, Sign in, Refresh, Settings |
| Press and hold | The details panel next to a short Dock menu (on by default, per profile) |
| Right-click | The menu: numbers, reset times, the sign-in, and actions (Open or Show Claude window, Quit Claude window, Refresh now, Dashboard, Profile settings…, and Quit and keep Claude window when the window follows the Dock icon) |
A Dock icon draws what the agent saved for its profile, and asks the agent for Refresh now and Renew login.
Press and hold has no event of its own: the Dock asks the app for its menu on both right-click and press-and-hold, and the icon checks which mouse button is down at that moment.
Settings is a page of the same window as the dashboard (switch at the top, or ⌘,). The profiles run along the top, with General first and New profile last. Changes are saved as you make them and the icons follow at once; a profile's name or icon label is saved when you press Return or click elsewhere (Esc puts it back), because that renames its Dock icon app; the top strip says when it's done. Show emails (General settings) off leaves email addresses out of the launcher, dashboard, panels and Dock menus, and blurs them in Settings (hover one to see it), for screen sharing.
Cards are at most one column wide: three columns from about 1180 pt, two from 800, one below. Controls sit next to their labels; every (i) opens a short explanation, some with a picture. Changing a setting that has no picture of its own shows a short note at the bottom of the page saying what it now does; it floats over the page, so nothing moves, and closes after 6 s or with ×.
Profile: name, icon label (up to 6 letters, drawn on the icon), the profile's colour (launcher, dashboard, panels), then two keys, each with a line under it saying what the current choice does:
Turning either off never deletes anything; that happens only in Remove profile…. Both off is usage only. What the profile is doing now shows in the main display at the top: "Running · in the Dock", "Stopped · in the Dock", "Reading usage · every N min" (no Dock icon), "Missing · reinstall", or the agent's state in the dashboard's words ("Starting the agent…", "Not updating · agent won't start"); while a change goes through it says "Saving…", then "Saved" and what changed.
Claude Code: the Claude Code folder (~/.claude or a CLAUDE_CONFIG_DIR folder) and the sign-in
found there; Renew sign-in (opt-in). Folders other profiles use are marked and can't be picked. The
Claude window follows from the folder (see Profile above); it isn't a setting.
Updates and alerts: how often the agent reads the usage, and a notification from cl_audit when a limit reaches a set level (once per limit and reset). When a limit is full, a notification says when it's back ("Claude Work: 5-hour limit full · Back at 15:28, in 1h 42m"). Notify when back (on by default) sends one more when a full limit resets ("Claude Work is back · The 5-hour limit reset at 15:28"); while the other limit is still full, it waits for that one.
Dock icon clicks: what a click does (usage for N seconds while Claude opens, just open Claude, or the details panel), press and hold, and the panel design (Glow, Rings, Numbers, Segments, Pace), previewed at full size. Without a Claude window a click only shows the usage ("just open Claude" shows the details panel).
Icon: the style, previewed as the limit fills up:
Column 1 is the app (Usage in the background, About), column 2 what you see (Emails, Face, Dashboard cards), column 3 the Dock (App icon, Dock). In two columns App icon goes under column 1 and Dock under column 2; one column keeps the same order, top to bottom. Every row is one line.
New profile opens a page: in a wide window three columns (the profile and its window, the Claude Code folder, a summary with the live icon and numbered steps); narrower, one column with the next step pinned at the bottom.
~/.claude-<name>, optionally sharing instructions,
agents, skills, commands or memory from another Claude Code folder), or an existing one, including
~/.claude or one you pick in Finder. Folders are compared after resolving ~, links and letter case;
a folder inside or around another profile's folder counts as the same.~/.claude gets the usual Claude app, any other folder its own Claude window. With Claude
window off, the Claude app sign-in step drops out; with Usage in the Dock off, the last step is Start
reading usage, which installs nothing and leaves the Dock alone: the agent reads its usage from then on.claude auth login for the folder), then, with a
separate window, that window, signed in to the same claude.ai account (checked by account id; no email
or token is read). "Finish now" leaves sign-in for later. An account another profile already has is
refused: one profile per account.Remove profile… (profile settings, or right-click its tile) removes its Dock icon app and what macOS
keeps for it: preferences, caches, saved window state, its pin and recent-apps entry in the Dock (the Dock
restarts only if one was there) and its Launch Services record, plus its saved usage, the agent's alert
marks for it, Terminal scripts and place on the dashboard. Delete its folders too also signs its Claude Code
folder out (its Keychain login goes) and deletes that folder and its Claude window's data folder; links
inside are removed, never what they point to. The default ~/.claude, the standard window and a folder
another profile shares items from are never deleted, and Claude must be closed first.
Uninstall cl_audit… (Settings ▸ General, or the cl_audit menu) always removes every Dock icon app and its pin
(your other pins stay), the agent and its background item, saved usage, settings, caches and preferences, the
Terminal scripts cl_audit wrote, and then moves cl_audit itself to the Trash. Per profile, off by default, it can
also delete its Claude Code folder (signed out first) and its own Claude window's data; ~/.claude and the standard
window are never offered, a folder another profile shares items from goes only together with that profile's, and
Claude must be closed first where it uses a folder that goes. A note at the end lists what was kept.
From Terminal: /Applications/cl_audit.app/Contents/MacOS/UsageDock --uninstall lists what would go; add --yes
to do it, and --delete-folders=work,starpay (profile ids) for those profiles' folders.
Dragged cl_audit to the Trash instead? While its agent still runs (it does until you log out), it offers once to remove the Dock icon apps, the agent and the settings; later, the first Dock icon you open does. It never deletes a folder. macOS can't start the agent again from the Trash, so nothing of cl_audit keeps reading after that.
Profiles are saved on this Mac only, in ~/Library/Application Support/usage-n-uf/accounts.json
(format: accounts.example.json). Only the cl_audit window edits it (and the agent, to record a Dock icon
dragged out by hand), through one locked write. When cl_audit starts it brings the Dock icon apps up to
date; the agent starts the ones that should run.
One program in three roles: cl_audit (the window: dashboard, settings, launcher), the cl_audit agent (a helper inside cl_audit.app) and each profile's Dock icon (a copy of the app with its own bundle id).
cl_audit.app/Contents/Library/LoginItems/cl_audit Agent.app, registered with macOS as
cl_audit's one background item (a launch agent, SMAppService). launchd starts it at login and again
right after a crash; started four times within ten minutes it waits before reading again (1 min, doubling
up to 30 min). launchd actually starts Contents/Helpers/cl_audit-agent, a small launcher that hands over
to the agent: macOS knows an ad hoc signed program it may start by its exact fingerprint, and the
launcher's never changes, so an update needs no new approval and shows no new notice. cl_audit restarts the
agent after an update.~/Library/Application Support/usage-n-uf/status/<profile>.json (no secrets), and it writes an "alive"
mark (agent.json) every 30 s, so cl_audit can tell "nothing is reading" from "Anthropic didn't answer".
The Dock icons and the window only read these files.~/.claude uses Claude Code-credentials; a CLAUDE_CONFIG_DIR folder uses
Claude Code-credentials-<first 8 hex of SHA-256 of the folder path>.oauthAccount in its .claude.json). On a mismatch the icon shows a red "!",
and the panel and menu say how to fix it./Applications or ~/Applications with a bundle id under
local.usage-n-uf. and a profile id): apps no profile wants, second copies, the files macOS keeps under their
id in six places in ~/Library, saved usage of removed profiles, Dock pins and recent-app entries of apps that
are gone (one Dock change, only when there is one) and Terminal scripts older than a day. Never a Claude Code
folder, a Claude window's data, a Keychain sign-in or anything without cl_audit's id. With the profiles file
missing or unreadable it removes nothing, and it leaves an app installed or renamed in the last minute alone.
lists what it would remove.build/UsageDock --render-preview out.png STYLE LABEL 23 41 [COLOR [FRAME]] renders a sample icon (STYLE
is one of bars, rings, twinRings, number, segmented, pace, statusTile, gauge, worst, statusBar, thinBars,
batteries, gaugeBar).
The usage endpoint is not publicly documented and may change.
cl_audit uses calendar versions, YY.M.R, like the other n-uf projects:
YY is the year of the release date (26 for 2026).M is the month of the release date, without a leading zero: a release made in October 2026 is
26.10.x, never "the last month + 1".R counts releases within that month and starts again at 0 in a new month.The number lives in VERSION; build.sh puts it in the app (General settings ▸ About), with the commit
count as the build number. Changes go into CHANGELOG.md under "Unreleased" as they land.
To release:
scripts/release.sh --dry-run prints the next version.scripts/release.sh --push bumps VERSION, turns the Unreleased notes into the release's section,
commits release X, tags vX, pushes both and publishes the GitHub Release with a ready-built
cl_audit.zip (the download link above always gets the newest). Without --push it stops before
pushing; --nobump keeps the current number.A version can't signal a breaking change, so read the notes before updating.
PolyForm Perimeter 1.0.1: source-available. You may use, change and share it, but not to build a product that competes with cl_audit.
cl_audit is an independent tool. It is not affiliated with, endorsed by or sponsored by Anthropic. "Claude" is a trademark of Anthropic.
Then the icon's colour, an optional frame colour and the Claude open dot: none, or a Claude-orange dot at the top-left while the profile's Claude window is open.
Opening and closing (run by the agent, whether or not cl_audit is open):
With Usage in the Dock off the card fades under "Not in use · no Dock icon to open or close" with Show in the Dock; without a Claude window the window switch fades (Add Claude window). Saved choices stay stored and apply again when they can. Older settings carried over: Open at login on → At login; "start or quit the Dock icon too" → With its window; both off → When started; "open or quit the Claude window too" → the window switch.
UsageDock --cleanup --dry-run--user-data-dir,
read from the process arguments (no ps); the standard window is the one without it.statusline/usage-statusline.sh is a Claude Code status line script that writes
<settings folder>/usage.json after every reply in Terminal sessions. The agent uses that file when the
endpoint can't be reached. The Claude app's Code tab doesn't run status lines. To use it, add to the
folder's settings.json:
{ "statusLine": { "type": "command", "command": "~/.claude/bin/usage-statusline.sh" } }UsageAccountID), signed ad hoc.
Only those profiles have one: with Usage in the Dock off the copy is removed (its Dock place is kept by the
agent). Earlier versions made each copy its own login item and kept a hidden copy with Usage in the Dock
off; the agent removes those once.