OpenViking memory plugin for Claude Code
npx claudepluginhub jimfm/ov-claudePersistent memory for Claude Code powered by OpenViking sessions
Claude Code memory plugin built on OpenViking Session memory.
Stop hook).SessionEnd, plugin calls session.commit() to trigger OpenViking memory extraction.memory-recall skill.ov.conf server.host + server.port, health check /health)./ov.conf in project root first~/.openviking/ov.conf if project config missing./.openviking/memory/examples/claude-memory-plugin/
├── .claude-plugin/
│ └── plugin.json
├── hooks/
│ ├── hooks.json
│ ├── common.sh
│ ├── session-start.sh
│ ├── user-prompt-submit.sh
│ ├── stop.sh
│ └── session-end.sh
├── scripts/
│ ├── ov_memory.py
│ └── run_e2e_claude_session.sh
└── skills/
└── memory-recall/
└── SKILL.md
This plugin requires an OpenViking configuration file. Choose one:
Option 1: Project-local config (recommended)
# Create ov.conf in your project root
cp $HOME/path-to-openviking/ov.conf ./ov.conf
Option 2: Global config (used for all projects)
# Set up global config (checked if project ov.conf missing)
mkdir -p ~/.openviking
cp $HOME/path-to-openviking/ov.conf ~/.openviking/ov.conf
The plugin will look for configuration in this order:
./ov.conf (project root) — takes precedence~/.openviking/ov.conf (global) — fallbackSessionStart
./ov.confUserPromptSubmit
Stop (async)
claude -p --model haiku when available; fallback to local summary)SessionEnd
memory-recall runs bridge command:
python3 .../ov_memory.py recall --query "<query>" --top-k 5
It searches:
viking://user/memories/viking://agent/memories/Then returns concise, source-linked memory summaries.
Run a real Claude headless session end-to-end. The script auto-detects paths relative to its location:
bash ./scripts/run_e2e_claude_session.sh
Or provide custom source config and prompt (useful if your OpenViking setup is elsewhere):
bash ./scripts/run_e2e_claude_session.sh \
$HOME/path-to-openviking/ov.conf \
"Custom prompt here"
Example with absolute paths:
bash /path/to/ov-claude/scripts/run_e2e_claude_session.sh \
$HOME/projects/OpenViking/ov.conf \
"Test prompt"
What the script does:
/tmp (one-time dependency install)../ov.conf from source config and injects HTTP server fields.claude -p session with this plugin, then triggers deterministic Stop + SessionEnd validation.session_state.json, ingested_turns >= 1, and session archive file creation../ov.conf when done../ov.conf nor ~/.openviking/ov.conf exists, hooks degrade safely and report status in systemMessage../.openviking/memory/session_state.json