All plugins

data

An agentic report page. Open an Excel workbook, a CSV or a JSON file and Hermes finds the story: it suggests a headline and a handful of charts, and you accept the ones you want onto the page. Every number on a chart is computed from your rows; the model picks columns and wording, never figures. Ask about the table or about one chart and an agent answers with a chart and its sources. Split a chart by a second column, point at any mark, export the report as a web page, Markdown or SVG. Once you allow it, any chat can read your reports and propose charts. Disclosure — Find the story starts a hidden Hermes session told to use no tools (your Hermes tools stay available to it, stopped after 2.5 minutes or 6 tool calls), which sees column summaries, grouped totals and the first eight rows, never the whole table; Ask starts a hidden session that uses your Hermes tools and reads third-party web pages, stopped after 4 minutes or 24 tool calls; approval prompts inside these sessions are denied; open and export go through the system dialog and the plugin's own backend, which reads workbooks with the Python standard library and refuses paths inside the Hermes home folder; a CSV or JSON file dragged onto the page is read in the page; reports live in Desktop plugin storage, with a copy of the columns, charts and first 400 rows under plugin-data/data/ only after you turn on chat access, which starts off; no telemetry, no credentials, no shell commands or background processes of its own. Independent community project, not affiliated with Nous Research.

AdolaniumDesktopv0.1.0Updated 1 hour ago

About

An agentic report page. Open an Excel workbook, a CSV or a JSON file and Hermes finds the story: it suggests a headline and a handful of charts, and you accept the ones you want onto the page. Every number on a chart is computed from your rows; the model picks columns and wording, never figures. Ask about the table or about one chart and an agent answers with a chart and its sources. Split a chart by a second column, point at any mark, export the report as a web page, Markdown or SVG. Once you allow it, any chat can read your reports and propose charts. Disclosure — Find the story starts a hidden Hermes session told to use no tools (your Hermes tools stay available to it, stopped after 2.5 minutes or 6 tool calls), which sees column summaries, grouped totals and the first eight rows, never the whole table; Ask starts a hidden session that uses your Hermes tools and reads third-party web pages, stopped after 4 minutes or 24 tool calls; approval prompts inside these sessions are denied; open and export go through the system dialog and the plugin's own backend, which reads workbooks with the Python standard library and refuses paths inside the Hermes home folder; a CSV or JSON file dragged onto the page is read in the page; reports live in Desktop plugin storage, with a copy of the columns, charts and first 400 rows under plugin-data/data/ only after you turn on chat access, which starts off; no telemetry, no credentials, no shell commands or background processes of its own. Independent community project, not affiliated with Nous Research.

Hermes Data

An agentic report page for Hermes Desktop. Open a spreadsheet and Hermes finds the story in it, chart by chart. You decide what goes on the page.

A report Hermes helped build from a CSV: a headline, a bar chart with one gold bar and a remark pointing at it, and more charts beside it

What it does

  • Bring a table. Open an Excel workbook, a CSV or a JSON file, paste rows from a spreadsheet, or drag a CSV onto the page. Data works out which columns are numbers, dates and categories.
  • Find the story. Hermes reads the columns and a few real cuts of the numbers, then suggests a headline and three to five charts. Each chart makes one point, with a short remark and an arrow to the mark it is about.
  • You decide. Suggestions wait beside the page with a dashed outline. Accept the ones you want, skip the rest, and undo any of it.
  • Every number is computed, not written. Hermes picks the columns and the wording. The page adds up your rows itself. A remark can only quote a figure through a placeholder the page fills in, and a remark with a figure typed by the model is dropped.
  • Ask a question. Hermes answers with a chart. If the table cannot answer it, an agent searches the web and comes back with a small table and the pages it read.
  • Ask about one chart. Press the speech bubble on a chart and ask why it looks the way it does. Hermes gets that chart's real numbers, and the answer lands right beside it.
  • Make it yours. Click a bar or a point to move the highlight, and the arrow and the words beside it follow. Redraw a chart as bars, a line, an area, a donut, dots or one big number. Split it by a second column into one coloured series per value. Make it full width, reorder it, rename it, or build your own.
  • Key points. The report opens with a short list of what its charts say. Each line is a chart's remark or its computed fact, so the summary cannot claim something a chart does not show.
  • Share it. Export the report as a single web page or Markdown, a chart as SVG, or the table as CSV.
  • From any chat. Once you allow it, a Hermes chat can read your reports, propose charts for one, or open a new report from data it gathered.

Suggestions waiting beside the page, each with Accept and Skip: one big number from Hermes, and a chart split by drink that a chat proposed

An answer from Hermes about one chart: it looked up national coffee orders, charted them, and listed the pages it read

Install

hermes plugins install Adolanium/hermes-data

Then switch on Data in Capabilities › Plugins and open it from the sidebar. It needs Hermes 0.22.6 or newer.

No file to hand? Press Try a sample for four weeks of a coffee cart.

What it reads

  • Excel .xlsx workbooks up to 8 MB. A workbook with several sheets asks which one. Dates, currency and percentage formats are kept. A formula cell gives the value Excel last saved for it. Old .xls files need saving as .xlsx first.
  • CSV, .tsv and .txt tables up to 4 MB, with a header row. Commas, tabs, semicolons and pipes are detected.
  • JSON as a list of records, a list of rows, or an object holding one such list.
  • Pasted rows from any spreadsheet.
  • Numbers with thousands separators, a currency sign, a percent sign or accountant's brackets.
  • Dates as 2026-10-05, 05/10/2026, 5 Oct 2026, October 5, 2026 or Oct 2026. Day-first and month-first are told apart when the column makes it clear.
  • The first 5,000 rows and 40 columns. A longer table is cut there and the page says so.

Workbooks are read by the plugin's backend with Python's standard library only. No spreadsheet package is installed, no macros run and no formulas are evaluated.

AI, when you ask

Nothing runs until you click.

  • Find the story and Find more each start one hidden Hermes session on your own model. It is told to use no tools. It sees the column names and types, summary numbers, up to twelve grouped totals the page worked out, and the first eight rows. It never gets the whole table.
  • Ask, about the table or about one chart, starts a hidden Hermes session that may use your Hermes tools, mainly web search and page reading. A question about a chart also sends that chart's points. It is told not to send messages, write files, run commands or schedule anything. If it uses such a tool anyway, the answer says which.
  • Approval prompts inside these sessions are denied automatically, because nobody could see them.
  • Budgets. Reading a table stops after 150 seconds. An answer stops after 4 minutes or 24 tool calls. Every run has a Stop button.
  • Answer text is written by the model. The chart under it is drawn by the page, but the sentences are Hermes' own, so check them against the chart.
  • Hermes gives plugins no way to delete sessions, so these stay hidden in your session store.

Model calls apply your provider's normal usage costs.

Privacy

Your file  →  this page's storage  →  your Hermes model (a summary and eight rows, only when you ask)
                                   ↘  a copy in Hermes plugin data (only after you let chats read your reports)
                                   ↘  the web, through your Hermes web tools (only when an answer needs it)
  • Reports and their tables live in Hermes plugin storage on this desktop.
  • Chats can read my reports is off until you turn it on in Settings. While it is on, Data keeps a copy of each report under plugin-data/data/ in your Hermes home: the columns, the charts and the first 400 rows. Turning it off deletes the copies.
  • Open and export go through the system dialog. The page opens it with the Desktop SDK and hands the path to Data's own backend, which reads .xlsx, .csv, .tsv, .txt and .json, writes .html, .md, .svg and .csv, and refuses anything inside your Hermes home.
  • A CSV or JSON file you drag onto the page is read by the page itself and never leaves it. A dragged workbook opens the file dialog instead, because only the backend reads workbooks.
  • No telemetry, no credentials, no shell commands or background processes of its own. The page makes no network requests of its own.

Limits

  • One table per report. There are no joins across tables.
  • Charts are bars, lines, areas, donuts, dots and single numbers. A split shows at most five series, with the rest added together as "Other". There are no maps, heatmaps or stacked bars.
  • Scatter charts draw at most 600 points, sampled evenly from the table.
  • Chats see reports only while Hermes Desktop is running with Data switched on.
  • A report holds up to 40 charts.

Development checks

node check.mjs
node --test tests/data.test.mjs
python -m pytest tests/test_tools.py

desktop/plugin.js is one hand-written file with no build step and no bundled libraries. Charts are plain SVG drawn in that file.

License

MIT

README from the reviewed commit b7706c8; it updates when the author re-pins.

More by Adolanium

29 plugins by Adolanium in the catalog.

AdolaniumgadgetTalk to your Hermes from small ESP32 devices with a screen, microphone and speaker: hold a button, ask, and hear the answer. Adds a gateway platform where each device is a chat, plus tools to list devices, show a card on a screen and run device actions (LEDs, relays). Disclosure — the gateway listens for devices on a WebSocket port (8765, all interfaces by default; plain ws:// unless tls_cert/tls_key are set). New devices need a Hermes pairing code unless listed in GADGET_ALLOWED_USERS; GADGET_ALLOW_ALL_USERS skips pairing (development only). A paired device answers the agent's command approvals for its own chat (allow once or deny), within Hermes's approval timeout. The first approved device becomes the platform's home channel by default. Session hooks feed a dashboard on paired devices with each agent session's platform, a short id and its state (idle, busy, waiting for approval); a device that can switch profiles also sees the offered profiles' sessions. Optional profile switching (off unless `profiles` is set in the default profile's gadget config) lets a device paired on the default profile talk to the listed profiles; each profile approves the device through its own pairing flow (the device shows the `hermes -p <profile> pairing approve` command), the plugin writes nothing into other profiles, and revoking the device in the default profile sends it back there. A paired gadget that draws faces gets the answering profile's face: its `gadget-face.bin`, or its Hermes avatar (`assets/avatar.*`) converted with Pillow when installed; the plugin only reads these files, and `profile_faces: false` turns this off. `platforms.gadget.extra.stt_language` sets the transcription language of gadget recordings through the `pre_transcription` hook; other platforms' audio is untouched. Spoken replies that are not WAV are converted with the local ffmpeg; Opus reply audio uses the host's libopus when installed (loaded with ctypes, not bundled). `hermes gadget update --latest` downloads firmware from this repository's GitHub releases, checks size and SHA-256 against the release manifest (files carry build provenance attestations) and sends it to the device. A device that advertises `camera.capture` returns stills that are saved as PNGs under `~/.hermes/gadgetpix/` and kept until removed by hand. A Hermes Desktop page (`desktop/plugin.js`, plugin SDK only) runs a gadget in the window that connects to the local gateway as a device of its own: its device key, and the gateway access token when one is required, are kept in the page's plugin storage, it pairs like any device, and it uses the microphone only while its talk button or Space is held. The plugin's dashboard routes, behind the dashboard's login, can approve the pairing code a device is showing and send a card or run an advertised action on a connected, paired device; the requests pass through files under plugin-data/gadget/desk/. Otherwise writes only under plugin-data/gadget/. Uses Hermes's own STT, TTS and image cache; no telemetry. Independent community project, not affiliated with Nous Research.Communityplatform534Adolaniumhermes-resetwatchTrack subscription quotas and reset times in Hermes Desktop. Disclosure — probe.py re-executes itself under the Hermes Python interpreter located via HERMES_PYTHON / VIRTUAL_ENV / the parent process or the Hermes installer's managed venv (HERMES_HOME/installs). Every credential read is read-only and nothing is refreshed or stored: it reads provider API keys from the process environment, the Hermes .env (through Hermes's get_secret helper, else read directly), the Vaultwarden plugin's local secret cache (cache/vaultwarden_cache.json, only when Vaultwarden is the sole enabled secret source, keyed by a hash of BW_SESSION, which is never sent) and Docker s6 container env files; Hermes's saved OAuth logins (the credential pool through Hermes's read_credential_pool helper, else auth.json directly, and HERMES_HOME/.anthropic_oauth.json); and other coding-assistant CLIs' local logins: Claude Code (credentials file, macOS keychain or Windows Credential Manager), Codex, Cursor (macOS keychain and the IDE's state.vscdb, opened read-only), Kimi, Grok, ZCode and Command Code. For GitHub Copilot (on by default) it tries COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN (through Hermes get_secret, else the process environment), then the Copilot editor's apps.json / hosts.json, then runs gh auth token (prompts disabled, 3-second limit), trying each token in turn until GitHub accepts one. For Codex, a 401 or 403 is retried once with another saved login for the same account. It sends each key only to its own vendor's usage endpoint, presenting the vendor client's identity headers where a private endpoint expects them (Claude Code and Codex CLI user agents, the Grok CLI client headers, and for Copilot the VS Code / Copilot Chat editor headers on api.github.com/copilot_internal/user, which GitHub does not document); environment variables such as GROK_CLI_CHAT_PROXY_BASE_URL (honored only for https grok.com / x.ai hosts), CLAUDE_CONFIG_DIR, CODEX_HOME and GROK_HOME change which host or file it uses. Usage results are cached under HERMES_HOME/cache/resetwatch, never tokens. It exposes nothing to the model: it is a Desktop page only.CommunityDesktop app83Adolaniumhermes-rssRead RSS and Atom feeds and discuss articles in Hermes Desktop. Disclosure — feeds and full articles are fetched with curl through the gateway's shell.exec on the connected Hermes host (public-IPv4 SSRF guard); opt-in AI grading sends article excerpts to your configured model and creates HERMES_HOME/skills/rss-importance-grading/SKILL.md if missing; opt-in image loading fetches publisher images directly from Desktop.CommunityDesktop app65Adolaniumhermes-tailscaleBrowse Tailscale devices and connect to remote Hermes instances in Hermes Desktop.CommunityDesktop app60

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section