Source: raw/How_I_Put_Hermes_Agent_Inside_Excel_And_Made_It_a_Custom_Function.md (full how-to transcript) + raw/x-bookmarks-recent-digest-2026-06-17.md (the creator’s @tonbistudio X teaser for the same video) Creator: tonbistudio (X: @tonbistudio; channel membership tiers “Team Garage”) URL: https://www.youtube.com/watch?v=rodZ1xEuyVU Platform: YouTube

A walkthrough of running the full Hermes agent — tools, memory, and skills — inside Microsoft Excel, two ways: a chat task pane docked beside the sheet, and Hermes itself as custom cell functions (e.g. =HERMES.SUMMARIZE(...)). Both are backed by Hermes’ OpenAI-compatible API server (not the model-only “Hermes proxy”), so the same agent’s memory persists across sessions and even across separate Hermes projects. The presenter open-sources the add-in at tostudio/hermes-office.

Key Takeaways

  • Use the API server, not the proxy. The Hermes proxy exposes the model only (no tools, no agent). The Hermes API server exposes the full agent — tools, memory, skills — as an OpenAI-compatible endpoint. The Excel integration needs the API server.
  • Enable it with three .env lines: API_SERVER_ENABLED=true, a SERVER_KEY (treat as a password), and CORS ORIGINS set to localhost. The .env lives under %AppData%\Hermes on Windows or the home directory on WSL. Start “Hermes Gateway,” then health-check with curl localhost/v1/health.
  • HTTPS is mandatory for Office add-ins. Add-ins block plain-HTTP localhost calls, so front the API server with a Caddy reverse proxy (localhost → HTTPS, port 8643 in the demo). Verify with curl.exe --ssl-no-revoke against the HTTPS port.
  • Add-in anatomy: a taskpane.html + JS chat UI served over HTTPS, an XML manifest (“the glue”), and sideloading to register it so Excel shows the button. A Caddyfile injects the CORS header; its key must match the .env SERVER_KEY.
  • Scaffold with Yeoman yo office. Pick “Excel Custom Functions using shared runtime,” JavaScript; then cd into the project and npm start to load the task pane into Excel.
  • Task pane = a guarded agent in the sheet. It reads your selected range, writes ranges, creates sheets, applies formatting, and builds charts — but it proposes changes and only edits the sheet after you approve. Demo: cleaned a messy NFT P&L sheet (applied ~45 changes, repaired broken reference formulas), generated four charts from a selection, and returned top-three insights.
  • Four custom functions ship in the same add-in: HERMES.SUMMARIZE, HERMES.CLASSIFY (value + categories passed in quotes), HERMES.EXTRACT, and HERMES.FORMULA_HELP. They recompute live as referenced cells change — each recalculation is a fresh agent call.
  • Guardrails matter. Never let a function write to any cell but its own (infinite-loop risk); avoid volatile inputs since every change triggers a billed agent call; a built-in cache returns cached replies for identical requests. Keep functions simple and non-volatile.
  • One agent, shared memory. Because everything goes through the API server, the Excel work is logged as normal Hermes sessions — a separate Hermes project in a different directory recalled the Excel tasks via Hermes’ usual memory.
  • Open-sourced, Windows-first. Code is at tostudio/hermes-office on GitHub (Excel folder), built for Windows and a Windows agent — “hand it to your agent,” and adjust for macOS/Linux. Aside: “Copilot is Microsoft’s rules; you can hook it up with GPT or Claude” — the pattern generalizes to other agents.

Try It

  • Add the three API-server lines to your Hermes .env, start Hermes Gateway, and confirm curl localhost/v1/health returns OK.
  • Install Caddy and run a reverse proxy from the API-server port to an HTTPS port; verify with curl.exe --ssl-no-revoke https://localhost:8643/v1/health.
  • npm i -g yo generator-office, run yo office → “Excel Custom Functions using shared runtime” (JavaScript), then npm start to load the task-pane add-in.
  • Clone tostudio/hermes-office and hand the Excel folder to your Hermes agent rather than rebuilding the scaffold by hand; adjust paths if you are not on Windows.
  • Start with non-volatile cells when testing HERMES.CLASSIFY / HERMES.SUMMARIZE to avoid runaway agent calls, and confirm the cache is serving repeat requests.