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
.envlines:API_SERVER_ENABLED=true, aSERVER_KEY(treat as a password), and CORSORIGINSset to localhost. The.envlives under%AppData%\Hermeson Windows or the home directory on WSL. Start “Hermes Gateway,” then health-check withcurl 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-revokeagainst 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. ACaddyfileinjects the CORS header; its key must match the.envSERVER_KEY. - Scaffold with Yeoman
yo office. Pick “Excel Custom Functions using shared runtime,” JavaScript; thencdinto the project andnpm startto 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, andHERMES.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-officeon 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 confirmcurl localhost/v1/healthreturns 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, runyo office→ “Excel Custom Functions using shared runtime” (JavaScript), thennpm startto load the task-pane add-in.- Clone
tostudio/hermes-officeand 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.SUMMARIZEto avoid runaway agent calls, and confirm the cache is serving repeat requests.