Skip to main content
Monometer is a suite, not one binary. The daemon parses local AI-CLI session sources into 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 build 2026-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.
The main CLI has no per-command help parser. For example, monometer daily --help treats daily as the command, warns that --help is unrecognized for it, and continues into the daily database query. Use bare monometer, monometer help, or monometer --mcp-schema for read-only command discovery. Unknown flags are warning-only and can still leave exit status 0, so automation must not treat success as proof that every option was accepted.

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:
This is an executable-discovery limitation, not a missing Windows artifact. 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.
Interactive 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

Manual monometer 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.
Do not run monolex-monometer-daemon --help or --version. The standalone daemon has no argument parser; every invocation enters the startup path, can create lock files and a database, performs an initial sync, and then watches until shutdown. Inspect it through monometer daemon status, monometer health, package metadata, or binary strings instead. Current daemon source now owns src/initiate/initiate.md and src/initiate/SKILL.md as operator and agent documentation; those files do not create a callable help parser in the current standalone payload.

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 generated help 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

The published Codex, Gemini, and OpenCode binaries still show the copied root banner “Claude Code cache usage analysis.” Their executable names, database provider filters, source descriptions, and provider-only commands are the authoritative boundary; the banner is a known help-text defect, not evidence that they read Claude rows.

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

Legacy pre-0.2.0 macOS installs can fall back to ~/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_limits events.
  • 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.

Relationships