All plugins

unbl0ck

One queue of everything blocked on you: live agent prompts, pairing requests, blocked Kanban cards and chats on any platform that ask you something. Answer Kanban cards in place; optional one-line summaries and Ask send item text to your configured model through ctx.llm (both can be turned off). Disclosure — reads every local profile's chat history (state.db, read-only), profile titles and pending pairing requests (through Hermes's PairingStore, never the codes) to build one queue, records live clarify/approval prompt text in its plugin data, and can comment on and unblock Kanban cards when you answer one; by default sends each new queue item's text (other profiles' chats included) to the configured model for a one-line summary, and card data on Ask (turn off with `bluf_enabled: false` / `ask_enabled: false`); on messaging platforms `/unbl0ck` replies with a count only; uses Hermes's internal Kanban modules, so a Hermes update can break it; no network of its own, no shell, no credentials.

KyaniteLabsToolsv0.4.5Updated 1 day ago

About

One queue of everything blocked on you: live agent prompts, pairing requests, blocked Kanban cards and chats on any platform that ask you something. Answer Kanban cards in place; optional one-line summaries and Ask send item text to your configured model through ctx.llm (both can be turned off). Disclosure — reads every local profile's chat history (state.db, read-only), profile titles and pending pairing requests (through Hermes's PairingStore, never the codes) to build one queue, records live clarify/approval prompt text in its plugin data, and can comment on and unblock Kanban cards when you answer one; by default sends each new queue item's text (other profiles' chats included) to the configured model for a one-line summary, and card data on Ask (turn off with `bluf_enabled: false` / `ask_enabled: false`); on messaging platforms `/unbl0ck` replies with a count only; uses Hermes's internal Kanban modules, so a Hermes update can break it; no network of its own, no shell, no credentials.

UNBL0CK

Agents get stuck waiting on you, and those questions end up scattered across Kanban boards and chats. UNBL0CK gathers them into one queue: every blocked Kanban card waiting on your answer, every chat on any platform (Desktop, CLI, TUI, Telegram, Discord and the rest) whose last turn is the bot asking you something, every agent paused right now on a clarify question, a command approval or an admin password prompt, and every new person waiting for you to approve their pairing request.

To answer a card, type into the queue. UNBL0CK posts your answer as a comment through native Kanban and, if you choose, unblocks the card. A chat opens straight from the queue. Each card leads with a one-line summary of what you must decide, and the original text is one click away. Nothing is decided for you and silence never counts as a yes. UNBL0CK adds no ranking of its own: cards keep their board priority, newest first within it.

What you get

  • Desktop: an /unblock page showing the live queue, plus a "Needs you" count. Each card leads with a plain-English bottom line (BLUF) written by your configured model, with the raw block reason under + Full text. Each Kanban card has Answer + unblock, Answer, keep blocked, Open board and Not for me, plus a lazy Context panel with the description, comments, parent/child cards, workspace and branch, recent events, last run outcome and attachments. Ask about this card opens a small read-only side chat that explains the card and recommends an option; Use as answer copies its last reply into the answer box, and Discuss in chat opens a normal Hermes chat with the card pre-seeded. The model never acts: you still click Answer. Not for me can be undone for 12 seconds; after that, hidden items come back when the source changes: a new block, or a new chat turn. If your answer reads like "keep it blocked", the card warns you before Answer + unblock. Esc closes Ask, then Context, then Full text.
  • Slash command: /unbl0ck lists what is waiting on you in the CLI, TUI and Desktop. On a messaging platform (Telegram, Discord and the rest) anyone the bot admits can type it, so there it only says how many things are waiting, never what they are.
  • CLI: hermes unbl0ck (and /unbl0ck on a local surface) prints the queue, naming who each gateway chat is with and giving the approve command for each pairing request. Add --json for the raw queue, or --pack to write a small card-format JSON pack for other displays to read.

Install

hermes plugins install unbl0ck

Then set your name, so UNBL0CK knows which asks are aimed at you. Use the plugin's settings in Desktop (Settings → Plugins → UNBL0CK), or:

hermes config set plugins.entries.unbl0ck.settings.principal_name "Ada, Ada Lovelace"

principal_name is comma-separated: list the names your agents use for you. "CEO", "principal" and "human" always count. Your answers are posted under the first name, unless you set comment_author. If no name is set, only those generic words are detected.

Summaries are on by default. Turn them off with bluf_enabled: false; cards then show the raw block reason.

Ask about this card is on by default. Turn it off with ask_enabled: false in the same settings block (or hermes config set plugins.entries.unbl0ck.settings.ask_enabled false). The Context panel and Discuss in chat keep working when Ask is off.

Requires Hermes >= 0.23.0.

How detection works

  • Kanban: a card counts when its latest block is clearly waiting on you. Either the block reason names a decision for you ("Awaiting Ada's approval", "human gate: credentials"), or it is a needs_input block that names you. Blocks that only report an order ("Ada said stop") are skipped. So are cards you have already answered since the block.
  • Chats: any chat a person uses, on any platform, from the last 14 days counts when the bot's final visible turn asks you something and you have not replied after it. Agent-to-agent sessions (Kanban workers, cron, subagents, one-shot runs) are skipped. A long chat that Hermes compressed into a continuation is checked only at its newest link. In a group, channel or thread the ask must name you, because there the bot may be talking to someone else. On Telegram, Discord and other gateway platforms other people can DM the bot too, so the card says who the chat is with; set owner_user_ids to your own platform user ids (comma-separated) and chats with anyone else are left out. Desktop, CLI and TUI chats open in place; for Telegram, Discord and other platforms the card tells you where to reply.
  • Pairing requests: when someone new messages a bot and gets a pairing code, they wait under ACCESS.REQUESTS until you approve them or the request expires after an hour. The card shows the exact command, hermes pairing approve <platform> <request-id> (the admin-side id the dashboard's Pairing page also uses), or you can approve on that page. UNBL0CK asks the gateway's own pairing store (PairingStore.list_pending()), which never returns the code they were sent, and never shows the person's platform user id. Like hermes pairing list, that call clears expired requests as it reads.
  • Live prompts: when any agent pauses on a clarify question, a dangerous-command approval or an admin password prompt, Hermes fires its stock on_human_input_request hook and UNBL0CK lists it under LIVE.PROMPTS until on_human_input_resolved fires. Answer it where it was asked; UNBL0CK shows the prompt (already redacted by Hermes) and the platform it is waiting in. A prompt whose process has exited, or that has been open for over a day, is dropped on the next poll, so a crash or a missed hook never leaves a ghost behind. Hooks load when the gateway starts, so a newly installed UNBL0CK picks up live prompts after the next gateway restart.

The queue is ordered the way it is urgent: live prompts first (a run is paused), then pairing requests (they expire), then Kanban cards by board priority, then chats. The slash command, CLI and Pocket pack use the same order.

What it cannot see: a card that is waiting on you without saying so in its block reason, and a chat question so indirect that it does not read as a question for you.

Disclosure

The things you would want to know before installing:

  • No telemetry. UNBL0CK sends no usage data anywhere. The Desktop page talks only to this plugin's own backend, through the plugin SDK.
  • Summaries send item text to your model provider, once per change. With bluf_enabled on (the default), each new or changed Kanban card's or chat's title and text (live prompts and pairing requests are never sent), plus a Kanban card's last six comments (each cut to 600 characters, so the summary skips what is already settled), go once to the model provider configured in Hermes, through Hermes's own plugin LLM API (logged in its plugin audit log), in a background thread. The result is cached in bluf.json; nothing is resent until the item changes. Set bluf_enabled: false to send nothing automatically.
  • Ask sends card content to your model provider when you ask. Sending a question in Ask about this card sends that card's context and your question to the model provider configured in Hermes, through Hermes's own plugin LLM API, and logs the call in Hermes's plugin audit log. Discuss in chat only types a draft into a normal Hermes chat; the chat you then start makes its own model calls. Turn Ask off with ask_enabled: false.
  • No credentials. It neither reads nor stores secrets.
  • Reads outside its own data:
    • Kanban boards, through Hermes's Kanban modules (hermes_cli.kanban_db).
    • The state.db chat history of the root Hermes home and of every profile under it, opened read-only, so it can find chats that end with a question for you.
    • Pending pairing requests for the Hermes home and each profile, through the gateway's PairingStore.list_pending() (never the codes): only the display name, platform, request age and the admin-side request id (for the approve command) are used.
    • Hermes's on_human_input_request / on_human_input_resolved hook payloads (kind, redacted prompt, session id, platform).
  • Writes:
    • Only when you click Answer: one comment on the card, under your configured author name, and an unblock if you chose Answer + unblock. Nothing else is ever written to Kanban. The Context panel and Ask never write to the card.
    • Its own files under <HERMES_HOME>/plugin-data/unbl0ck/: hidden.json ("Not for me" items, capped at 1000), waits/<id>.json (one small owner-only file per live prompt, deleted when it is answered), bluf.json (cached summaries, capped at 300) and pocket-pack.json (only when you ask for the pack).
    • In Desktop, two display toggles (effects and sound) in localStorage.
  • No shell commands, no subprocesses and no self-updating. Summaries and Ask replies run in small in-process thread pools inside the Hermes backend.
  • Sound: the Desktop page plays short synthesized UI sounds through Web Audio. Turn them off with SFX.
  • Hermes internals: Kanban access uses Hermes's internal hermes_cli.kanban_db* modules, because no public plugin API for Kanban comments and unblocks exists yet. To keep each poll fast, the queue also reads the newest block event and your latest comment per card with one indexed SQL query each, falling back to the public list_events/list_comments if the schema differs. A Hermes release that changes those modules can break the queue until UNBL0CK is updated. hermes plugins validate reports this as a warning. Settings are read with hermes_cli.config.load_config_readonly() and the Hermes home with hermes_constants.get_hermes_home().
  • Optional environment fallbacks: UNBL0CK_PRINCIPAL, UNBL0CK_AUTHOR and UNBL0CK_OWNER_IDS stand in for principal_name, comment_author and owner_user_ids when those settings are empty. None is required and none holds a secret.

Develop

python -m unittest discover -s tests -v
hermes plugins validate .

The Desktop UI source is desktop/src/plugin.src.js. Run python desktop/build.py to regenerate desktop/plugin.js with the fonts inlined. The design tokens and visual canon are in design/.

Credits

The ASCII mascot is converted from Hermes Agent's Nous girl art (MIT, © Nous Research), and the fonts are under the SIL Open Font License. See NOTICE. UNBL0CK is an independent project by KyaniteLabs and is not endorsed by Nous Research.

License

MIT. See LICENSE.

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

More by KyaniteLabs

6 plugins by KyaniteLabs in the catalog.

KyaniteLabskinocutGuardrailed local video editing: Kinocut's MCP server plus two workflow skills (editing and short-form repurposing). Trim, caption, reformat and check quality with local FFmpeg. Portable Agent Plugins v1 configuration and skills, no plugin code. Requires uv and FFmpeg on PATH; launches uvx kinocut==1.16.4 over stdio. First launch downloads Kinocut and dependencies from PyPI. URL inputs download the requested media; font and model-weight features fetch assets from GitHub. Explicit Revideo dependency installation runs npm ci and may download renderer dependencies. Local FFmpeg editing and color grading need no account or API key. Kinocut's optional vision calls default off and require explicit configuration: legacy product descriptions use an Anthropic-compatible endpoint, while sampled-frame QC uses Anthropic. The README explains how to use the host's image model instead, including local models. Revideo and Hyperframes telemetry default off. Unverified Hyperframes browser previews and Docker renders require explicit telemetry consent. Hyperframes capture/snapshots disable implicit model analysis. These controls are not a network sandbox; see the plugin README for configuration and remaining network use. Disclosure — launches `uvx kinocut==1.16.4` over stdio, which downloads Kinocut and its dependencies from PyPI on first launch; edits and writes local video files with FFmpeg; URL inputs download the requested media, font and model-weight features fetch assets from GitHub, and an explicit Revideo install runs `npm ci`; optional vision features (off by default) send selected images or sampled frames to an Anthropic-compatible endpoint or Anthropic; Revideo and Hyperframes telemetry stay off unless the operator enables them.Communitytools264KyaniteLabsepochCalibrated time estimates on the Hermes Kanban board: when a worker claims a task, Epoch posts a Monte Carlo P50/P90 (plus P80/P95) estimate as a task comment, and when the run completes it records that run's wall-clock hours back to Epoch's ledger (auto_wallclock provenance, sanity-gated) so later estimates calibrate. Dispatcher and worker profiles can differ; the estimate-to-run binding lives next to the ledger, Kanban comments are display only. Also adds an epoch_estimate tool and /epoch. Disclosure — runs `npx -y @kyanitelabs/epoch@0.7.0` as a child process (downloads Epoch and its caret-ranged npm dependencies on first run, which the catalog pin does not cover; needs Node >=22), passing the task title and its three-point hint to the local CLI; the child env is scrubbed (allow-listed PATH/HOME/locale/Node/npm/proxy vars only, the parent environment is never passed through); estimates, actuals and run bindings live under <HERMES_HOME>/plugin-data/epoch/ and are shared by every profile; Epoch telemetry is forced off for plugin runs; no network besides the npm download, no API key; hook work runs on short-lived background threads and unfinished jobs resume when the plugin next loads; /epoch passes other Epoch subcommands through (it refuses serve, self-improve and telemetry/data mutations, and refuses ledger writes on gateway platforms unless opted in).Communitytools8KyaniteLabsag4teGit archaeology in Hermes Desktop: dig a local repository's history with DevArch and read it as strata, with commits per day stacked by kind of work, eras, quiet gaps, signals and turning points, weekly rhythm, lines added and removed, practice health, change size, hotspots, releases, and authors merged across spellings and split into people, agents and bots. Adds a Desktop page, /ag4te (list, show, status, dig, stop, resume) and a read-only ag4te_dig tool for agents. Disclosure — runs DevArch as a child process via `uvx --from git+https://github.com/KyaniteLabs/ag4te@<pinned sha> devarch` (uv downloads that pinned DevArch commit and its Python dependencies on first run, which the catalog pin does not cover; needs uv on the gateway host); reads `git log` of the one repository you choose, which must sit under the configured repo_roots (default ~/workspaces); stores digs under <HERMES_HOME>/plugin-data/ag4te; no LLM calls, no API key, no network besides the uv download; one dig at a time, each step time-limited (timeout_seconds); /ag4te dig and resume are off on chat platforms unless allow_dig_on_gateway is set.Communitytools3KyaniteLabsinnerscapeGentle check-ins, journaling and an Unstuck Coach with your own Innerscape server: save a mood check-in in your words, save a journal entry or park an inbox item only after you say yes to the exact text, and look back on today. When you're frozen or overloaded, the bundled unstuck skill names what's in the way, gives one next move and holds the rest. The skills never score, label or diagnose a mood. Adds four tools, /innerscape, two skills, a Desktop page and a dashboard tab. Disclosure — calls your Innerscape REST API (default http://127.0.0.1:3001) with INNERSCAPE_TOKEN, read through Hermes secret scope, which can read and write your whole account; plain http only to this machine (https to any server you configure), no proxies or redirects; tool results go to your model provider and stay in session history, and mood and journal text is sensitive, so your provider sees it like any other chat; consent is model-mediated: save tools refuse unless the assistant has asked you and set user_confirmed, and Hermes has no separate approval step (see README); the Desktop page reads today and saves a check-in or journal entry with that same token through the plugin's dashboard routes (/api/plugins/innerscape/), so anyone signed in to your Hermes dashboard can read and write your Innerscape account; reads and saves are off on chat platforms by default and saves are off in scheduled runs; no telemetry, no background jobs.Communitytools

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section