Source: dannyshmueli-obsidian-hermes-console-2026-05-22.md — Obsidian community-plugin page + repo README, fetched 2026-05-22. Obsidian plugin page: community.obsidian.md/plugins/hermes-console. GitHub: github.com/dannyshmueli/obsidian-hermes-console. Version: 1.1.14. Downloads: 162 (6 days old at fetch). License: MIT. Author: Danny Shmueli (dannyshmueli.com, X @dannyshmueli).
Obsidian community plugin embedding Hermes Agent as a tabbed PTY terminal inside the Obsidian app. Tagline: “Run Hermes Agent in a tabbed terminal with selected-note context and background status alerts.” Highlight a paragraph in any Obsidian note, press Enter in Hermes Console, ask Hermes to rewrite / sharpen / research / challenge that exact text — the selection flows through a local JSON bridge file into Hermes’s context. Built on a fork of Lean Terminal (xterm.js + node-pty for real interactive shell support, not just command execution). Three-component architecture — the Obsidian plugin alone is not enough; the companion Hermes plugin obsidian-context-bridge (installed via hermes plugins install dannyshmueli/obsidian-hermes-console --enable) does the context-injection half. Desktop only. Requires Obsidian 1.7.2+. Two-app install ergonomics are the load-bearing UX choice — one Obsidian plugin + one Hermes plugin + one JSON bridge file, on purpose.
Three-component architecture
┌────────────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ Obsidian plugin │ │ .obsidian/hermes/ │ │ Hermes plugin │
│ "Hermes Console" │───▶│ context.json │───▶│ obsidian-context-│
│ (terminal UI + │ │ (selected text + │ │ bridge │
│ tab management) │ │ cursor context) │ │ (loads file into │
│ │ │ │ │ Hermes context) │
└────────────────────┘ └─────────────────────┘ └──────────────────┘- Obsidian plugin: Hermes Console — terminal UI, tab management, settings, ribbon icon, command palette. Installed via Obsidian Community Plugins UI.
- Bridge file:
.obsidian/hermes/context.json— local JSON file the Obsidian plugin writes when text is selected; the Hermes plugin reads when the agent’sobsidian_context()function is called. - Hermes plugin:
obsidian-context-bridge— installed viahermes plugins install dannyshmueli/obsidian-hermes-console --enable. Exposesobsidian_context()inside Hermes that reads the bridge file pointed at byOBSIDIAN_CONTEXT_BRIDGE_PATH.
Quoted load-bearing constraint from the README: “This is NOT two Obsidian plugins. It is one Obsidian plugin plus one Hermes plugin connected by one JSON bridge file.”
End-to-end selected-text/cursor behavior requires all three pieces. Busy/idle tab status uses the same Hermes plugin plus a per-tab status file under .obsidian/hermes/runtime/.
Install
# 1. Hermes-side bridge plugin (one-time):
hermes plugins install dannyshmueli/obsidian-hermes-console --enable
# 2. Obsidian-side plugin (via Community Plugins UI):
# Settings > Community Plugins > Browse > "Hermes Console" > Install + Enable
# Settings > Hermes Console > Download binaries (fetches node-pty native)
# 3. Open from ribbon icon or command palette.
# 4. Highlight text in any note, type a prompt in Hermes Console, press Enter.What Hermes Console does NOT install:
- The Hermes CLI itself (install separately if you want default
hermesstartup to work) - The
obsidian-context-bridgeHermes plugin (must run thehermes plugins installcommand above if you want selected-note context to reach Hermes)
The README is explicit about this division — the Community Plugins UI installs only the Obsidian half; the CLI command installs the Hermes half.
New to Hermes? Run hermes setup, then hermes, then the install command — full bootstrap covered in the README’s “If you are new to Hermes” section.
Feature inventory
Terminal core:
- xterm.js for terminal rendering
- node-pty for native PTY (real interactive shell — PowerShell, bash, etc. — not just command execution)
$SHELLconfigurable; auto-starthermeson new tabs when on PATH
Tab management:
- Multiple concurrent Hermes agent tabs
- Icon rename, color-coding, pinning, drag-to-reorder
- Busy/idle state indicators per tab
- Unread status for background operations + optional notifications on background-turn completion
Vault integration:
[[wiki-link]]autocomplete in the terminal input- Vault-aware paths
Search & selection:
- In-terminal search bar with case sensitivity toggle
Appearance & configuration:
- 12 built-in color themes
- Customizable shell, font, cursor behavior, scrollback
- Panel location (sidebar or current folder)
- Ribbon and tab icon customization using Lucide icon names
Sessions & persistence:
- Tabs, colors, directories, and scrollback restored on restart
Hermes context bridge:
OBSIDIAN_CONTEXT_BRIDGE_PATHenv var points the Hermes plugin at the bridge fileobsidian_context()function exposed inside Hermes- Enabled by default for new installs
Key Takeaways
- The three-component architecture is intentional, not a bug. The README’s framing: “They are separate on purpose.” Lets the Obsidian plugin ship through Community Plugins (no friction for Obsidian users), the Hermes plugin ship through Hermes’s plugin registry (no friction for Hermes users), and the bridge file (
.obsidian/hermes/context.json) be the local-only contract between them. No network call, no service, no cloud. - Real PTY, not a command runner. xterm.js + node-pty give you a fully interactive shell — supports curses-style UIs, password prompts, tab completion, etc. Critical for the Hermes UX, which is itself an interactive REPL-style agent (not a one-shot
claude -pstyle). - Windows ConPTY backend with a patched
windowsConoutConnection.js. Standard node-pty uses a Worker thread for the Windows console-output connection, but Obsidian’s Electron renderer doesn’t support Worker thread construction. The plugin ships a patched version that replaces the Worker with inline socket piping. This is the kind of platform-specific engineering detail that determines whether the plugin actually works on Windows ARM64 (Surface Pro X, Windows Dev Kit) — flagged explicitly in the Troubleshooting section. - Built on Lean Terminal fork — credit preserved. The plugin is a fork of polyipseity/obsidian-lean-terminal (still available in Community Plugins). Upstream contributors are explicitly credited in the README. Fork divergence: Hermes Console adds the context bridge, busy/idle status bridge, multi-tab Hermes UX, 12 themes, and a Hermes-specific roadmap.
obsidian-context-bridgeis the Hermes-plugin name even though you install it via theobsidian-hermes-consolerepo URL. The README explicitly flags this — “The Hermes-side plugin appears asobsidian-context-bridge; that is expected and no extra Obsidian plugin is needed.” Operator implication: don’t search for “obsidian-hermes-console” in Hermes’s plugin list after installing — search for “obsidian-context-bridge.”- Companion to but not a replacement for Hermes Skill Bundles. Skill Bundles solve the which skills run problem at the Hermes-process level. Hermes Console solves the where the Hermes process runs + how Obsidian feeds it context problem at the UI level. Both ship slash commands and config files; they coexist cleanly.
- Companion to but not a replacement for Hermes MemoryKit. MemoryKit solves the retrieval-routing problem (LCM + native + QMD + entity graph + RRF). Hermes Console doesn’t touch retrieval — it’s a terminal-in-Obsidian surface. Operator workflow: install all three if you’re a heavy Obsidian-Hermes user (Console for UI, MemoryKit for memory, Skill Bundles for behavior).
- Adjacent to but distinct from “Claudian” and “Agent Client.” Obsidian’s plugin ecosystem now includes several “agent in your vault” plugins — Claudian embeds Claude Code / Codex as collaborators, Agent Client speaks the Agent Client Protocol to multiple agents. Hermes Console is Hermes-only and uses a JSON bridge file rather than ACP. Each has its own surface tradeoff; Hermes Console is the right pick if you’re already a Hermes operator and want vault-native context handoff.
- Adoption is early but real. 162 downloads at 6 days old — modest, but the plugin shipped through the official Community Plugins channel (which requires Obsidian’s review), MIT-licensed, with active development (last update 4 days before fetch). Compare against the 380-star hermes-skins (also community, also Hermes-specific) — Console’s download count is the more direct community-signal metric since it’s distributed via Obsidian’s registry.
- The
obsidian://hermes-consoleURI handler is documented indocs/uri-handler.md. Implication: external apps (or other Obsidian plugins) can deep-link into Hermes Console with the canonical URI scheme. Useful for automation, but not deeply explored on the community-plugin page.
Where this fits
| Topic surface | Description | Relationship |
|---|---|---|
| Hermes Agent topic landing | Public landing | Hermes Console is a new UI-side surface added here |
| Hermes Skill Bundles | Slash-command-driven skill composition | Complementary — bundles run inside Hermes; Console hosts the Hermes process |
| Hermes MemoryKit (duclamvan) | 8-layer memory routing for Hermes | Complementary — MemoryKit handles retrieval; Console handles UI |
| Hermes Skins (joeynyc) | Visual themes for Hermes CLI | Adjacent — Hermes Console exposes 12 of its own themes for the terminal UI; the Skin bundle themes apply to the Hermes agent banner/spinner inside the terminal Console hosts |
| Hermes Codex App-Server Runtime | Runtime delegation | Unrelated — Console hosts whichever runtime Hermes is configured for |
| Hermes Agent 1-Hour Course | Operator walkthrough | Sister surface — Nate’s course covers Hermes on a VPS; Console is the Hermes-in-your-Obsidian-vault surface for the same agent |
| inbox-refresh — Multi-Source Wiki Inbox Sync Skill | Multi-source wiki ingest skill | Sister UX pattern — both are “vault-native skills that route external context into the agent” — inbox-refresh for wiki ingest, Hermes Console for selected-text-to-Hermes |
Try It
- Smallest install (Obsidian only — no context bridge yet): install Hermes Console from Community Plugins, enable, download binaries. You get a tabbed PTY terminal inside Obsidian for free. Even without the Hermes plugin, the terminal is useful — run
git,npm, whatever you’d run in a vault-side shell. - Full install (both halves): also run
hermes plugins install dannyshmueli/obsidian-hermes-console --enablefrom your shell. Restart Hermes (/reset). Now selected-note context flows into Hermes when you press Enter in the console. - Try the canonical workflow: open any note, highlight a paragraph, switch to Hermes Console, type “rewrite this in a more direct tone”, press Enter. The selection is attached as context; Hermes works on the exact paragraph you highlighted.
- Use multiple Hermes profiles in parallel: open multiple Console tabs, color-code each (research / writing / cron-debug), pin the ones you use daily. Each tab runs an independent Hermes session.
- Background long-running Hermes work: start a Hermes turn in one tab, switch to another note. The tab’s busy indicator + (optional) notification tells you when the turn completes — no need to keep flipping back to check.
- Pair with Skill Bundles: define a
/rewritebundle in~/.hermes/skill-bundles/rewrite.yaml. Highlight text, run/rewritein Hermes Console. The bundle composes your “rewriter” skills against the bridged-in selection. - For ARM64 Windows users: the Troubleshooting section explicitly documents the
node_modulesplacement requirement under.obsidian/plugins/hermes-console/node_modules/if binary download fails. Read it before reporting bugs.
Related
- Hermes Agent — topic landing — public Hermes topic surface
- Hermes Desktop (macOS) — sister UI surface; native Mac SSH client (with Herm-TUI as the cross-platform terminal sibling) — three front-ends over the same host
- Hermes Skill Bundles — complementary behavior-side primitive (run inside the Console-hosted Hermes process)
- Hermes MemoryKit (duclamvan) — complementary retrieval-side toolkit (also runs inside the Console-hosted Hermes process)
- Hermes Skins (joeynyc) — visual themes for Hermes itself (apply inside the Console’s terminal pane)
- Hermes Codex App-Server Runtime — runtime delegation (orthogonal — Console hosts whichever runtime is configured)
- Hermes Agent 1-Hour Course (Nate Herk) — operator setup walkthrough (VPS-shaped; Console is the in-Obsidian alternative)
- inbox-refresh skill — sister UX pattern (vault-native skill routing external context into an agent)
- Karpathy Pattern — Hermes Console makes the LLM-wiki pattern work end-to-end inside Obsidian (highlight → ask Hermes → write back)
Open Questions
- Why two repo URLs serving similar content? The
hermes plugins install dannyshmueli/obsidian-hermes-console --enablecommand installs the Hermes plugin namedobsidian-context-bridge— but the GitHub repo atdannyshmueli/obsidian-hermes-consoleis the Obsidian plugin. The Hermes-side plugin appears to live at a different URL (perhapsdannyshmueli/obsidian-context-bridgeor as a sub-package). Worth tracing on first refresh — clarifies the install story. - Is the bridge file format documented?
.obsidian/hermes/context.jsonis the contract between the Obsidian plugin and the Hermes plugin. Schema details would help third-party tooling integrate (e.g., another Obsidian plugin reading or writing to the same bridge). - Per-tab Hermes profile selection? Multi-profile Hermes operators (
CODEX_HOME-pattern isolation from the Codex runtime article) — can Hermes Console launch tabs against different Hermes profiles? Not obviously documented; would be high value if supported. - Security review summary content. The repo lists
docs/security.mdas a security-review summary. Not pulled in this ingest — worth a Tier-1 refresh once accessible (pairs with Hermes Security Model). - Mobile support. Currently desktop-only. Obsidian Mobile + Hermes-on-VPS could in principle work, but PTY-in-mobile is structurally hard. Worth tracking if Danny ever ships a mobile-compatible variant.
- Adoption trajectory. 162 downloads at 6 days. Refresh in 30 days to see whether this is sustained interest or peak-of-launch-attention.