[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-79963":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":13,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":42,"discoverSource":43},79963,"cronalytics","8bit64k\u002Fcronalytics","8bit64k","Hermes Agent plugin for cron analytics and observability. The dashboard for agentic automations in Hermes.","",null,"Python",91,1,77,0,2,10,13,9,51.2,"MIT License",false,"master",true,[26,27,28,29,30,31,32,33,34,35,36,37,38],"agent","ai","ai-agent","cron","cronjob","hermes","hermes-agent","hermes-agent-cron","hermes-agent-plugin","nous-research","openai","openclaw","plugin","2026-06-12 04:01:26","# Cronalytics\n\n \u003Ca href=\"https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Freleases\">\n   \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRelease-v1.1.0-blue\" alt=\"Latest Release\">\n \u003C\u002Fa>\n \u003Ca href=\"https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Fblob\u002Fmaster\u002FLICENSE\">\n   \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002F8bit64k\u002Fcronalytics\" alt=\"License\">\n \u003C\u002Fa>\n \u003Ca href=\"https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Fcommits\u002Fmaster\">\n   \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002F8bit64k\u002Fcronalytics\u002Fmaster\" alt=\"Last Commit\">\n \u003C\u002Fa>\n \u003Ca href=\"https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Factions\u002Fworkflows\u002Fci.yml\">\n   \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg\" alt=\"CI\">\n \u003C\u002Fa>\n \u003Ca href=\"#\">\n   \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHermes_Agent-supported-blueviolet.svg\" alt=\"Hermes Agent\">\n \u003C\u002Fa>\n \u003Ca href=\"https:\u002F\u002Fx.com\u002Fintent\u002Ftweet?text=Check%20out%20this%20project%20on%20GitHub:%20https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics%20%23HermesAgent%20%23NousResearch\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fshare-000000?logo=x&logoColor=white\">\n \u003C\u002Fa>\n \u003Ca href=\"https:\u002F\u002Fwww.reddit.com\u002Fsubmit?title=Check%20out%20this%20project%20on%20GitHub:%20https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fshare-FF4500?logo=reddit&logoColor=white\">\n \u003C\u002Fa>\n \u003Ca href=\"https:\u002F\u002Ft.me\u002Fshare\u002Furl?url=https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics&text=Check%20out%20this%20project%20on%20GitHub\">\n   \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fshare-0088CC?logo=telegram&logoColor=white\">\n \u003C\u002Fa>\n\n[Watch this repo](https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Fsubscription) to get notified of new releases. 👀 \n\n\u003Cbr\u002F>\n\n\u002Fˈkrɒn.əˌlɪt.ɪks\u002F (noun)\n\n1. Cron analytics and observability.\n2. The dashboard for agentic automations in Hermes.\n\nObserve. Measure. Optimize.\n\nCronalytics is a Hermes Agent plugin that attributes session-level usage and estimated cost to every cron-originated run, so you can see what your scheduled jobs are costing you. It hooks into `on_session_end`, stores derived analytics in a local SQLite fact database, and surfaces them through **three** complementary interfaces: a hermes dashboard tab, a CLI tool for programmatic access, and an agent skill for cron health\u002Fdiagnostics and comprehensive assessments. The current version is v1.1.0.\n\n> Built for **[Hermes Agent](https:\u002F\u002Fgithub.com\u002Fnousresearch\u002Fhermes-agent)**, the autonomous agent framework by **[Nous Research](https:\u002F\u002Fnousresearch.com)**.\n\n---\n\n## Getting Started\n\n| I am... | Path |\n| :--- | :--- |\n| **A New User** | [Install Guide (Fresh Start)](docs\u002FINSTALL.md) |\n| **An Existing v1.0.x User** | [Upgrade Guide (v1.1 Migration)](docs\u002FUPGRADE.md) |\n| **Exploring Features** | [Usage & Workflows](docs\u002FUSAGE.md) or [Feature Catalog](dev\u002FFEATURES.md) |\n\n---\n\n## Quick Start and Usage\n\n> The dashboard is insightful, but the CLI + Skill are the real superpower.\n\n#### **Dashboard — *Observe***\nUse the dedicated `\u002Fcronalytics` tab inside `hermes dashboard` for visual exploration. Charts, cards, and filters let you see cost, pace, and failure patterns at a glance.\n\n#### **CLI — *Measure***\nUse the terminal tool for programmatic access, `--json` output, and agent consumption. Precise queries, exact numbers, and scriptable data exports. Features eight commands, three global filters, and json output.\n\n```\nusage: cronalytics [-h] [--db DB] [--days DAYS] [--outcome {all,success,failure}]\n                   [--mode {all,agent,no_agent}] [--json]\n                   {summary,jobs,models,trends,health,runs,all,sync} ...\n\nCronalytics CLI — dump cron run insights to the terminal\n\npositional arguments:\n  {summary,jobs,models,trends,health,runs,all,sync}\n    summary             Aggregate headline summary\n    jobs                Per-job breakdown with pace\n    models              Per-model estimated cost breakdown\n    trends              Daily run-count \u002F estimated cost sparkline\n    health              Fact DB health check\n    runs                Individual runs for a job\n    all                 Run health + summary + jobs + models + trends\n    sync                Backfill cron sessions from state.db into fact DB\n\noptions:\n  -h, --help            show this help message and exit\n  --db DB               Path to fact DB (default: auto-detected from plugin directory)\n  --days DAYS           Number of days to look back (default: 30, 0 = all time)\n  --outcome {all,success,failure}\n                        Filter by outcome (default: all)\n  --mode {all,agent,no_agent}\n                        Filter by job mode (default: all)\n  --json                Output raw JSON instead of formatted tables\n  ```\n\n#### **Agent Skill — *Optimize***\nA built-in diagnostic skill that teaches Hermes agents how to analyze your cron jobs with confidence-graded anomaly detection and ranked recommendations. Ask your agent:\n\n> \"Check my cron jobs for the last two weeks — flag anything that looks off.\"\n\nThe agent loads the `cronalytics` skill, follows a structured 7-step diagnostic workflow (time window verification → baseline → job-level drill → per-run investigation → failure pattern → model economics → trend validation), cross-references `jobs.json`, and grades every finding by confidence (HIGH \u002F MEDIUM \u002F LOW) with supporting evidence and alternative explanations.\n\n### First-Time Setup\n\nAfter install, the plugin needs data:\n\n1. **Wait for a cron job to run** — the `on_session_end` hook captures it automatically.\n2. **Or trigger a manual backfill** — click **Sync Now** in the dashboard.\n\nIf the dashboard shows \"No cron jobs captured,\" click **Sync Now**.\n\nSee **[FAQ: Visibility & Data](docs\u002FFAQ.md)** for more help — how data updates, how far back you can look, and the 250-run modal limit.\n\nFor full details about usage and common workflows see **[USAGE.md](docs\u002FUSAGE.md)**.\n\n---\n\n## Features\n\n### Mini-Tour\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS01_dashboard-english.png\" width=\"100%\" alt=\"English Dashboard\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS02_dashboard-chinese.png\" width=\"100%\" alt=\"Chinese Dashboard\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS03_dashboard-spanish.png\" width=\"100%\" alt=\"Spanish Dashboard\"\u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS04_summary-success.png\" width=\"100%\" alt=\"Summary: Success mode\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS05_summary-failures.png\" width=\"100%\" alt=\"Summary: Failure mode\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS06_pace-modal.png\" width=\"100%\" alt=\"Pace explainer modal\"\u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS07_model-breakdown.png\" width=\"100%\" alt=\"Per-model breakdown\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS08_jobs-breakdown.png\" width=\"100%\" alt=\"Jobs breakdown table\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS09_job-runs.png\" width=\"100%\" alt=\"Job run history modal\"\u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS10_cli-summary.png\" width=\"100%\" alt=\"CLI summary output\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS11_cli-14-day-lead-to-assessment.png\" width=\"100%\" alt=\"CLI full report\"\u002F>\u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\u003Cimg src=\"docs\u002Fscreenshots\u002FS12_agent-report-w-viz.png\" width=\"100%\" alt=\"Agent diagnostic report\"\u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n### What Cronalytics Does\n\n- **Captures** every cron job run as it completes via the `on_session_end` hook\n- **Persists** cost, token counts, model, duration, and success state to a local fact database\n- **Backfills** historical data automatically on plugin load and on demand via reconciliation scanner\n- **Surfaces** data through three interfaces:\n\n### Dashboard — visual exploration:\n- Summary cards (total runs, estimated cost, tokens, pace)\n- Leader board (top runs, top cost, top tokens, top pace)\n- Cost-by-model breakdown with proportional bars\n- Per-job table with runs, cost, duration, projections, and sortable columns\n- Expandable detail rows showing token breakdown, schedule, and success\u002Ffailure split\n- Job detail modal with full run history (sortable, 200-run limit)\n- Educational modals explaining Pace, Nominal, Trend, and cost math\n- Outcome filter (All \u002F Success \u002F Failure) with conditional card colors\n- Mode filter (All \u002F Agent \u002F No agent) for script-only job visibility\n- Day selector  `7D | 30D | 90D` presets + custom input (0–365 days, Enter\u002FGo)\n- Refresh — re-fetches summary and jobs\n- Sync Now button to trigger backfill on demand\n  \n**Multi-Locale Support**\nCronalytics implements a self-hosted internationalization layer for independent Hermes plugins. All UI elements, educational explainers, and metrics are fully localized for:\n- 🇺🇸 **English** (Source of Truth)\n- 🇪🇸 **Spanish** (Professional\u002FTechnical)\n- 🇨🇳 **Chinese Simplified** (zh)\n- 🇹🇼 **Chinese Traditional** (zh-hant)\n\n### CLI — terminal access:\n- `summary` — headline aggregates + leader board + cost-by-model table\n- `jobs` — per-job table with ID, runs, cost, tokens, pace, avg duration\n- `runs --job \u003Cid>` — individual run history (time, duration, cost, tokens, model)\n- `models` — per-model aggregate table\n- `trends` — daily bar chart (ASCII) of cost + runs\n- `health` — fact DB metadata, job count, last sync\n- `all` — chains health → summary → jobs → models → trends\n- All commands support `--days N`, `--outcome`, and `--mode`; every data command except `all` supports `--json`\n- Job name resolution from `~\u002F.hermes\u002Fcron\u002Fjobs.json`\n\n### Agent Skill — agent-guided diagnostics:\n- Structured 7-step workflow: time window verification → baseline → job-level drill → per-run investigation → failure pattern → model economics → trend validation\n- Confidence-graded anomaly detection (HIGH \u002F MEDIUM \u002F LOW)\n- `jobs.json` cross-reference for temporal context and silent failure detection\n- \"Known Ways to Fool Yourself\" guardrails prevent false positives\n- Works in any terminal session or messaging channel\n\nTo explore the complete feature catalog see **[FEATURES.md](dev\u002FFEATURES.md)**.\n\n---\n\n## ⚠️ Important Notes\n\n### **Cost data is estimated, not exact.** \n\nCronalytics reports the estimated cost that Hermes computed and stored in `state.db`. Your actual invoice may differ due to rate changes, credits, or rounding. Use this for directional awareness, not accounting.\n\n> See **[FAQ: Cost & Billing](docs\u002FFAQ.md)** — $0.00 costs, estimated vs actual, and why Cronalytics differs from your provider invoice.\n\n### Understanding Success\n\n**Cronalytics tracks two different notions of \"success\"**:\n\n| Signal | What It Means | Source |\n|--------|--------------|--------|\n| **Wrapper Success** (`success` toggle in dashboard) | The cron wrapper finished without error — the job ran, the agent responded, and the wrapper exited cleanly. | `end_reason` field |\n| **Payload Success** | The agent's actual output was correct, useful, or achieved the intended goal. | **Not tracked** |\n\n### How to interpret the dashboard\n\n- **Success = high, Failure = low** → Your cron jobs are mechanically reliable.\n- **Success = high, but output quality is poor** → The infrastructure is fine; the issue is in the prompt, model choice, or task definition.\n- **Failure = high** → Investigate timeouts, API errors, or wrapper crashes.\n\n> The Success\u002FFailure toggle is a **reliability** signal, not a **correctness** signal.\n\nSee **[FAQ: Metrics & Interpretation](docs\u002FFAQ.md)** for Success vs Failure, agent vs no-agent jobs, and what Pace really means.\n\n### **Single-profile cron by default.** \n\nCronalytics monitors the Hermes profile where it is installed. Most users — even those with multiple profiles configured — run cron jobs in the **default** profile. For them, Cronalytics works fully.\n\nThe edge case: if you explicitly create a cron job under a non-default profile (`hermes --profile \u003Cname> cron create ...`), that job runs in an isolated gateway with its own `state.db`. Cronalytics, installed in the default profile, cannot see it.\n\nMulti-profile cron support is on our roadmap.\n\nSee **[FAQ: Where are my jobs?](docs\u002FFAQ.md)** for a checklist of common reasons jobs don't appear.\n\n---\n\n## Documentation Index\n\n### User Documentation (`docs\u002F`)\n\n- **[INSTALL.md](docs\u002FINSTALL.md)** — Installation guide (dashboard plugin + pip CLI + skill setup)\n- **[UPGRADE.md](docs\u002FUPGRADE.md)** — Transition guide for v1.0.x users (Namespace restructure)\n- **[UNINSTALL.md](docs\u002FUNINSTALL.md)** — Clean removal instructions\n- **[USAGE.md](docs\u002FUSAGE.md)** — Dashboard and CLI usage guide\n- **[TROUBLESHOOTING.md](docs\u002FTROUBLESHOOTING.md)** — Common issues and fixes\n- **[RELEASE_NOTES.md](docs\u002FRELEASE_NOTES.md)** — Per-release upgrade notes and highlights\n- **[FAQ.md](docs\u002FFAQ.md)** — Common questions and quick answers\n\n### Developer Documentation (`dev\u002F`)\n\n- **[BRIEF.md](dev\u002FBRIEF.md)** — Product opportunity brief & positioning\n- **[DESIGN.md](dev\u002FDESIGN.md)** — Architecture, data flow, and technical decisions\n- **[FEATURES.md](dev\u002FFEATURES.md)** — Complete feature catalog with formulas\n- **[DEV_SETUP.md](dev\u002FDEV_SETUP.md)** — Development environment setup\n\n### Project Meta\n\n- **[CHANGELOG.md](CHANGELOG.md)** — Full version history\n\n---\n\n## Architecture at a Glance\n\nCronalytics hooks into Hermes's `on_session_end`, enqueues session IDs, queries `state.db`, and stores derived analytics in a plugin-owned `facts.db`. Three interfaces read from that database: Dashboard (HTTP API), CLI (direct SQLite queries), and Agent Skill (CLI-piped heuristics).\n\nFor the full architecture diagram, data flow, and technical decisions, see **[DESIGN.md](dev\u002FDESIGN.md#3-architecture)**.\n\n---\n\n## API Endpoints\n\nAll endpoints are mounted at `\u002Fapi\u002Fplugins\u002Fcronalytics\u002F`. Core endpoints: `GET \u002Fhealth`, `GET \u002Fsummary`, `GET \u002Fjobs`, `GET \u002Fjobs\u002F{job_id}\u002Fruns`, `GET \u002Fmodels`, `GET \u002Ftrends`, `POST \u002Fsync`.\n\nFor the full endpoint table with parameters and response shapes, see **[DESIGN.md §4.11 API Validation Layer](dev\u002FDESIGN.md#411-api-validation-layer)**.\n\n---\n\n## Data Model\n\nThe fact database (`facts.db`) is append-only — rows are inserted once and never updated or deleted. Core fields include `session_id`, `job_id`, `estimated_cost_usd`, `actual_cost_usd`, `model`, token breakdowns, `duration_seconds`, `end_reason`, and `success`.\n\nFor the full schema with field descriptions, see **[DESIGN.md §4.3 Fact DB](dev\u002FDESIGN.md#43-fact-db-plugin-owned-append-only-sqlite)**.\n\n---\n\n## File Layout\n\n```\ncronalytics\u002F\n├─── plugin.yaml              # Plugin manifest (hooks, version)\n├─── __init__.py              # Register hook + bootstrap scanner\n├─── cronalytics\u002F             # Core package\n│   ├── cli.py                # Terminal interface (entry point)\n│   ├── config.py             # Paths + defaults\n│   ├── facts.py              # SQLite fact DB: schema, insert, queries\n│   ├── ingester.py           # Deferred ingestion worker + crash recovery\n│   ├── scanner.py            # Reconciliation scanner + watermark I\u002FO\n│   ├── schedule.py           # Cron parsing + projection math\n│   ├── logger.py             # Shared logger\n│   └── checkpoint.py         # Session state persistence\n├─── skills\u002F\n│   └─── devops\u002F\n│       └─── cronalytics\u002F\n│           └─── SKILL.md     # Built-in diagnostic skill for agents\n├─── dashboard\u002F\n│   ├─── manifest.json        # Slot registration + routes\n│   ├─── plugin_api.py        # REST API mounted at \u002Fapi\u002Fplugins\u002Fcronalytics\u002F\n│   ├─── build.js             # esbuild bundler script\n│   ├─── src\u002F                 # Modular frontend source\n│   └─── dist\u002F\n│       └─── index.js         # Bundled React frontend\n└─── tests\u002F                   # Unit tests (run with pytest)\n```\n\n---\n\n## Configuration\n\n### `plugin.yaml`\n\n```yaml\nname: cronalytics\nversion: 1.1.0\ndescription: Cost and operational observability for Hermes cron jobs\nprovides_hooks:\n  - on_session_end\n```\n\n### `config.py` (static defaults)\n\nAll current settings are hardcoded defaults. There is no user-editable config file yet (planned for a future release).\n\n| Setting | Default | Meaning |\n|---------|---------|---------|\n| `RETRY_DELAYS` | `[3.0, 8.0, 15.0]` | Seconds to wait before each worker retry |\n| `JITTER_MAX` | `2.0` | Max random seconds added to each retry delay |\n| `MAX_RETRIES` | `3` | Total attempts to read a session from `state.db` |\n\nPaths are resolved automatically:\n- `STATE_DB`: `~\u002F.hermes\u002Fstate.db` (Hermes core session store)\n- `FACT_DB`: `~\u002F.hermes\u002Fplugins\u002Fcronalytics\u002Ffacts.db` (plugin-owned SQLite)\n- `WATERMARK_FILE`: `~\u002F.hermes\u002Fplugins\u002Fcronalytics\u002Fwatermark.json`\n- `PENDING_FILE`: `~\u002F.hermes\u002Fplugins\u002Fcronalytics\u002Fpending.jsonl`\n\n---\n\n## Known Limitations\n\n1. **Wrapper-level success only.** The `success` boolean reflects whether the session wrapper completed, not whether the agent task succeeded.\n2. **Abandoned sessions are invisible.** Sessions where the gateway crashed or the job got stuck are never ingested (they never reach `ended_at`).\n3. **No user-editable config file yet.** All tuning values are hardcoded in `config.py`.\n4. **Actual cost is often null.** Most runs only populate `estimated_cost_usd`; `actual_cost_usd` depends on provider billing data.\n5. **Dashboard server caches plugins per-process.** Changes to `manifest.json` or `plugin_api.py` require a full dashboard restart.\n6. **Mobile layout tested but not optimized.** The table may require horizontal scroll on narrow viewports.\n7. **Job detail modal capped at 200 runs.** High-frequency jobs show full count in the table but the drill-down is limited.\n\nSee **[FAQ](docs\u002FFAQ.md)** for more: the 250-run limit, agent vs no-agent, models breakdown, snapshotting your facts.db, and getting `cronalytics` on your PATH.\n\n---\n\n## Support\n\nFound a bug? Open a [GitHub Issue](https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Fissues) with reproduction steps. Have a feature idea? Open a [Discussion](https:\u002F\u002Fgithub.com\u002F8bit64k\u002Fcronalytics\u002Fdiscussions) or fork it.\n\nSee **[SUPPORT.md](SUPPORT.md)** for the full help guide, FAQ, and response expectations.\n\n**Caveat**: The cost estimates are approximate and as recorded by the Hermes Agent framework. The success\u002Ffailure signal is wrapper-level only (see [Understanding Success](#understanding-success)). Verify anything mission-critical independently.\n\n---\n\n## Requirements\nIf you are running Hermes Agent you have everything you need:\n- Hermes Agent with plugin hook support (`on_session_end`)\n- Hermes dashboard server for UI components\n- SQLite (bundled with Python)\n\n---\n\n## License\n\nMIT — see [`LICENSE`](LICENSE) for full text.\n\n---\n\n## Acknowledgments\n\nThanks to my wife **Gaby** for the Spanish translation review — and to everyone who starred, opened issues, and helped shape v1.1.\n\n---\n\n## Changelog\n\nSee **[CHANGELOG.md](CHANGELOG.md)** for the full version history.\n\n---\n\n*Plugin path: `~\u002F.hermes\u002Fplugins\u002Fcronalytics\u002F`*  \n*Fact DB: `~\u002F.hermes\u002Fplugins\u002Fcronalytics\u002Ffacts.db`*  \n*API base: `\u002Fapi\u002Fplugins\u002Fcronalytics\u002F`*\n","Cronalytics 是一个用于定时任务分析和可观测性的 Hermes Agent 插件，它为每个由 cron 触发的任务提供会话级别的使用情况和成本估算。项目通过在 `on_session_end` 钩子中收集数据，并将这些分析结果存储于本地 SQLite 数据库中，然后通过三种互补的方式展示：Hermes 仪表盘的一个标签页、一个命令行工具以及一个针对 cron 健康诊断与全面评估的代理技能。此插件特别适合需要监控和优化其定时任务执行成本及性能的企业或开发者使用。当前版本为 v1.1.0，采用 Python 编写，并遵循 MIT 许可协议。","2026-06-11 03:58:43","CREATED_QUERY"]