All plugins

inbox

hermes inbox: one read-only view of everything in flight for the active profile: failed or paused cron jobs, stalled or dropped delegations, orphaned background processes, blocked kanban tasks, running work, undelivered delegation results, upcoming cron runs and open chat sessions, with --json for scripts. A Hermes Labs plugin: built by Nous Research, not supported. Disclosure — reads processes.json, cron/jobs.json, runtime/active_sessions.json and state.db (SQLite read-only) in the profile's home, plus the shared kanban board's kanban.db (read-only); it never writes, repairs or prunes them, adds no model tools or hooks, and sends nothing anywhere.

NousResearch168GeneralUpdated 7 days ago

About

hermes inbox: one read-only view of everything in flight for the active profile: failed or paused cron jobs, stalled or dropped delegations, orphaned background processes, blocked kanban tasks, running work, undelivered delegation results, upcoming cron runs and open chat sessions, with --json for scripts. A Hermes Labs plugin: built by Nous Research, not supported. Disclosure — reads processes.json, cron/jobs.json, runtime/active_sessions.json and state.db (SQLite read-only) in the profile's home, plus the shared kanban board's kanban.db (read-only); it never writes, repairs or prunes them, adds no model tools or hooks, and sends nothing anywhere.

Inbox

Labs plugin: works, but unsupported. Nous Research built it and does not maintain it. See
what "labs" means.

hermes inbox shows everything Hermes has in flight for the active profile in one read-only view:
what needs your attention, what is running, which background results are waiting, what is
scheduled and which chat surfaces are open. Inspired by Cursor's Inbox.

$ hermes inbox

  ◆ Needs attention (4)
    ⚠ cron 'nightly-backup'  last run FAILED: Script exited with code 1 stderr: backup target /mnt/nas not mounted
    ⚠ cron 'feed-watch'  paused (waiting on API key)
    ⚠ process proc_9f2c44  [GONE (stale checkpoint), 3h13m]  pytest -x tests/ --watch
    ⚠ kanban t_12200367  [blocked]  Get Stripe test keys from finance

  ◆ In progress (2)
    ◐ process proc_7c1e02  [running, 22m]  npm run dev -- --port 5173
    ◐ delegation dlg_41a7  [running, 5m ago]  Research venue pricing for 40 people in Austin

  ◆ Finished, result not yet delivered (1)
    ✔ delegation dlg_3b90  [completed, 3m ago]  (result awaiting delivery)  List every caller of charge_customer()

  ◆ Scheduled (2 active job(s))
    ⏱ nightly-backup  next: 2026-10-21T06:08:46.190275-07:00
    ⏱ morning-digest  next: 2026-10-21T08:00:00-07:00

  ◆ Open surfaces (2)
    ◎ session [cli] pid=1197440  Plan the offsite
    ◎ session [tui] pid=1197519  Refactor the billing module

Install

hermes plugins install inbox

It adds one CLI command (hermes inbox). No model tools, no hooks, nothing runs during chats. No
dependencies beyond Hermes itself. The agent can still use it: ask it to run hermes inbox --json
in the terminal.

Usage

hermes inbox            # the view above
hermes inbox --json     # the same snapshot as JSON, for scripts and dashboards
hermes -p work inbox    # another profile's inbox (install the plugin in that profile too)

Sections with nothing in them are left out, except "Needs attention" and "In progress", which
always print so an empty inbox reads as all clear.

SectionWhat appears
Needs attentionStalled or unknown delegations, delegation results dropped after failed deliveries (last 7 days), cron jobs whose last run failed or that were paused with a reason, background processes still in the checkpoint whose PID is gone, kanban tasks that are blocked or waiting for review.
In progressLive background processes, running async delegations, running kanban tasks.
Finished, result not yet deliveredDelegations that completed but whose result has not reached its conversation yet.
ScheduledEnabled cron jobs and the next five runs.
Open surfacesOpen CLI, TUI, Desktop and gateway chat sessions whose process is still alive, with the session title.

What it reads

Everything is read-only: JSON files are read as files, SQLite databases are opened with
mode=ro, and session titles come from Hermes' read-only SessionDB attach. It never writes,
repairs or prunes a store (SQLite may create a database's -wal/-shm sidecar files, as it does
for any reader), and works whether or not a gateway is running. Paths resolve against
the active profile's home (HERMES_HOME, or hermes -p <profile>), except the kanban board,
which Hermes shares across profiles.

SourceStoreIf it is missing or unreadable
Background processes<home>/processes.json (the process registry checkpoint). Host PIDs are re-checked with psutil; PIDs inside a sandbox backend can't be probed and show as sandboxed.Section empty; listed under "Not read".
Async delegationsasync_delegations table in <home>/state.dbSame. A locked database gives up after 2 seconds instead of hanging.
Cron jobs<home>/cron/jobs.jsonSame.
Open chat surfaces<home>/runtime/active_sessions.json (active-session leases), titles from state.db via SessionDB(read_only=True). A lease counts only while its PID is alive and, when recorded, its process start time still matches (a recycled PID is not counted).Same; without state.db the session id shows instead of the title.
KanbanThe current board's kanban.db, resolved the documented way: HERMES_KANBAN_DB, else HERMES_KANBAN_BOARD, else <root>/kanban/current, else <root>/kanban.db, with <root> = HERMES_KANBAN_HOME or the default Hermes root.Same.

Every section that could not be read is named at the bottom of the text view ("Not read") and in
the sources field of the JSON ("read", "absent" or "unreadable (...)").

Not shown: pending approvals and clarify prompts. They live in the memory of the process that
asked (the gateway or an open CLI), with no store another process can read, so answer them in
that chat.

Configuration

None.

Development

cd inbox
HERMES_AGENT_REPO=../../hermes-agent PYTHONPATH=../../hermes-agent python -m pytest -q

The tests seed a temp HERMES_HOME through Hermes' own writers (SessionDB for state.db,
kanban_db.init_db for kanban.db), so the queries run against core's real schema, and they
check that building the inbox writes nothing to the home it reads.

Origin: hermes-agent PR #81507 (hermes inbox), moved out of core into this plugin.

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

More by NousResearch

29 plugins by NousResearch in the catalog.

NousResearchaccent-pickerOKLCH accent colour picker for the Hermes Desktop status bar: drag it and the whole theme retints live, with palette commands to reset to the theme default or copy the current colour. A theme-authoring tool; the colour is scratch state and is never persisted. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.OfficialDesktop app676NousResearchadvanced-delegationTwo extra delegation modes for delegate_task, next to the built-in default. Model routes (delegation.backend: model_map): the agent picks a named model route per subagent from a list you define (e.g. fast, deep, local). Profile routes (delegation.backend: profile_routes): the agent runs a subagent as one of your Hermes profiles, with that profile's own model, credentials, skills and SOUL.md. Only route names and their one-line descriptions reach the model. Adds hermes delegation config (pick the mode and edit its routes; --show prints the setup) and the /delegation slash command (save a mode for the next session, or --now to apply it to the current chat). Needs Hermes 0.22.5 or newer, the first release with pluggable delegation providers; Hermes 0.22.0 to 0.22.4 refuses to install it, and on a core older than 0.22.0 it installs, logs one warning and does nothing. A model route can set daybreak: true to run its model with OpenAI's Daybreak trusted-access program; it is sent only from your own CLI, TUI or Desktop chats, on openai-codex, for models your Codex catalog lists, and a route that breaks a rule is refused. Disclosure — no Python dependencies and no network or model calls of its own, except that a Daybreak route checks the Codex catalog through core's cached lookup with your existing Codex login; subagents run through core's delegate_task on the routes you configured. Writes only delegation.backend and delegation.backends.* (model_map / profile_routes) in the active profile's config.yaml, through core's config writer. A model route's optional api_key is stored in config.yaml in plain text (provider: keeps keys in .env / auth.json). Listing a profile under profile routes lets this profile's subagents use that profile's credentials, SOUL.md and terminal policy.Officialtools676NousResearchagent-importershermes import-agent: import an OpenClaw (~/.openclaw, or legacy ~/.clawdbot / ~/.moltbot), Claude Code (~/.claude), Codex CLI (~/.codex), Cursor (~/.cursor), Grok Bot (a self-export the Bot writes from a prompt the importer prints) or OpenBot desktop (its openbot.db) setup into Hermes in one command; always previews first and asks before applying. Claude Code / Codex / Cursor: instructions, Cursor rules and memories become memory entries, Bash permission rules become command allow/deny lists, MCP servers land in config.yaml, skills are copied, and --sync re-imports sources that changed. OpenClaw (core's former hermes claw migrate; the plugin keeps that spelling, hermes claw cleanup and the openclaw-migration skill): persona, memories, skills, model and messaging settings, MCP servers and agent behaviour. Formerly built into Hermes core; hermes setup offers to install it when it finds one of these agents, and profiles with a registered sync source are migrated automatically. Disclosure — no Python dependencies, no network calls and no model calls. Claude Code / Codex / Cursor: reads those agents' local config trees (never their credential files; secret-looking MCP env vars and headers are stripped and listed) and writes only into the active profile (memories/MEMORY.md with a backup, config.yaml, skills/ and import-sync.json). OpenClaw: reads the OpenClaw dir (openclaw.json, its .env, workspace files such as SOUL.md / MEMORY.md / USER.md, skills); API keys and bot tokens come over only with --migrate-secrets (allowlisted names, shown in the preview). It writes into the active profile (config.yaml, .env, SOUL.md, memories/, skills/openclaw-imports/, a migration/openclaw/<time>/ report with item backups, and a backups/pre-migration-*.zip restore point), plus a workspace dir only when --workspace-target names one. It runs local pgrep / systemctl / tasklist checks to warn when OpenClaw or a Hermes gateway is still running, and hermes claw cleanup renames the OpenClaw dir to *.pre-migration after a confirmation. Grok Bot / OpenBot: instructions become SOUL.md, memories and user facts become memory entries, skills land in skills/<source>-imports/, scheduled routines become paused cron jobs (--activate-routines to start them) and event routines a notes file; credential-looking export keys refuse the file, and secret MCP env vars and headers are stripped and listed. OpenBot's database is opened read-only (or read from a scratch copy that is deleted after the read).Officialtools676NousResearchblenderOfficial Blender Lab MCP server over stdio, pinned to upstream v1.0.3, with a Blender workflow skill. Needs Git and uv; Blender 5.1+ is not needed at install. The skill opens Blender itself when a task needs it and, after you agree, installs Blender and Blender Lab's MCP add-on. First startup downloads Python dependencies; prepare the uv environment before connecting. Disclosure — tools execute arbitrary Python in Blender with your privileges; the skill starts Blender with online access for that session only (your saved preference is unchanged), and the add-on's local server on port 9876 has no password, so any program on this computer can use it while Blender is open; only after you agree does the skill download Blender from download.blender.org (about 400 MB, about 1.5 GB unpacked), check it against blender.org's sha256 list and install it in your own folder without administrator rights (Linux ~/.local/opt, macOS ~/Applications, Windows %LOCALAPPDATA%\Programs\Blender Foundation; never over an existing Blender), and download the v1.0.3 add-on, check its hash and install or enable it; first start downloads the pinned Blender Lab MCP server and its Python dependencies with uv. Server discovery does not prove scene readiness.Officialtools676

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section