chore(plugin-catalog): telegram_dashboard_probe 0.9.3 (no redirect with a token, what Hermes' auth code may write)

This commit is contained in:
Ilya Balobanov
2026-10-03 14:11:07 +05:00
committed by Teknium
parent edd2476543
commit df5d4a44f8

View File

@@ -1,15 +1,15 @@
name: telegram_dashboard_probe
title: Telegram Dashboard
repo: https://github.com/bablobanov/hermes-agent-telegram-dashboard
sha: d60eafca56b2d57cffd522ef3c9ec757afaf2abe
sha: b60a100bc98ddff64f1e0087221bb893ddc5b398
subdir: plugin/telegram_dashboard_probe
description: "One pinned Telegram message with the state of your Hermes on one phone screen: gateway, backup, config drift, the cron ticker and its jobs, whether the Telegram channel is deaf, account limits and version. Read-only, no LLM calls, nothing to press. Disclosure — Claude and Codex limits come from Hermes' own account-usage fetcher, called every tick (which, like /usage, may refresh OAuth tokens through Hermes' own auth code); at most once per limits_refresh_seconds (default 900 s) the Grok weekly pool is read from https://cli-chat-proxy.grok.com/v1/billing and /v1/settings with the xai-oauth token Hermes resolves, sending the header x-xai-token-auth xai-grok-cli that identifies the request as the Grok CLI (an undocumented xAI host Hermes itself does not use), and Kimi Code windows from the kimi-coding base URL /v1/usages with the kimi-coding key Hermes resolves and a User-Agent of claude-code/0.1.0 (undocumented provider surfaces), and up to four operator-configured limits_sources, if set, each with one GET to http on loopback only (127.0.0.1, localhost or ::1), with no proxy and no redirect, optionally sending Authorization: Bearer with the value of an environment variable the operator names (never a *_BOT_TOKEN one); every tick the tail of HERMES_HOME/logs/errors.log (the last 256 KB; the whole file, up to 4 MB, until the first successful read) is read for Gemini HTTP 429 lines, of which only the time, limit, retry and model are kept, and for the engine's own 'Failed to send Telegram message' lines, of which only the time is kept, never the message text; every tick HERMES_HOME/cron/jobs.json is read for each job's id, name, enabled flag, state, times, status and failure streak (never prompt, script, deliver, skills or the model) and the ticker's marker files for their epoch, and HERMES_HOME/cron/executions.db is opened read-only (sqlite3 mode=ro with PRAGMA query_only, in a worker under the tick's deadline) for the job_id, status, delivery_outcome and time columns of failed or undelivered runs, never the error column; the engine's error texts are reduced to the kind of the error in a word and never reach the screen or the record; the connected Telegram adapter's public property send_path_degraded is read every tick, and, as a capability and not a contract, four private attributes of the live adapter object (_updates_received_total, _polling_generation, _polling_last_progress_monotonic, _polling_generation_started_monotonic) are read as attributes, nothing is called on it, and an adapter without them shows no data for that line; the plugin never reads the Telegram bot token itself and never writes vendor credential files; the latest Hermes release list is read from api.github.com without a token at most once a day; an operator-configured drift_command, if set, runs as a subprocess; the delivery record is written under HERMES_HOME/plugin-data/."
description: "One pinned Telegram message with the state of your Hermes on one phone screen: gateway, backup, config drift, the cron ticker and its jobs, whether the Telegram channel is deaf, account limits and version. Read-only, no LLM calls, nothing to press. Disclosure — Claude and Codex limits come from Hermes' own account-usage fetcher, called every tick (which, like /usage, may refresh OAuth tokens through Hermes' own auth code); at most once per limits_refresh_seconds (default 900 s) the Grok weekly pool is read from https://cli-chat-proxy.grok.com/v1/billing and /v1/settings with the xai-oauth token Hermes resolves (which, like any Hermes request to xAI, may refresh that OAuth token and save it to auth.json, or clear a dead one, through Hermes' own auth code), sending the header x-xai-token-auth xai-grok-cli that identifies the request as the Grok CLI (an undocumented xAI host Hermes itself does not use), and Kimi Code windows from the kimi-coding base URL /v1/usages with the kimi-coding key Hermes resolves (which, like any Hermes key lookup without a usable key in .env or the environment, may save Hermes' credential pool back to auth.json once when loading it changes something, e.g. a placeholder key in .env) and a User-Agent of claude-code/0.1.0 (undocumented provider surfaces), and up to four operator-configured limits_sources, if set, each with one GET to http on loopback only (127.0.0.1, localhost or ::1), with no proxy and no redirect, optionally sending Authorization: Bearer with the value of an environment variable the operator names (never a *_BOT_TOKEN one); every tick the tail of HERMES_HOME/logs/errors.log (the last 256 KB; the whole file, up to 4 MB, until the first successful read) is read for Gemini HTTP 429 lines, of which only the time, limit, retry and model are kept, and for the engine's own 'Failed to send Telegram message' lines, of which only the time is kept, never the message text; every tick HERMES_HOME/cron/jobs.json is read for each job's id, name, enabled flag, state, times, status and failure streak (never prompt, script, deliver, skills or the model) and the ticker's marker files for their epoch, and HERMES_HOME/cron/executions.db is opened read-only (sqlite3 mode=ro with PRAGMA query_only, in a worker under the tick's deadline) for the job_id, status, delivery_outcome and time columns of failed or undelivered runs, never the error column; the engine's error texts are reduced to the kind of the error in a word and never reach the screen or the record; the connected Telegram adapter's public property send_path_degraded is read every tick, and, as a capability and not a contract, four private attributes of the live adapter object (_updates_received_total, _polling_generation, _polling_last_progress_monotonic, _polling_generation_started_monotonic) are read as attributes, nothing is called on it, and an adapter without them shows no data for that line; the plugin's own code never reads the Telegram bot token and never writes vendor credential files (Hermes' auth code it calls for Grok and Kimi may, as said above), and no request the plugin's own code sends with a token in a header follows a redirect; the latest Hermes release list is read from api.github.com without a token at most once a day; an operator-configured drift_command, if set, runs as a subprocess; the delivery record is written under HERMES_HOME/plugin-data/."
maintainer: bablobanov
tier: community
category: automation
requires_hermes: ">=0.21.1"
docs_url: https://github.com/bablobanov/hermes-agent-telegram-dashboard#readme
version: "0.9.2"
version: "0.9.3"
image: https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/682e20b4664c8e70f51faa9db5f89e42c24f0c0c/docs/social-preview.jpg
screenshots:
- https://raw.githubusercontent.com/bablobanov/hermes-agent-telegram-dashboard/682e20b4664c8e70f51faa9db5f89e42c24f0c0c/docs/screenshots/01-showcase.png