Non-default graphs were second-class citizens — timers only maintained the default graph, git sync ignored named graphs, there was no way to create a graph without editing config manually, cross-graph edge errors were confusing, and utility scripts were hardcoded to the default graph. - Add `graph-create` CLI command + `create_graph()` in common.py, with custom path registration written to the default graph's _config.json - Add `scripts/maintain-all-graphs.sh` to loop decay/core/embed/reflect over all discovered graphs; update systemd services to call it - Refactor `memory-git-sync.sh` into sync_repo() function that iterates default + all named graphs with .git directories - Improve cross-graph edge ValueError to explain the same-graph constraint - Add --graph flag to edge-proposer.py and session_memory.py - Update systemd/README.md with portable paths and new architecture Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cognitive-memory-daily.service | ||
| cognitive-memory-daily.timer | ||
| cognitive-memory-embed.service | ||
| cognitive-memory-embed.timer | ||
| cognitive-memory-weekly.service | ||
| cognitive-memory-weekly.timer | ||
| README.md | ||
Cognitive Memory Systemd Timers
Reference copies of the systemd user units that automate memory maintenance.
Services
| Unit | Schedule | What it does |
|---|---|---|
cognitive-memory-daily |
daily | Decay scores, regenerate CORE.md, git sync — for ALL graphs |
cognitive-memory-embed |
hourly | Refresh embeddings (skips if unchanged) — for ALL graphs |
cognitive-memory-weekly |
weekly | Run reflection cycle — for ALL graphs |
All three services now call scripts/maintain-all-graphs.sh instead of
individual claude-memory commands. The script discovers every graph via
claude-memory graphs (default graph + named graphs under
~/.local/share/cognitive-memory-graphs/) and runs the appropriate command
for each one, passing --graph <name> for non-default graphs.
Named graph directories that do not exist on disk are silently skipped.
Scripts
| Script | Purpose |
|---|---|
scripts/maintain-all-graphs.sh |
Loop decay/core/embed/reflect over all graphs |
scripts/memory-git-sync.sh |
Git commit+push for default graph and all named git repos |
Install / Update
# Copy units into place (adjust source path to your cognitive-memory install)
CMDIR=~/.claude/skills/cognitive-memory # or /mnt/NV2/Development/cognitive-memory
cp "$CMDIR"/systemd/*.service "$CMDIR"/systemd/*.timer \
~/.config/systemd/user/
# Reload and enable
systemctl --user daemon-reload
systemctl --user enable --now cognitive-memory-daily.timer
systemctl --user enable --now cognitive-memory-embed.timer
systemctl --user enable --now cognitive-memory-weekly.timer
Verify
systemctl --user list-timers 'cognitive-memory-*'
systemctl --user start cognitive-memory-daily.service # manual test run
journalctl --user -u cognitive-memory-daily.service --since today
Manual test (single graph)
# Default graph only
claude-memory decay && claude-memory core
# Named graph
claude-memory --graph paper-dynasty decay && claude-memory --graph paper-dynasty core
# All graphs at once (adjust path to your install)
/path/to/cognitive-memory/scripts/maintain-all-graphs.sh --daily