Obsidian-powered daily logs, session logs, and context-reset handoffs for AI agents.
| Quick Start install the skills |
/prepforreset make it a command |
Agent Prompt paste into your agent |
Wiki Janitor optional reconciliation |
Created by Jacobi Lange — @cobi_bean / GitHub @cobibean
Agent Memory Wiki is a portable skill bundle for giving AI agents a durable, human-readable operating memory in an Obsidian vault.
It turns this:
“I’m about to reset the context window. Preserve what matters.”
into this:
Daily Logs/2026-06-13.md
Session Logs/2026-06-13-agent-memory-wiki-open-source.md
Janitor Reports/2026-06-14-last-24h.md
The core command is /prepforreset: a context-reset workflow that writes a curated Daily Log and Session Log, then returns a short copy/paste handoff for the next agent context.
This is not raw transcript dumping. The notes are meant to help humans and future agents recover the work: decisions, rationale, alternatives, verified outcomes, artifacts, blockers, open loops, gotchas, and source references.
Version 2.0.0: one canonical
obsidian-memory-wikiskill now owns the behavior. The familiarobsidian,prepforreset, andwikijanitornames remain as small compatibility aliases, so existing workflows keep working without maintaining three competing implementations.
| Skill | Role | What it does |
|---|---|---|
obsidian-memory-wiki |
Canonical | Owns vault operations, reset capture, janitor behavior, safety rules, templates, and fleet rollout guidance. |
obsidian |
Compatibility alias | Routes low-level vault operations to the canonical parent. |
prepforreset |
Compatibility alias | Keeps /prepforreset working for daily/session capture and the final handoff. |
wikijanitor |
Compatibility alias | Keeps manual janitor/reconciliation workflows working. |
New automation and scheduled jobs should load only:
--skills obsidian-memory-wiki
- Bash
- Python 3
- Hermes Agent
- An existing Markdown/Obsidian vault, or permission to initialize one
Clone the repository, then install the bundle into a Hermes profile:
git clone https://github.com/cobibean/agent-memory-wiki.git
cd agent-memory-wiki
# Existing vault, named profile
bash scripts/install-hermes.sh \
--profile my-agent \
--vault "$HOME/Documents/Obsidian/agent-wikis/my-agent-wiki"Or create a safe starter vault at the same time:
bash scripts/install-hermes.sh \
--profile my-agent \
--vault "$HOME/Documents/Obsidian/agent-wikis/my-agent-wiki" \
--init-vaultFor the default profile, omit --profile. To target an exact Hermes home directly, use --hermes-home PATH.
The installer:
- treats explicit
--profileor--hermes-homeas authoritative over inheritedHERMES_HOME; - rejects unresolved interpolation-like paths containing literal
${...}segments; - supports spaces and special characters in paths;
- installs the canonical parent and all three aliases by default;
- writes the vault path to
skills.config.obsidian_memory_wiki.vault_pathin the targetconfig.yaml; - keeps
.envreserved for secrets instead of normal skill configuration; - creates a unique timestamped backup before replacing an existing package;
- keeps relevant configuration and backup files private.
Use --dry-run to inspect the resolved profile, destinations, and vault before making changes. Use --no-aliases for a parent-only install.
Start a fresh session—or run /reload-skills where your Hermes version supports it—then try:
/prepforreset
See docs/installation.md for upgrades, rollback, generic-agent installation, and readiness checks.
Copy the canonical package into the skill directory your agent runtime uses:
skills/note-taking/obsidian-memory-wiki/
Copy the compatibility aliases too if you want the familiar command names:
skills/note-taking/obsidian/
skills/note-taking/prepforreset/
skills/note-taking/wikijanitor/
Configure an absolute vault path using your runtime's non-secret skill configuration. If no native config system exists, OBSIDIAN_VAULT_PATH remains the compatibility fallback.
Create—or allow the installer to create—the standard folders:
Daily Logs/
Session Logs/
Janitor Reports/
Templates/
Then map /prepforreset to the Reset Preparation phase of obsidian-memory-wiki.
Hermes exposes installed skills as slash commands by normalizing each skill's frontmatter name.
Because the compatibility skill is named:
name: prepforresetit becomes:
/prepforreset
Start a fresh session or refresh the skill command cache after installation. If a chat platform does not show the command in autocomplete, try typing /prepforreset manually; some platform menus are capped even when a skill is installed and dispatchable.
The compatibility alias loads the canonical parent and runs its Reset Preparation phase. New scripts and cron jobs should still name obsidian-memory-wiki directly.
If your runtime has a command registry, define the equivalent of:
/prepforreset -> Load obsidian-memory-wiki and run Reset Preparation:
resolve the configured vault, update the Daily Log and Session Log,
verify the files, then return a lean handoff.
If your runtime has no command registry, keep the prompt below as a reusable trigger.
Paste this after installing the bundle:
You have access to Agent Memory Wiki v2.
- `obsidian-memory-wiki` is the canonical skill.
- `obsidian`, `prepforreset`, and `wikijanitor` are compatibility aliases.
When I type `/prepforreset` or say “prep for reset” / “prepare for a context window”:
1. Load and follow `obsidian-memory-wiki`.
2. Run its Reset Preparation phase.
3. Resolve the vault from the runtime's native skill configuration. Use
`OBSIDIAN_VAULT_PATH` only as a compatibility fallback. If neither provides
a concrete absolute path, stop and ask me; never guess a vault.
4. Keep every write inside the resolved vault root.
5. Search existing Daily Logs and Session Logs before creating new notes.
6. Update or create:
- `Daily Logs/YYYY-MM-DD.md`
- `Session Logs/YYYY-MM-DD-short-topic-slug.md`
7. Curate rather than dump the transcript. Capture the goal, current status,
decisions, rationale, alternatives, artifacts, commands/tests and real
outcomes, verification, blockers, lessons, and next concrete actions.
8. Never write secret values. Reference only credential locations such as
`.env`, Keychain, or secret-manager paths.
9. Add backlinks between the daily and session notes.
10. Verify both artifacts, then return their paths and a lean copy/paste handoff.
For manual vault operations, use the Vault Operations phase. For `/wikijanitor`
or scheduled reconciliation, use the Wiki Janitor Maintenance phase.A longer standalone version lives at docs/agent-copy-paste-prompt.md.
Use one isolated vault per persistent agent:
<agent>-wiki/
├── Home.md
├── Vault Guide.md
├── Daily Logs/
├── Session Logs/
├── Janitor Reports/
├── Templates/
└── .obsidian/
Do not silently point every agent at one shared vault. Do not use an entire code repository as a vault merely because it contains Markdown.
--init-vault creates the starter structure without overwriting existing files. Open the vault in Obsidian and enable the built-in Daily Notes and Templates plugins if you want Obsidian-native shortcuts.
| Artifact | Purpose |
|---|---|
Daily Logs/YYYY-MM-DD.md |
Standalone day summary with decisions, verified outcomes, open loops, routing candidates, and links. |
Session Logs/YYYY-MM-DD-short-topic-slug.md |
Deeper session distillation with state, commands/tests, verification, blockers, and next actions. |
Janitor Reports/YYYY-MM-DD-...md |
Optional reconciliation report describing reviewed sources, routine fixes, gaps, uncertainty, and follow-up. |
| Chat handoff | Lean bridge into the next context window; the durable details stay in the vault. |
- Curate, don't dump. Preserve durable understanding, not transcript volume.
- Human-readable first. Clear headings, dates, wikilinks, rationale, and source references help both people and agents.
- Operating memory, not universal truth. Repositories, manifests, issue trackers, and domain systems remain authoritative for their own artifacts; the wiki points back to them.
- No silent mutation outside the vault. Routing candidates may suggest memory, skill, manifest, or backlog updates, but those stores change only when separately requested.
- Secrets are never note content. Record credential locations, never credential values.
- One vault per persistent agent by default. Shared access requires an explicit design decision.
- Portable by default. The package does not assume a private fleet, host path, vendor runtime,
flock, or GNUtimeout.
The Wiki Janitor is a conservative reliability layer for missed or incomplete capture. It is optional; manual /prepforreset is useful for most persistent agents, while recurring model-powered reconciliation is justified only when activity and missed-capture risk warrant it.
The included wrapper:
- runs on Linux and stock macOS;
- prevents overlap with an atomic profile-local lock when
flockis unavailable; - uses a bounded Python subprocess fallback when
timeout/gtimeoutis unavailable; - starts Hermes in its own process group and terminates the complete group on timeout;
- invokes Hermes directly with an explicit profile and argument array;
- accepts only one exact silent marker or one complete ordered notify envelope;
- suppresses malformed, mixed, partial, duplicate, reversed, and unmarked output;
- never forwards model-authored digest text;
- emits only a fixed, secret-free notification when review-worthy findings exist.
Routine-only reconciliation is silent. The newest protected Janitor Report—not raw cron output—is the review surface.
Follow docs/scheduling-wikijanitor.md and verify a real created report plus delivery behavior, not only scheduler status.
Update the checkout, then rerun the installer with the same explicit profile and vault:
git pull --ff-only
bash scripts/install-hermes.sh \
--profile my-agent \
--vault "/absolute/path/to/my-agent-wiki"Each real install creates a unique timestamped backup under the target Hermes home and preserves replaced skills plus the previous profile config.yaml when present. The installer prints the exact backup location.
To roll back:
- Stop or isolate only the affected session/gateway if needed.
- Restore the desired skill directories and
config.yamlfrom the printed backup. - Start a fresh session or reload skills.
- Verify the resolved vault before writing.
The installer never deletes vault notes.
See CHANGELOG.md for v2 compatibility changes.
skills/note-taking/obsidian-memory-wiki/ Canonical skill, references, templates
skills/note-taking/obsidian/ Vault-operations compatibility alias
skills/note-taking/prepforreset/ Reset-capture compatibility alias
skills/note-taking/wikijanitor/ Janitor compatibility alias
scripts/install-hermes.sh Profile-aware installer
scripts/wiki-janitor-cron-wrapper.sh.example
Portable scheduled wrapper
tests/ Behavioral regression tests
tools/validate.py Package/link/secret validation
docs/ Installation and operating guides
examples/ Native Hermes config example
| Guide | Purpose |
|---|---|
docs/installation.md |
Hermes and generic-agent installation, upgrade, rollback, and readiness. |
docs/architecture.md |
Canonical-parent architecture and compatibility model. |
docs/slash-command-setup.md |
How to expose and verify /prepforreset. |
docs/agent-copy-paste-prompt.md |
Full reusable setup prompt for another agent. |
docs/scheduling-wikijanitor.md |
Optional scheduled janitor setup and output contract. |
docs/security-and-secret-hygiene.md |
Path safety, secret handling, permissions, and public-repo hygiene. |
CHANGELOG.md |
Release history and v2 migration notes. |
Install the pinned development dependency, then run the same core checks used by CI:
python3 -m pip install -r requirements-dev.txt
python3 tools/validate.py
python3 -m unittest discover -s tests -v
python3 -m compileall -q tools tests
bash -n scripts/install-hermes.sh
bash -n scripts/wiki-janitor-cron-wrapper.sh.example
shellcheck scripts/install-hermes.sh scripts/wiki-janitor-cron-wrapper.sh.exampleCI exercises the package on Ubuntu and macOS, including explicit profile targeting, paths with spaces and special characters, idempotent replacement, restrictive config permissions, portable lock/timeout behavior, descendant cleanup, marker parsing, raw-output suppression, and live Hermes argument parsing where available.
Agent Memory Wiki is designed to preserve useful context without becoming a credential archive.
- Never store tokens, passwords, private keys, raw
.envcontents, OAuth responses, or credential-bearing URLs in notes. - Resolve and verify the vault root before every write.
- Reject writes that escape the resolved vault.
- Keep profile configuration and backups private.
- Treat model and tool output as sensitive until the wrapper's exact protocol has been validated.
Read docs/security-and-secret-hygiene.md before deploying the package in a shared, business, or client environment.
MIT. See LICENSE.