monometer.db; the main monometer CLI reports comparable usage,
cost, quota, block, and health views; provider analyzers ask deeper questions
whose meaning differs by cache and billing model.
Published Packages
All seven package identities use this page as their canonical public
docs_url; the former provider-specific and root-level Monometer URLs are not
documentation owners. Their public product homepage is https://monolex.ai,
and their registry relationships join the main reader, writer daemon, provider
analyzers, and Monobench without pretending they are one executable. Repository
ownership remains monolex/monolex; no public source URL is advertised while
that repository is private.
The public CDN and OpenCLIs registry agree on every package row, but package
identity and bundled-binary identity are separate. All current monometer 0.8.6 fragments contain monometer 0.8.6 plus the complete initiate guide
bundle. The macOS ARM archive does not contain
monolex-monometer-daemon; all four Linux and Windows archives also contain
monolex-monometer-daemon 0.4.5. Linux resolves that sibling directly. The
current Windows resolver checks an extensionless path while OpenCLIs installs
monolex-monometer-daemon.exe, so automatic start needs the explicit
MONOMETER_DAEMON_PATH rail documented below. macOS must also use a later
search rail. The separately published monolex-monometer-daemon 0.3.5 archive still
contains a 0.3.5 daemon. Platform-specific archive contents are not evidence
for the version of that standalone package.
ccforecast 0.2.1 is the retired predecessor of monometer-claude. Its 38
analytic commands were carried into the provider suite when the binary was
renamed on 2026-04-26. See the CCForecast compatibility reference
when maintaining an old script or archived environment; use
monometer-claude for new work.Distribution Matrix
Platform availability is not data availability. Every reader still needs a
compatible
monometer.db, and new rows require a daemon that can discover the
provider’s local source format.
0.8.6 release evidence
The stable pointer now identifies build2026-07-19-031135, clean source
commit 86b25249baee4f5aa0fe0802301abe49045519a6, and source_dirty: false after
the Linux and Windows publications. The macOS platform fragment retains its earlier commit
ff5ec58dc4f1d5c6f77b582dfd9afa0b499b728b with source_dirty: true.
Keep the pointer and all platform witnesses separate:
The macOS archive was downloaded, hash-checked, extracted, and executed as
monometer 0.8.6. Strict macOS code-signing verification passes for Developer
ID Application Umzikim Inc (64RS2P6LN2). Both Linux archives and all four ELF
payloads were separately hash-checked; binary markers report Monometer 0.8.6
and daemon 0.4.5, and both bundled guides are byte-identical to the public
guide. Both Windows archives and all four PE payloads were also hash-checked:
file identifies the expected x86-64 and AArch64 architectures, and their
markers report the same CLI and daemon versions. The ARM64 guide is byte-exact
with the registry; the x64 guide is content-exact after normalizing its Windows
CRLF line endings. There is no Intel macOS fragment in the 0.8.6 metadata.
Quick Start
Main monometer Command Reference
Provider names include
claude_code, codex, opencode, gemini, and
antigravity; claude normalizes to claude_code and agy normalizes to
antigravity.
Parser aliases and MCP schema
The user guide shows the preferred spellings. The manual parser also accepts these aliases:monometer --mcp-schema and monometer mcp-schema emit 11 canonical callable
entries: health, daily, hourly, monthly, block, session, models,
quota, statusline, live, and daemon. The schema intentionally uses
singular session and one positional daemon action; parser aliases and the
human-only version/help surface do not become extra MCP tools.
The 0.8.6 human guide exposes 19 command lines: nine aggregate/query views,
five daemon actions, live, three statusline forms, and version. The typed
surface stays at 11 commands by representing start|status|stop|sync|recompute
as the daemon action, and install|uninstall, host claude, and --force as
arguments on statusline.
Daemon and live-dashboard effects
monometer daemon start resolves the daemon in this order:
MONOMETER_DAEMON_PATH, a sibling of the executing monometer,
~/.openclis/bin/monolex-monometer-daemon, then development build paths. It
spawns detached and probes the control socket for up to 10 seconds.
sync requests a complete incremental source pass; recompute requests the
published full-reparse path.
Those built-in candidate names are currently extensionless. On Windows,
OpenCLIs correctly installs and links monolex-monometer-daemon.exe, but the
0.8.6 resolver does not append .exe before its exists() checks. Set the
exact executable path before daemon start or a live invocation that must
auto-start the writer:
daemon status still checks the control endpoint and does not need the binary
path when a compatible daemon is already running.
The immutable macOS 0.8.6 archive has no sibling daemon; both Linux fragments
have a directly resolvable sibling. Both Windows fragments carry the
.exe
payload but need MONOMETER_DAEMON_PATH until extension-aware discovery lands.
On macOS, daemon start succeeds only when one of the later resolution rails
supplies a compatible executable. Keep runtime discovery separate from the
per-platform archive manifest.monometer live starts a daemon only when none is reachable and
stops it on exit only when the dashboard started it. live --snapshot returns
before that lifecycle path and renders the existing database once. --hours
defaults to 12 and is bounded to 1–168. The chart includes N complete hour
buckets plus the still-filling current bucket; 0.8.6 labels that boundary and
adds … to the current cost instead of presenting it as a completed hour.
Claude Code statusline and scoped weekly limits
Manualmonometer statusline reads the local database and prints the cost
tail only. When Claude Code pipes statusline JSON, Monometer also renders the
session model and effort, working directory, Git branch, context percentage,
and the shared five_hour and seven_day percentages/reset countdowns. Missing
fields degrade by omission rather than making the status bar fail.
Claude’s statusline JSON does not expose model-scoped weekly buckets. In 0.8.6,
piped mode can start a detached statusline refresh-scoped helper. At most once
per 120 seconds it requests GET https://api.anthropic.com/api/oauth/usage,
selects a limits[] entry whose kind is weekly_scoped and whose model label
prefix-matches the active model, and atomically writes
~/.monometer/usage-scoped.cache. The renderer only reads that cache and drops
the scoped segment after 30 minutes, so missing credentials, curl failures, and
stale responses degrade silently. A matching value appears flat in the model
segment, for example Fable 5 high 58%.
On macOS the helper looks for the Claude Code-credentials Keychain item;
other source platforms fall back to .credentials.json under
CLAUDE_CONFIG_DIR or ~/.claude. The OAuth bearer header is delivered to
curl over stdin rather than exposed in its argv. This is an account-usage API
observation, not token-ledger or billing proof.
statusline install claude preserves unrelated settings and key order. If no
status line exists, installation is non-interactive and reversible. If a
foreign value exists, the command fails closed; only explicit --force may
replace it, after backing it up to
~/.monometer/statusline-backup-claude.json. uninstall claude restores that
backup or removes Monometer’s own entry, and refuses to touch a new foreign
entry.
Shared Provider-Analyzer Commands
Claude, Codex, Gemini, and OpenCode share exactly 36 operational analysis commands. Each analyzer reads only its provider rows and never writes the database. With provider additions, the full operational counts are Claude 38, Codex 40, Gemini 37, and OpenCode 37; Clap’s generatedhelp is additional.
Global analyzer controls are
--days <n>, --project <substring>,
--watch <seconds>, and --json (the installed analyzers currently promise
JSON for scan; provider additions may expose more machine output).
Only two shared commands add command-local parameters:
All other shared commands use the global window/project/watch controls only.
--watch clears and repeats until interrupted; do not use it in one-shot
automation.
Provider-Specific Commands
monometer-grok Commands
Grok’s local OAuth subscription data has no per-token dollar ledger. This tool
has three operational commands plus generated help, reports context and
activity only, and renders cost as —.
Its global controls are
--days (default 30), --json, --db <PATH> (override
the resolved database), and --watch <SECONDS>. Unlike the four cost/cache
analyzers, all three Grok reports support the shared JSON switch.
Database and Proof Boundaries
~/Library/Application Support/Monolex/protocols/niia/database/monometer.db.
The main aggregate CLI reads cost/token-oriented provider entries. Grok is
written to the dedicated grok_sessions table and is intentionally surfaced by
monometer-grok, because its local OAuth subscription evidence does not expose
the token-price ledger required by the main cost views.
Quota is separate from usage and cost:
- Antigravity reads local app state/credits.
- Codex reads local
token_count.rate_limitsevents. - Claude reads local reset/type/overage events and per-run budget attachments; live subscription percentages are not a stable historical ledger.
- API-equivalent token cost is an estimate from locally observed token counts and pricing tables, not an invoice.