Skip to main content

bot-cabinet-v2

❖ Communityv0.3.10

Tell Cabinet the job you need done and it answers with the smallest setup that does it (one chat, a skill, a routine, a Bot or a crew), shows which answers led there, then helps you act: add one of botcabinet.com's 20 Bots (each with its test record shown) as a Hermes profile, plan a new Bot line by line, or set up a crew of Bots in a handoff order with blocked Kanban cards. Everything Cabinet makes can be removed again from My Bots, and a Bot that Hermes's own Bots catalog carries is handed over to it, never duplicated.

Open in Hermes Desktop
hermes plugins install bot-cabinet-v2

Screenshots

README

From the reviewed commit 5b0e629 ↗; it updates when the author re-pins.

Cabinet for Hermes

Install

Install in Hermes · Read the manual (on the web)

  1. Press Install in Hermes on botcabinet.com/hermes/manual, on the computer where Hermes Desktop is installed. GitHub doesn't open hermes:// links, so the button lives there; you can also paste hermes://plugin/install?repo=Dgardenhire/hermes-cabinet&enable=1 into your browser. Hermes Desktop opens Cabinet's install screen. Press Install. Hermes marks Cabinet as Unverified because it comes straight from GitHub; that is expected for now. Once Cabinet is in the Hermes plugin catalog, open Capabilities → Plugins in Hermes Desktop, find Cabinet and press Install.
  2. Open Cabinet in the sidebar. If it isn't there yet, quit Hermes Desktop fully and open it again.
  3. If it says Cabinet isn't connected, open Capabilities, turn Cabinet on, and open the page again.

Prefer the terminal? On Windows open PowerShell, on a Mac or Linux open Terminal, and run hermes plugins install Dgardenhire/hermes-cabinet --enable. Then quit Hermes Desktop fully and open it again.

Tell Cabinet the job you need done. It answers with the smallest setup that does it, shows which of your answers led there, and then helps you act on it: add one of botcabinet.com's Bots as a Hermes bot, plan a new one, or set up a crew of Bots that hand work to each other. Anything Cabinet makes can be removed again from My Bots, as long as you haven't changed it.

Cabinet is the Hermes Desktop edition of Bot Cabinet. Version 0.3.10, MIT licensed.

Cabinet: find the smallest setup for a job, then add Bots and crews from botcabinet.com, with undo

Start Here

What it does

Screen What you do there
Start Here See the 20 Bots, the 11 Crew Kits, how many have recorded test runs, and how Cabinet sits beside the Hermes Bots catalog
Fit Test Describe a job and answer five questions. Cabinet answers Ask Hermes once, Save it as a skill, Run it on a schedule, One Bot or A crew, with every answer that led there
The Cabinet Browse every Bot with its painted portrait and test status. Add opens a review screen with the exact profile Hermes will make
Bot Lab Plan a Bot that isn't published, line by line. Make it as a profile, or save the plan as a kit
Crew Kits Review a crew's bots and handoff order, then set it up. Optional blocked Kanban cards, one per step
My Bots Everything Cabinet made, its live state, a chat link, and Remove for anything you haven't changed
Test Records What each Bot and crew has been tested on, including failures
Add a Bot Set up a crew
Add: the exact profile, editable, before anything is made A crew: every bot, the handoff order, and what Hermes can't do
My Bots Fit Test answer
My Bots: status, chat, Remove only for untouched bots The Fit Test answer, traced to your answers

How Cabinet stays out of the Hermes Bots lane

Hermes is getting its own Bots catalog (NousResearch/hermes-agent#119260, not in Hermes main yet). A Bot that catalog carries is added there. Cabinet works the same with or without it, and does these things when it is there:

  • It asks Hermes. When the page opens, Cabinet asks this Hermes's gateway for bots.catalog. An answer means the catalog is there. An error or a timeout means it isn't, and Cabinet adds every Bot itself, as before. A yes is kept for half an hour, a no is asked again after a minute, and Refresh asks straight away. Cabinet's backend also reads the catalog from Hermes itself, so a Bot it carries is handed over even while the gateway is slow to answer.
  • It hands over. For a Bot the catalog carries (the catalog name equals Cabinet's slug), Add reads "Add in Hermes Bots" and opens Capabilities, in the Bots tab, naming the Bot to pick there. The plugin SDK has no way to open a hermes://bot/install?catalog=<name> link, so the catalog's own review screen for that one Bot can't be opened directly. Cabinet makes no copy of its own, and its backend refuses to make one if asked directly.
  • Crews follow the same rule. Cabinet never makes a crew member the Hermes catalog carries. You add that Bot in Hermes Bots first, and the crew uses it, under whatever profile name Hermes Bots gave it.
  • It flags an earlier copy. If Cabinet made a Bot before your Hermes had its own catalog, My Bots says Hermes Bots also has it, so you keep one copy.
  • It adds the rest. A Bot the catalog doesn't carry keeps Cabinet's own Add, through profiles.create.
  • It never adds a second copy. A profile with a bot-blueprint.yaml, or whose profile.yaml says kind: bot-catalog, shows "Already added through Hermes Bots" in The Cabinet and in My Bots.
  • It never takes one over. Cabinet never records, edits or removes a profile Hermes's catalog added, even one with the name Cabinet planned.

What stays Cabinet's: the Fit Test (do you need a Bot at all?), Bot Lab (a Bot nobody published), Crew Kits (several Bots in a set order, with blocked Kanban cards) and Test Records (what has been tested). For talking a job through with several bots at once, Cabinet points to Hermes's own group chats.

Install in Hermes Desktop

Cabinet needs Hermes 0.22.0 or later, and git (Hermes uses it to fetch the plugin).

  1. Press Install in Hermes on botcabinet.com/hermes/manual. It opens hermes://plugin/install?repo=Dgardenhire/hermes-cabinet&enable=1, and Hermes Desktop shows its install screen; press Install. Hermes marks this source Unverified; that is expected until Cabinet is in the Hermes plugin catalog. Once it is, open Capabilities → Plugins, find Cabinet and press Install (or use hermes://plugin/install?catalog=bot-cabinet), which installs the reviewed commit. The plugin installs under its registry name, bot-cabinet-v2.
  2. Open Cabinet in the sidebar. If it isn't there yet, quit Hermes Desktop fully and open it again, or open Capabilities, Plugins and press Rescan. If the page says Cabinet isn't connected, turn the plugin on under Capabilities and reopen the page.

From a terminal instead: hermes plugins install Dgardenhire/hermes-cabinet --enable (PowerShell on Windows, Terminal on a Mac or Linux), then restart Hermes Desktop. Once Cabinet is in the catalog, hermes plugins install bot-cabinet --enable does the same at the reviewed commit. If you run Hermes without the Desktop app, run hermes gateway restart instead of restarting the app.

These steps were run on Oct 15, 2026 against a fresh copy of Hermes 0.22.1: the plugin installed from this repository, switched itself on, loaded cleanly, and its desktop page and dashboard routes answered.

How adding works

  1. Plan. Cabinet builds the profile from the Bot's catalog entry and your edits (installer.py) and checks every part (safety.py). Nothing is written.
  2. Create. The page sends that exact request to Hermes's gateway, profiles.create, the call New Agent uses. Hermes gives the new bot your current model and sign-in. Cabinet passes no model and never handles a credential. The page waits up to two minutes, because Hermes sets up a new profile in a separate process.
  3. Record. Cabinet checks what Hermes made (it exists, is new since the plan, carries the planned instructions, and Hermes's own Bots catalog didn't add it) and records it with a fingerprint. If the reply from Hermes was lost, Cabinet records the profile only when its instructions are exactly the planned ones, and changes nothing in it. If Hermes says the name already exists, Cabinet records nothing.

Remove works only while the profile still matches that fingerprint, and goes through Hermes's own delete. A crew member's instructions name its own step, who it gets work from and who it hands to next, from the crew's handoff order. Hermes does not run a crew by itself, and Cabinet says so on the crew screen. Once a crew is set up, Cabinet suggests a Hermes group chat with its bots for talking the job through; the crew's order stays with the Kanban cards.

Live catalog

On open and on Refresh, Cabinet asks https://botcabinet.com/catalog.json for the current catalog, checks it against a strict schema (catalog_schema.py), and keeps the last good copy. botcabinet.com publishes it from every site build (since October 15, 2026), so Cabinet shows "Updated from botcabinet.com"; if the site can't be reached it uses the last good copy, or the catalog it shipped with, and says which. docs/site-catalog-contract.md is the file's contract; tools/make_site_catalog.py writes it.

Privacy

  • Cabinet makes one network request: the catalog file above, over https, to botcabinet.com only, at most 2 MB. No analytics, no telemetry, no account.
  • Cabinet never reads, stores or passes on your sign-in, keys or model settings. Instructions that look like they hold a key or password are refused.
  • Cabinet's own record (what it made, saved kits, the cached catalog) is a small SQLite file and a JSON file in $HERMES_HOME/state/bot-cabinet-v2/ (normally ~/.hermes/state/bot-cabinet-v2/). Delete that folder to forget everything Cabinet knows; your bots stay.
  • A Fit Test answer's chat button, and Bot Lab's Ask Hermes to help, open a new chat and send that one message there. If the app has no composer to send through, the message goes to your clipboard instead. Cabinet sends nothing else.

What Cabinet does on your computer (disclosure)

Everything a careful user would want to know before installing, in one place. SECURITY.md has the detail and how to check each line.

  • Network. One https request, to https://botcabinet.com/catalog.json, when the page opens and on Refresh. At most 2 MB, same-host redirects only, checked against a strict schema before use. Nothing is sent but the request itself. No analytics, no telemetry, no account.
  • Creates and removes Hermes profiles. Add and crew setup create profiles through Hermes's own gateway call profiles.create (the call New Agent uses). Remove deletes a profile through Hermes's own delete_profile, and only a profile Cabinet made that still matches the fingerprint Cabinet recorded. A profile you changed, or one Hermes's Bots catalog added, is never edited or removed.
  • Kanban cards. Setting up a crew can add blocked cards to your Hermes Kanban board (optional, one per step), and removing the crew archives them.
  • Reads outside its own folder. It lists ~/.hermes/profiles/ to avoid name clashes and to see which profiles it made, reads a profile's SOUL.md, profile.yaml and bot-blueprint.yaml to check what Hermes made, hashes its SOUL.md, config.yaml and skills folder to fingerprint it (the contents are not stored), and asks the gateway whether Hermes's own Bots catalog (bots.catalog) is present.
  • Writes. Its own record (a small SQLite file and the cached catalog) in $HERMES_HOME/state/bot-cabinet-v2/ (normally ~/.hermes/state/bot-cabinet-v2/). In a profile it has just made: the display name, through Hermes's own profile metadata call, and, only if Hermes didn't save the planned instructions, that new profile's SOUL.md. Nothing else.
  • No shell commands, no background processes, no credentials. Cabinet runs no subprocess, starts nothing that outlives the page, and never reads, stores or passes on a key, token or model setting. The new bot uses the model and sign-in you already have, set by Hermes.
  • Chat buttons. A Fit Test answer's chat button and Bot Lab's Ask Hermes to help open a new chat and send that one message; if the app has no composer, the message goes to your clipboard instead.
  • Private Hermes modules. Cabinet reads Hermes's profile list and Kanban board through hermes_cli.profiles, hermes_cli.kanban_db, hermes_cli.kanban_db_connect and hermes_cli.bot_catalog, because the plugin API has no public seam for them yet. It never patches or replaces anything in Hermes. hermes plugins validate reports these imports as warnings.
  • No self-updating. Cabinet never fetches or replaces its own code. The catalog file it downloads is data (Bots and crews), never code.

Verified and not verified

Verified by 449 tests (all pass with Hermes importable; the 3 that compare against a local botcabinet.com checkout skip without one):

  • Cabinet's request goes through Hermes's real profiles.create handler, and Hermes's own SOUL.md loader loads exactly the planned instructions, with nothing flagged by its injection scanner. Run for every Bot and every crew with CABINET_E2E_ALL=1 /usr/bin/python3 tests/run_with_hermes.py -k e2e.
  • Crews: right members, handoff-aware instructions, Kanban cards blocked, chained and assigned to the right bot.
  • Cabinet never overwrites, edits or deletes a profile it didn't make, or one you changed.
  • The test runner fails if the real ~/.hermes changes.

Verified on Oct 15, 2026: the install steps, run against a fresh copy of Hermes 0.22.1; adding and removing a Bot clicked through in a real Hermes Desktop, with the person's other profiles unchanged; the live catalog from botcabinet.com. Verified on Oct 16, 2026: hand-over against the real Hermes Bots catalog code in NousResearch/hermes-agent#130283 (which includes #119260), in a clean copy of Hermes, for the four Bots both catalogs carry (Daily Newspaper, Receipt, Coach, Professor): single adds, crews, and a Hermes update that brings the catalog in later. Not verified: no model was called.

Develop

cd tests && /usr/bin/python3 -m unittest discover -p "test_*.py"
/usr/bin/python3 tests/run_with_hermes.py        # also the tests that call Hermes (separate clone, temporary home)
/usr/bin/python3 harness/serve.py 8893           # then open http://127.0.0.1:8893/harness/
/usr/bin/python3 harness/shoot.py                # screenshots of every screen into harness/shots/

tests/run_with_hermes.py uses a separate clone of Hermes, named by CABINET_HERMES_SRC=/path/to/hermes-agent-clone, and never the installed copy. Without it, the tests that need Hermes are skipped.

Path What it is
fit.py The Fit Test: a rules table, every answer traced to its question
catalog.py, data/catalog.json The Bots, Crew Kits and job guides (snapshot from botcabinet.com)
api.py Page view models
installer.py, store.py, safety.py, hermes_bridge.py Plan, record and undo; Cabinet's record; the checks; the one guarded door into Hermes
sync.py, catalog_schema.py Live catalog fetch and its schema
dashboard/plugin_api.py The page's backend routes
desktop/src/plugin.js, desktop/plugin.js The page's source and the file Hermes loads (imports only @hermes/plugin-sdk, react, react/jsx-runtime). desktop/plugin.js is a readable, unminified esbuild bundle of desktop/src/ and a small shared UI kit, with every source file marked by a comment; it is the file to review
harness/ Renders the page without Hermes, against the real backend

Credits

See CREDITS.md. In short: Bot Cabinet and its Bots come from botcabinet.com; Daily Newspaper was inspired by Karen X. Cheng's The Morning Newspaper; the Hermes Bible guides belong to their authors.

field-academy❖ Community

Learn Hermes by doing real work. Four paths (Messenger, Traveler, Crossroads, Boundary Keeper) climb Beginner, Intermediate and Advanced to a capstone on a problem of your own, and a fifth, Guide, covers setting Hermes up for a client: practice labs built from made-up data, a proposal, one real service run by a scheduled job for several days, a recovery drill, and a review signed by a reviewer you choose. Every mission ends with a check on something you made; your own Hermes scores your written answers in a new chat; passed missions come back for short spaced reviews; and at the end of a path you can create a Field Record, your own self-issued learning record. Field Academy is an independent community plugin. It is not made, issued or endorsed by Nous Research. Disclosure — no network calls (a source link opens in your browser only when you click it); no credentials, telemetry, shell commands, background processes or self-updates; registers six tools, two hooks, the /academy command and one skill: pre_llm_call may add one sentence offering a practice to the user message, only in interactive desktop, TUI and CLI sessions, and post_tool_call records which tool was used; pressing Try it or a scoring button opens a new chat and sends the practice or scoring prompt there (on an older Hermes it goes to the clipboard instead); the Desktop page calls gateway list methods only (session.list, cron.manage list, skills.manage list, tools.list, mcp.catalog, commands.catalog, setup.runtime_check); stores progress, pasted documents, practice labs, review packets and saved Field Records in $HERMES_HOME/plugin-data/field-academy/; reads a file you name (UTF-8 text, max 5 MiB) and hashes a recording you name without copying it; Guide labs write and check made-up .env and auth.json files inside its own labs folder (refusing to build in a real Hermes home) and never read Hermes's real ones; on the Guide path reads Hermes's run-history database read-only and immutable, jobs.json and up to 25 log files (2 MiB each), keeping only timestamps for the job you name, and reads install-stamp.json for the Hermes version; no private Hermes imports.

Desktop

← Back to the catalog · catalog built Oct 17, 2026