Daily Spend Report (plugin)
Daily Spend Report is the bundled plugin that posts one Inbox card a day summarising your AI coding activity — the value the agents produced and your real out-of-pocket spend, read from the live spend ledger. Covers where the card appears, how it self-heals a missed day, and its single report-time setting.
What it is
Daily Spend Report posts one card to your Inbox each day summarizing your AI coding activity: the value the agents produced and your real out-of-pocket spend, read from Omniscio's live spend ledger. It's a lightweight daily pulse on what you're spending and getting back — no dashboard to open.
It is a plugin
Daily Spend Report is a first-party, sandboxed plugin at
src/plugins/daily-spend-report/, bundled with the app as a built-in and also
published to the Marketplace. It declares the spend, inbox, and storage
permissions and talks to the host only through the plugin SDK context (ctx).
Where to find it
Daily Spend Report has no screen of its own to open: once it is enabled the card simply arrives in your Inbox, so day to day there is nothing to visit. Its one setting — the hour the card is posted — is changed from the plugin's own settings rather than from a general Settings page. The plugin ships bundled with the app, and is also published to the Marketplace, so it may already be present on your install.
How it behaves
How it works
- A daily cron. On load the plugin registers a cron (
ctx.cron.register) for your chosen report time; changing the time re-registers it. - Reads the host ledger, never spends. At fire time it calls
ctx.spend.getBreakdown()to read your existing AI-spend rollup — it makes no Anthropic call of its own, so the report itself costs nothing. - Posts one deduped card. It builds a markdown card (value + real out-of-pocket
spend) and posts it via
ctx.inbox.postAlertwith a stablededupKey, so you get exactly one card per day, not a pile. - Catch-up self-heal. If the app was closed at the scheduled time, the report is posted once on next app-ready — but only once per local day (a stored date stamp is the guard) and only after today's report hour has already passed.
- Never throws. A failure is logged, not surfaced as an opaque worker error.
Settings
One setting — Report time (reportTime, default 09:00 local) — picks the hour
the card is posted. Change it in the plugin's settings and the cron re-registers to
match.
Cost & privacy
The report is free: it only reads the host's existing ledger (ctx.spend), makes
no direct model call, and sends nothing off-device. That is why it needs no cost
tracking of its own — it produces no Anthropic spend.
For agents
How the pieces fit
| Concern | Where |
|---|---|
| Manifest | src/plugins/daily-spend-report/manifest.json |
| Backend | backend/backend.ts → dist/backend.js (the cron + card) |
| UI | ui/index.html, ui/plugin.js, ui/styles.css |
Changing it
Backend logic lives in backend/backend.ts and is built to dist/backend.js. Keep the
report free (read the ledger, never call a model), keep the dedupKey stable (so a day
never double-posts), and keep the catch-up guarded by the per-day storage stamp.
Related
The full spend picture — the live figures plus every budget cap you can edit — is on the Cost Control page, and the numbers both surfaces read from are explained on Statistics. If you would rather be told when spend crosses a threshold than read a daily summary, see AI spend alerts. The plugin system the report rides on — permissions, sandboxing, and installing from the Marketplace — is covered on the Plugin Marketplace page.
Last verified 2026-09-23