On this page
history
Changelog
All notable changes to the Hermes Brain vault template.
All notable changes to the Hermes Brain vault template. Versions correspond to GitHub Releases.
[1.21.0] — 2026-09-18
Added
- Future skill forecast widget —
Scripts/skill_forecast.pyanalyzes vault activity trends (fromTag-Trends.log) and installed skills (fromInstalled-Skills-Index.md) to suggest which skills to learn/install next for maximum relevance. Maps session tags to potential skill categories via a configurable mapping, identifies installed skills that already cover trending topics, and outputs actionable suggestions with reasoning. Runs as a standalone script or can be integrated into cron workflows. - Cross-platform script table updated — added row for
skill_forecast.py.
Verified
skill_forecast.pysyntax checks clean (python -m py_compile).- Correctly parses 70 installed skills from
Installed-Skills-Index.md. - Correctly parses 15 unique trending tags from
Tag-Trends.log(top: hermes, linux, llm, automation, obsidian, video). - Tag-to-skill mapping covers all major trending categories.
- Output logged to
Skills-Notes/Skill-Forecast.logwith timestamps.
[1.20.0] — 2026-09-17
Added
- Automated session tagging & topic tracking —
Scripts/session_tagger.pyextracts topics/themes from archived session markdown using lightweight keyword pattern matching (no external API, no heavy ML deps). Runs automatically as part ofhourly_archive.pyafter sessions are moved intoYYYY/MM/DD/directories. Maintains:- Per-session
tagsarray inDaily/manifest.jsonl - Global tag cloud with counts in
Skills-Notes/Tag-Cloud.log - Daily tag trends in
Skills-Notes/Tag-Trends.log
- Per-session
- Dashboard “Tag cloud & trends” widget — renders the tag cloud as styled pills (size/opacity scaled by frequency) with hover effects, plus a 14-day trend history from
Tag-Trends.log. Degrades gracefully when source files don’t exist yet. - Cross-platform script table updated — added row for
session_tagger.py.
Verified
session_tagger.pysyntax checks clean (python -m py_compile).- Pattern extraction tested against seeded sample sessions — correctly identifies topics like
linux,hermes,python,database,automation,devops,networking,obsidian,video. - Tag cloud and trends logs written and formatted correctly.
- All 13
dataviewjsblocks inDashboard.mdpassnode --check; markdown fences balanced. hourly_archive.pystill byte-compiles cleanly after integration.Scripts/vault_audit.pyreports 0 broken links.
[1.19.0] — 2026-09-17
Added
- Semantic search layer —
Scripts/semantic_search.pybuilds a local vector search index over the vault’s session and knowledge files usingsentence-transformers/all-MiniLM-L6-v2(22 MB, CPU-only, no external API). Supports full rebuild (--build), incremental update (--update), CLI search (--search), and an HTTP server (--serve) for real-time DataviewJS queries. - Dashboard “Semantic search” widget — natural-language search box on
Dashboard.mdthat queries the local endpoint (or falls back gracefully with clear instructions). Click results to open matching notes. - Cross-platform script table updated — added rows for
semantic_search.py,archive_now.py,enrich_session.py.
Verified
semantic_search.pysyntax checks clean (python -m py_compile).- Index builds incrementally (only re-embeds new/changed files via SHA256 hash tracking).
- Dashboard widget renders without errors; debounced input with loading state and clickable result links.
- All existing Dashboard DataviewJS blocks still pass
node --check; markdown fences balanced.
[1.18.0] — 2026-09-17
Added
- Manifest concurrency lock + instant archive trigger —
Scripts/hourly_archive.py(and.ps1) now acquire an exclusive lock file (.hourly_archive.lock) to prevent concurrent execution with itself or the new manual trigger. AddedScripts/archive_now.py(and.ps1) for on-demand, instant exports (default: last 5 minutes) that share the same lock so they never race the hourly cron. Both scripts export redacted markdown + JSONL, updatemanifest.jsonl, and append toToken-Usage.log. - Optional session enrichment —
Scripts/enrich_session.py(and.ps1) adds a simplesummary:frontmatter (first non-empty line, capped at 200 chars) to session markdown files that lack one, making sessions more glanceable without opening each file. - Documentation updates —
Daily/README.mdexplains the two archiving paths (hourly cron vs instant manual) and the enrichment step.INSTALL_PROMPT.mdNotes section now mentions the optional instant archive and enrichment scripts.
Verified
- All scripts (
hourly_archive.py,archive_now.py,enrich_session.py) and their PowerShell twins parse cleanly (python -m py_compile, PowerShell parser). - Throwaway-vault test: ran
archive_now.py --since 5mon a seeded fixture, verified new sessions landed in correctDaily/YYYY/MM/DD/folder,manifest.jsonlupdated, token usage logged, and no duplicate entries on re‑run. - Enrichment test: ran
enrich_session.pyon the same fixture, confirmed summary frontmatter added only to files missing it, and existing frontmatter left untouched. - Lock‑file test: launched two instances of
hourly_archive.pyin parallel — second exited with “Another instance … is already running — exiting.” Same forarchive_now.pyvshourly_archive.py. Scripts/vault_audit.pyreports 0 broken links.- Markdown fences in
Dashboard.mdandREADME.mdremain balanced.
[1.17.0] — 2026-09-16
Added
- 4 new Dashboard.md sections — the last 4 roadmap items, all shipped together:
- “What’s changed since your last visit” — a delta banner comparing this note’s own frontmatter (written on every open) against current session/candidate counts, so you see “3 new sessions, 2 new candidates since you last opened this” instead of nothing.
- “Storage & file counts” — live file count and total size via
app.vault.getFiles(), plus a breakdown of the top 5 file types. - “Recently promoted” — parses
Memory-Review/Consolidation-Log.md(written byconsolidate_memory.py) and surfaces the last 5 decided candidates, so the review pipeline feels less like a black box. - “Top skills used” — parses
Skills-Notes/Skill-to-Chat-Links.md(auto-generated bygenerate_skill_links.py) and ranks the top 5 skills by session count, working against both its tool-call mode and prose-mode output formats.
- All 4 sections degrade gracefully when their source file doesn’t exist yet (first-run/no-data messages, same pattern as every other Dashboard section).
Verified: all 11 dataviewjs blocks in Dashboard.md pass node --check; ran a full mock-harness pass with realistic fake data against every block (including a dedicated second-visit test for the delta banner, confirming it correctly detects 3 new sessions and 2 new candidates against saved frontmatter); Scripts/vault_audit.py — 0 broken links; markdown fences balanced (28 fence lines / 14 code blocks).
[1.16.0] — 2026-09-16
Fixed
- Stale hardcoded skill count (roadmap item #4, last of the 4 known bugs) —
Skills-Notes/README.mdsaid “all 154 installed Hermes skills,” a number copied from one real vault’s install that goes wrong the moment any user installs or removes a skill. Reworded to “your installed Hermes skills” with no baked-in count, and pointed athermes skills listfor regenerating the index. Verified viaScripts/vault_audit.py: 0 broken links.
[1.15.0] — 2026-09-16
Fixed
- Supermemory presented as required, not optional (roadmap item #3) —
Scripts/consolidate_memory.pyalready handled missing Supermemory export files gracefully (itsread()helper returns""for a nonexistent path, so it never errored), but gave no signal to a non-Supermemory user that the pipeline was silently producing zero candidates every run. Added an explicit stdout message when neitherSupermemory-All-Memory-Entries.mdnorSupermemory-Explicit-Memories.mdexists, pointing at the manual/Daily-sourced alternative documented inMemory-Review/TEMPLATE.md. Reworded the script’s docstring to describe Supermemory as one optional fact source, not the only one, and noted that automating non-Supermemory sources is a future roadmap item. All 6 existingScripts/ci/test_consolidate_memory.pytests still pass; verified a clean 0-candidate run against a fresh vault with no Supermemory files (exit code 0, new message printed, validPromotion-Candidates.mdwritten).
[1.14.0] — 2026-09-16
Fixed
- Hardcoded “4-agent team” assumption (roadmap item #2) —
Welcome.md,Projects/README.md,Research/README.md,Skills-Notes/README.md, andSkills-Notes/Team-Profiles-Index.mdall stated “the Hermes agent team (Codex, Ledger, Vox, Argus)” as a fact, contradictingTeam-Profiles-Index.md’s own note that single-agent setups should delete it down to one row. Reworded all 5 files to say “your agent(s)” and relabeled the 4-name table inTeam-Profiles-Index.mdas an example/starter template rather than an assumed roster.Memory-Review/TEMPLATE.mdsimilarly reworded to make agent attribution and Supermemory sourcing both explicitly optional. Verified viaScripts/vault_audit.py: 0 broken links.
[1.13.0] — 2026-09-16
Fixed
- Missing “master hub note” (roadmap item #1) —
Projects/Hermes-Agent-Vault-Setup.mdwas referenced by 6 files (Welcome.md,Projects/README.md,Research/README.md,Skills-Notes/README.md,SETUP.md,Memory-Review/TEMPLATE.md) as the vault’s master hub note, but never actually existed — every new user hit 6 dead links on first open. Wrote the actual file: covers folder structure, the memory pipeline, and status/decisions scaffolding, following the same frontmatter format asTemplates/Project.md. Kept deliberately agent-count-agnostic (doesn’t hardcode a “4-agent team” assumption) so it doesn’t reintroduce roadmap item #2. Linked fromMOC.md. Verified viaScripts/vault_audit.py: 0 broken links (down from all 6 references broken).
[1.12.0] — 2026-09-16
Added
User-Profile.md— creative pass. Added a TL;DR callout at the top, “talk to me like this / not like that” dialogue examples, ASCII trait sliders (directness/formality/risk tolerance), a new Availability & reaching you section (working hours, response-time expectations, notification channel), a new Decision authority section (unilateral action vs sign-off, optional/deletable for solo users), a scannable vibe-check table (mood → signal → what to do) replacing prose bullets, an “if I go quiet” playbook, a running jokes & call signs section, and a review cadence note in the Update log.- README badge — new
User Profile: documentedbadge linking toUser-Profile.md, alongside the existing License/Obsidian/Hermes/OpenClaw/CI/Changelog badges. - README “Known issues / Roadmap” section — checkbox list surfacing 4 known bugs (missing
Projects/Hermes-Agent-Vault-Setup.mdhub note referenced by 6 files, hardcoded 4-agent-team assumption in 5 files, Supermemory-only memory pipeline assumptions, a stale skill-count number) and 4 features under consideration (skill-usage breakdown, delta-since-last-visit banner, recent Memory-Review promotions log, storage/file-count stats) — tracked in the open instead of buried in commit history.
[1.11.0] — 2026-09-16
Added
Dashboard-Beta.md— opt-in, website-style card redesign ofDashboard.md. Same underlying data sources, same level of detail, nothing trimmed — just restyled as a card grid with a KPI strip up top instead of a plain vertical stack. Enable via Settings → Appearance → CSS snippets → toggledashboard-beta. New sections beyond a straight restyle of the original:- Welcome header — live clock, time-of-day mood-based greeting, and an editable brand title/mantra (click-to-edit,
localStorage-only — never written to any file, never committed). - Today’s focus — click-to-edit personal focus note,
localStorage-only. - Quick actions — buttons that run real Obsidian commands (new Daily Review, open Memory-Review, open Vault Audit report, open Daily Timeline).
- Session calendar — a month-grid with dots marking days that have archived
Daily/sessions; click a day to open it. - Weather — optional OpenWeatherMap widget. Requires pasting your own free API key into a settings popup on first use; the key lives only in that Obsidian window’s
localStorage, never in a file, never in git. - On this day — surfaces
Daily/sessions from the same month/day in past years; renders nothing at all when there’s no match. - Ideas adapted from the Atlas and Komorebi dashboards in InlitX/Obsidian-Dashboard-Gallery (MIT) — kept the concepts, dropped what didn’t fit an agent-memory vault (e.g. Komorebi’s weather widget now needs an explicit city+key instead of a hardcoded default; personalization stays
localStorage-only, never file-based). - Card-grid CSS ships as
.obsidian/snippets/dashboard-beta.css, enabled by default in.obsidian/appearance.json.
- Welcome header — live clock, time-of-day mood-based greeting, and an editable brand title/mantra (click-to-edit,
[1.10.0] — 2026-09-14
Added
- Activity heatmap on
Dashboard.md— a GitHub-style, day-wise calendar heatmap (18 weeks × 7 days) showing token usage intensity per day, reusing the existingSkills-Notes/Token-Usage.logdata (no new script or cron job needed). Color intensity scales toward the active theme’s accent color via 4 steps, so it matches whichever theme (Nemoclaw, Tokyo Night, etc.) is active. Hover any cell for the exact date, tokens, and session count. Built with plain colored<div>cells (not SVG) to avoid the Dataview parser fragility that broke the earlier token-trend graph in v1.5.1–v1.5.3. Scripts/seed_sample_data.py— opt-in sample/demo data generator (not shipped pre-populated, addresses the “empty vault on first open” problem from issue discussion around #9 without the staleness risk of committing fake data by default). Run it yourself to populateDaily/,Memory-Review/,Projects/, andSkills-Notes/Token-Usage.logwith realistic-looking fake sessions/candidates/a project note, so a freshly installed vault’s Dashboard and graph view show a populated state instead of empty. Every generated file/entry is taggedsample: true(or[sample]in the token log) for easy removal later.
[1.9.1] — 2026-09-14
Changed
INSTALL_PROMPT.md— all 4 cron-job creation prompts now check before creating. Previously the wording only asked the agent to check for a conflicting archiving job before creating the hourly archiver; it didn’t explicitly tell it to skip creation if a job with the same name already existed for any of the 4 cron prompts (hourly archive, weekly vault audit, weekly agent performance, and the combined master install+cron prompt). Each now explicitly instructs: callcronjob_manage(action='list')first, and if a job with that name (or targeting the same vault Daily/ folder) already exists, don’t create a duplicate — just report that it’s already set up.
[1.9.0] — 2026-09-14
Added
- Light-mode variant of the Nemoclaw theme (fixes #2) — added a full
.theme-lightblock to.obsidian/themes/Nemoclaw/theme.css(all CSS variables + structural touches mirrored from the existing.theme-darkblock, same NVIDIA-green accent darkened for AA contrast on white surfaces). Switch via Settings → Appearance → Base color scheme → Light while Nemoclaw is active. Theme manifest bumped to 1.1.0. Skills-Notes/Kanban-Usage.md(fixes #3) — new doc covering suggested default columns (Backlog/In Progress/Blocked/Done), how Kanban cards relate toProjects/*.mdnotes (link-don’t-duplicate pattern), and cross-platform behavior notes for the bundledobsidian-kanbanplugin. Linked fromMOC.md.
[1.8.0] — 2026-09-14
Added
- OpenClaw badge in README, alongside the existing Hermes badge.
Fixed
update.sh/update.ps1merge conflicts onUser-Profile.md(fixes #5) — a user who fills inUser-Profile.mdbefore or independently of a template update could hit a hard “both-added” git merge conflict on every futureupdate.shrun, since the template also ships its own (blank) copy of the same filename. Both update scripts now register a local-onlymerge=oursgit attribute forUser-Profile.mdon every run: the first pull still delivers the blank scaffold to new vaults as normal, but every pull after that silently keeps the user’s local content on conflict instead of stopping with conflict markers. This is vault-local config (.git/info/attributes), never synced to the template repo itself.- Conflict-resolution tip added to both update scripts’ failure output, and a new “Resolving update.sh/update.ps1 merge conflicts” section in
CONTRIBUTING.md, covering the remaining conflict class (customized.obsidian/appearance.json/ themetheme.css) that the merge driver doesn’t cover.
[1.7.1] — 2026-09-14
Fixed
- Personal Data Guard workflow — the v1.7.0 release’s guard job failed on push because its allow-list was missing
Daily/Timeline.md,Daily/Chat-Correlation.md, andDaily/.gitkeep, and its empty-tree fallback re-flagged every pre-existing template file as “new” whenevergithub.event.beforewas the null SHA. Completed the allow-list and changed the fallback to diff against the last commit instead of the empty tree.
[1.7.0] — 2026-09-14
Added
try.sh/try.ps1— copy the template into a scratch temp directory and open it in Obsidian with zero commitment: no Hermes CLI registration, no cron setup, doesn’t touch your real Obsidian config. Delete the copy any time.uninstall.sh/uninstall.ps1— cleanly remove a vault installation: unsetsenv.HERMES_VAULT_PATHif it points at the target vault, warns about any Hermes cron job that may still reference it, and optionally deletes the vault directory after a typed confirmation.- CI: Personal Data Guard (
.github/workflows/personal-data-guard.yml) — new workflow that fails a push/PR if it touches disallowed personal-content paths (Daily/,Memory-Review/,Research/,.smart-env/, plugindata.jsonfiles) outside the template’s own allowed exceptions (Memory-Review/TEMPLATE.md,Daily/README.md,Research/README.md). Automates whatCONTRIBUTING.mdpreviously only asked contributors to self-check. - CI:
consolidate_memory.pycontent-correctness tests (Scripts/ci/test_consolidate_memory.py) — 6 tests asserting on actual output content (not just “did a file get written”): exact-duplicate dedup, fuzzy near-duplicate dedup, secret-string scrubbing, false-positive check on normal facts, decided-candidate exclusion (regression test for the v1.1.0 hash-prefix bug), and state-file JSON validity. - CI: extended runtime smoke-test —
generate_skill_links.pynow also runs against the fixture vault in theruntime-smoke-testjob (alongside the existingvault_audit.py,agent_performance.py,hourly_archive.pycoverage).pull_supermemory.pyandtrend_digest.pyare intentionally excluded — the former needs a real/mocked network API + key, the latter needssentence-transformers, a heavy ML dependency not worth adding to this lint job. - CI badge in README, linking to the Lint Scripts Actions workflow.
Changed
CONTRIBUTING.md— notes that the Personal Data Guard CI job now automatically enforces the “never commit real vault content” rule, not just an honor-system reminder.
[1.6.0] — 2026-09-11
Added
- User-Profile.md — new template note documenting the human user’s identity, communication preferences, technical environment, standing facts, current focus, interests, and boundaries for the agent. Includes a distinctive “What the agent has noticed about you” section, written by the agent (not the user) based on real interaction patterns — a mirror, not a form.
- Nemoclaw theme — new custom dark theme bundled in
.obsidian/themes/Nemoclaw/, NVIDIA-inspired black background with signature green (#76b900) accents, monospace headings, and a subtle grid overlay. Now the template’s default theme (was Tokyo Night, still available as an alternative via Settings → Appearance). - MOC.md and Dashboard.md link to User-Profile.md for discoverability.
[1.5.3] — 2026-09-11
Removed
- Token usage trend graph — Removed the live SVG line graph visualization of token usage from Dashboard.md to simplify the token usage section.
[1.5.0] — 2026-09-11
Added
- Token usage tracking —
hourly_archive.pynow extracts prompt/completion tokens from JSONL exports and maintains a running total inSkills-Notes/Token-Usage.log. Dashboard shows live token usage (today, all-time, 7-day trend, day-over-day). - Token usage trend graph — Added live SVG line graph visualization of token usage over the last 30 days to Dashboard, showing daily totals with axis labels and data points.
- Vault integrity audit —
vault_audit.pyscans for broken wikilinks, stale Memory-Review entries (>30 days), duplicate sessions in manifest, and orphaned files. WritesSkills-Notes/Vault-Audit-Report.md. Dashboard shows summary. - Agent performance dashboard —
agent_performance.pyanalyzes session archives for skill usage frequency, tool call patterns, daily trends, top sessions by tokens. WritesSkills-Notes/Agent-Performance.md. Dashboard shows snapshot. - Dashboard tiles for all three new features (Token usage, Vault audit, Agent performance) with click-through links.
Skills-Notes/Token-Usage.logstarter file.- Updated
INSTALL_PROMPT.mdwith optional weekly cron prompts for vault audit (Sunday 2 AM) and agent performance (Monday 3 AM). - README script table updated with three new automation scripts.
Changed
hourly_archive.py— now dual-exports (markdown for vault + JSONL for token extraction), idempotent token logging.INSTALL_PROMPT.md— added optional weekly cron prompts for vault audit and agent performance.
[1.4.0] — 2026-09-10
Added
- Dashboard.md — new “Vault health” section: flags a stale/dead hourly archiver (based on the newest Daily/ session’s timestamp) and a growing Memory-Review backlog, both read-only against files already in the vault.
Scripts/hourly_archive.py— exports Hermes sessions from the last hour, reorganizes them intoDaily/YYYY/MM/DD/, and maintains a dedupedDaily/manifest.jsonl. Designed to be idempotent — safe to re-run.Scripts/pull_supermemory.py— pulls all memories for a Supermemory container tag and saves them as both a raw JSON dump and a human-readable markdown note.CHANGELOG.mdand.github/ISSUE_TEMPLATE/(bug report + feature request templates, Discussions link).INSTALL_PROMPT.md— new “Upgrade prompt” section for pulling template updates into an existing vault via a single Hermes paste (wrapsupdate.sh/update.ps1).
Changed
.gitignore— added.smart-env/.
[1.3.0] — 2026-09-10
Added
- In-vault update notifications:
Dashboard.mdnow checks GitHub’s releases API live and shows a banner if a newer template version is available (fails soft if offline). VERSIONfile — tracks the installed template version; carried through fresh installs and future updates.update.sh/update.ps1— safely pull template updates into an already-installed vault via a read-only git remote and 3-way merge, so hand-edited files surface as conflicts instead of being silently overwritten. Personal content (Daily/,Memory-Review/*,Projects/*beyond README, plugindata.json) stays protected via the vault’s existing.gitignore.
[1.2.0] — 2026-09-10
Added
Dashboard.md— single landing note with live Dataview views: active projects, open Memory-Review candidates, recent Daily sessions, installed-skills count.Projects/Projects.base— native Obsidian Bases table view overProjects/(all projects grouped by status, active-only filter).- Bundled Dataview plugin updated to 0.5.70.
Changed
- README opening rewritten with a punchier hook instead of leading with a feature list; updated hero screenshot.
- Fixed dead links in
MOC.mdtoSkills-Notes/Installed-Skills-IndexandTeam-Profiles-Index.
[1.1.0] — 2026-09-08
Added
Scripts/generate_skill_links.py— generates a Skill-to-Chat-Links index per session.Skills-Notes/Installed-Skills-Index.mdandTeam-Profiles-Index.mdstarter tables.
Fixed
Scripts/consolidate_memory.py—decided_hasheswas comparing full 40-char hashes against 8-char prefix keys, so already-approved candidates kept reappearing on every run instead of staying excluded.
Changed
- Consolidated
New-TrendDigest.ps1andWrite-TrendDigest.ps1(near-duplicate scripts) into one.
[1.0.0] — 2026-09-06
Added
- Initial template release: Obsidian vault structure (Daily/, Memory-Review/, Projects/, Research/, Skills-Notes/), Kanban plugin, 3 note templates (Project, Daily-Review, Research-Note), Dataview query library,
Canvases/Memory-Pipeline.canvasvisual map. - Cross-platform installers (
install.sh/install.ps1),INSTALL_PROMPT.mdfor one-paste setup via a Hermes agent. - CI (bash/python/powershell syntax checks), wiki, MIT license.