All plugins

devkit

One managed home for agent drafts: a per-session scratchpad of named buffers the agent edits in place instead of writing a new temp file per revision. Buffers live under plugin-data/devkit/, open in the Desktop code viewer, are promoted to real files only through write_file, and are removed when their chat is deleted. A Scratchpad tab beside Files groups chats by date like the chat sidebar; click a chat to open it, click a file to view or edit it in a workspace tab, and delete or clear drafts. Disclosure — adds a short placement rule (about 120 tokens) to each turn's user message; reads state.db read-only once an hour from a background thread to find deleted chats, and also removes folders idle longer than idle_days (default 90) using its own stamps; deletes only its own folders under plugin-data/devkit/; no network calls, credentials or third-party services.

Zek-TakaiToolsv0.3.0Updated 26 days ago

About

One managed home for agent drafts: a per-session scratchpad of named buffers the agent edits in place instead of writing a new temp file per revision. Buffers live under plugin-data/devkit/, open in the Desktop code viewer, are promoted to real files only through write_file, and are removed when their chat is deleted. A Scratchpad tab beside Files groups chats by date like the chat sidebar; click a chat to open it, click a file to view or edit it in a workspace tab, and delete or clear drafts. Disclosure — adds a short placement rule (about 120 tokens) to each turn's user message; reads state.db read-only once an hour from a background thread to find deleted chats, and also removes folders idle longer than idle_days (default 90) using its own stamps; deletes only its own folders under plugin-data/devkit/; no network calls, credentials or third-party services.

hermes-devkit: Scratchpad for Hermes

A Hermes plugin that gives agents one managed home for drafts: a per-session scratchpad of
named buffers, edited in place, shown in the Desktop code viewer, and cleaned up with the chat.

Scratchpad tab beside Files, with a draft open in the code viewer

Why

Agents draft constantly: code snippets, HTML mocks, lesson code, notes. Without a place meant
for drafts they land as loose files, a new one per revision (page.html, page_v2.html,
page_final.html...), in Hermes' shared temp folder ~/.hermes/cache/scratch. That folder is
also where Hermes and its tools put throwaway machinery (browser profiles, downloads, CI logs,
tempfile output), it is shared by every chat, and anything in it is pruned 24 hours after its
last write, whether or not the chat is still using it.

devkit separates the two. Drafts get their own location, scoped to the chat, kept as long as the
chat exists, and visible in one Desktop tab where you can review or clear them.

How the agent uses it alongside Hermes

The plugin adds a scratchpad tool and a short rule to every turn, so the agent picks the right
place for each kind of output:

| Output | Where it goes | Lifetime |
|---|---|---|
| Drafts you look at, discuss or iterate on: code, HTML pages, lesson pads, notes | scratchpad (this plugin), plugin-data/devkit/sessions/<chat>/ | until the chat is deleted |
| Throwaway machinery nobody reads: screenshots for the agent's own checks, downloads, logs, one-off helper scripts | Hermes' own ~/.hermes/cache/scratch (unchanged) | 24 h after the last write |
| Project work, or a file you ask for | write_file, or scratchpad action=promote | permanent |

Hermes' own scratch folder keeps working exactly as before; devkit only takes drafts out of it.

If the agent doesn't use it on its own: the per-turn rule makes the scratchpad the
default, but the model decides which tool to call, and it doesn't always pick the scratchpad
first, especially early in a chat or for a one-off snippet. If it writes a loose file or pastes
the code into the chat instead, just ask it to use the scratchpad ("put that in the
scratchpad"); it then keeps using it for the rest of the chat.

A typical exchange:

  1. You ask for a small program. The agent calls scratchpad action=write name=main.py and
    action=open; the draft opens in the Desktop code viewer.
  2. You edit it in the viewer, or ask for a change. The agent reads the buffer and
    action=patches it in place: still one main.py, no new files.
  3. When the work belongs in a project, you say so and the agent runs
    action=promote path=~/project/main.py, which writes the file through Hermes' normal
    write_file (approvals apply).
  4. Delete the chat and its buffers go with it.

Tool reference

| Action | What it does |
|---|---|
| write | Create or replace a buffer (name, content) |
| patch | Replace old_text with new_text in a buffer (replace_all for every match) |
| read | Return a buffer's content |
| list | List this chat's buffers |
| open | Show a buffer in the Desktop code viewer / preview (desktop_preview) |
| delete | Remove a buffer |
| promote | Write a buffer to a real file (path, absolute or ~; overwrite to replace) via write_file |

Buffer names are plain file names (main.py, page.html); the extension sets syntax
highlighting. Each buffer is capped at 2 MB.

The Scratchpad tab (Desktop)

A tab beside Files in the right-hand zone, hidden with it. Chats with drafts are grouped the
same way as the chat sidebar (Today, Yesterday, Earlier this week, Last week, then by month),
each with its files underneath:

  • Click a chat title to open that chat.
  • Click a file to open it in a tab in the main workspace, with line numbers, Edit/Save
    (your edits go straight into the buffer the agent reads) and Open chat.
  • × deletes a file or a chat's drafts. Chats that were deleted are listed under
    Deleted chats with a Clear action; Clear all removes every draft. Deleting drafts
    never touches the chat itself.
  • The tab refreshes whenever the agent uses the scratchpad.

Desktop: Scratchpad tab in the Files zone

Cleanup

Automatic, hourly, in one Hermes process at a time (file lock), with a one-hour grace period for
new folders:

  1. Deleted chats: a folder whose chat is gone from Hermes' state.db is removed. If the
    database can't be read, nothing is removed; if a read matches none of the plugin's chats while
    two or more would be removed, it is treated as a schema change and skipped.
  2. Idle chats: each folder carries the plugin's own stamp (created, last_active). A folder
    idle longer than idle_days (default 90, Hermes' session auto-prune window) is removed, even
    if the database can't be read.
  3. Manual: the Scratchpad tab.

Disclosures

  • Adds a short placement rule (about 120 tokens) to each turn's user message.
  • Reads Hermes' state.db read-only, once an hour, from a background thread.
  • Deletes only its own folders under <HERMES_HOME>/plugin-data/devkit/.
  • No network calls, credentials, third-party services or telemetry.

Install

hermes plugins install devkit
hermes plugins enable devkit
hermes gateway restart

Then start a new chat (a chat's tools are fixed when it is created). For the tab, enable
devkit's Desktop half under Capabilities → Plugins (Hermes ships Desktop halves off).

Settings (plugins.entries.devkit.settings in config.yaml):

| Key | Default | Meaning |
|---|---|---|
| idle_days | 90 | Remove a chat's buffers after this many idle days |

Requirements

  • Hermes >= 0.22.0.
  • action=open needs the Desktop window bridge on the session gateway
    (NousResearch/hermes-agent#138917).
    On v0.22.1 without it, open reports "The preview pane is only available in the Hermes
    desktop app"; every other action works.

Development

plugin/              the installable package (catalog subdir)
  plugin.yaml        manifest
  __init__.py        registration: tool, hook, hourly cleanup
  scratchpad/        store, tool, per-turn rule
  dashboard/         backend routes for the tab (/api/plugins/devkit/)
  desktop/plugin.js  the Scratchpad tab
tests/               pytest suite
docs/                screenshots
ln -s /path/to/hermes-devkit/plugin ~/.hermes/plugins/devkit
hermes plugins enable devkit
hermes plugins validate /path/to/hermes-devkit/plugin --install-deps
python -m pytest tests -q      # with the Hermes test interpreter

License

MIT

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

More by Zek-Takai

3 plugins by Zek-Takai in the catalog.

Zek-TakairunboxBuild, run and test Python in an offline container per chat, with results as a plain file:line issue list. The agent syncs files or folders in as copies, then runs run (a shell command), check (ruff error rules) and test (pytest); fixes stay in the box until the user asks for export, which writes changed files back through write_file and reports host files changed since the sync as conflicts. In Hermes Desktop a VS Code-style editor opens beside the chat: file tabs with in-place editing, Run / Check / Test / Stop, and PROBLEMS / OUTPUT / RUNS panels that follow the agent live. Ships the runbox:dev-loop starting-point skill. Disclosure — needs Docker (on macOS a dedicated colima profile 'runbox', started on demand with --activate=false and its own Docker config); pulls the container image pinned by digest and installs a hash-pinned checker toolchain (ruff 0.16.9, pytest 9.1.1 and deps) from PyPI once per image; the work container has no network, hardened flags, and runs commands without Hermes' dangerous-command approval like Hermes' Docker backend; install (PyPI) always asks for approval in a separate installer container; a write_file/patch on an imported original asks for approval (guard_imports); export reads each existing target through read_file before replacing it; a background thread removes idle containers (15 min), stops the VM, and removes boxes of deleted or long-idle chats (reads state.db read-only hourly); adds a short per-turn note (about 80 tokens); no credentials or telemetry.CommunitytoolsZek-TakaitetherOne Hermes agent, many machines: lends a remote Hermes agent the terminal, files, screen and apps of your paired desktop machines (macOS and Windows). Say 'tether <machine>' and the agent's terminal, file and computer-use tools act on that machine under its own Hermes rules and approvals; send 'untether' to bring them home. Each machine dials the host over a pinned, mutual TLS 1.3 link (256-bit suites only), and the person at the machine allows every session on its own screen before anything runs. Includes a Tether panel for Hermes Desktop (paired machines, labels, idle limits, connection log). Disclosure — the host listens on the LAN or tailnet address you configure (default 127.0.0.1) and each paired device connects to it over pinned mutual TLS 1.3; no third-party services, no telemetry; while a machine is tethered, the host session's shell commands, file reads/writes and computer use run on that device after the person there allows the session, judged by the device's own Hermes rules (its hardline/deny floors always; commands the host's approval gate already passed skip the device's own approval prompts); skills opened during a tethered session are copied read-only into a per-session workspace on the device and removed when it closes; background tasks: the link listener (host), the device's connection, an idle sweeper and a settings watcher; stores one Ed25519 key per machine, encrypted at rest, with its passphrase in Hermes's secret store; adds a short per-turn note while a machine is tethered; reads private Hermes approval internals (tools.approval) and fails closed if they change.Communitytools

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section