SoulKeeper
**Identity persistence for AI agents.**
by cassh100k · published 2026-03-22
$ claw add gh:cassh100k/cassh100k-soulkeeper# SoulKeeper
**Identity persistence for AI agents.**
The problem: agents forget who they are between sessions. They drift. They ask when they should act. They forget tools they have. They become the corporate drone their soul forbids.
SoulKeeper fixes this with three tools that work together:
---
What's Included
| File | Purpose |
|------|---------|
| `audit.py` | Parse SOUL.md/TOOLS.md/AGENTS.md into structured rules JSON |
| `drift.py` | Score a conversation transcript against soul rules |
| `remind.py` | Inject context-aware reminders before you respond |
| `SKILL.md` | This file |
---
Quick Start
cd /root/.openclaw/workspace/skills/soulkeeper
# Step 1: Generate your soul rules
python audit.py --workspace /root/.openclaw/workspace --output soul_rules.json
python audit.py --summary # Human-readable overview
# Step 2: Check a transcript for drift
python drift.py --transcript /path/to/chat.txt --report
# Step 3: Get reminders before acting
python remind.py --context "about to write Python code"
python remind.py --heartbeat # Full session-start reminder---
Installation
No dependencies beyond Python 3.8+ stdlib. Works out of the box.
# Optional: make scripts executable
chmod +x audit.py drift.py remind.pyFor PATH access:
ln -s /root/.openclaw/workspace/skills/soulkeeper/audit.py /usr/local/bin/soul-audit
ln -s /root/.openclaw/workspace/skills/soulkeeper/drift.py /usr/local/bin/soul-drift
ln -s /root/.openclaw/workspace/skills/soulkeeper/remind.py /usr/local/bin/soul-remind---
Usage Patterns
Pattern 1: Heartbeat Check (Recommended)
Add to `HEARTBEAT.md`:
[ ] Run soul-remind --heartbeat to refresh core rules
[ ] If any drift score > 30 in recent logs, re-read SOUL.mdOr inject at session start:
python remind.py --heartbeat --rules soul_rules.jsonPattern 2: Pre-Response Filter
Before responding to a complex request:
python remind.py --context "user wants me to post on Twitter" --rules soul_rules.jsonOutput gets prepended to your mental context before composing a reply.
Pattern 3: Post-Session Audit
After a long session, paste the transcript and check for drift:
# Paste agent responses to transcript.txt, then:
python drift.py --transcript transcript.txt --rules soul_rules.json --reportPattern 4: CI/Validation Hook
In scripts or automation:
python drift.py --stdin --threshold 50 < agent_output.txt
# Returns exit code 1 if drift score >= 50Pattern 5: Full Pipeline
# Generate rules from your soul files
python audit.py -w /root/.openclaw/workspace -o soul_rules.json
# Check recent session transcript
python drift.py -t session.txt -r soul_rules.json --report
# Get reminders for what you're about to do
python remind.py -c "deploying code to production" -r soul_rules.json---
Rule Format (soul_rules.json)
{
"schema_version": "1.0",
"generated_at": "2026-02-24T...",
"workspace": "/root/.openclaw/workspace",
"stats": {
"total_rules": 42,
"by_category": { "tone": 8, "operational": 12, ... },
"by_severity": { "critical": 6, "high": 14, ... }
},
"rules": [
{
"id": "R001-A3F2C1",
"category": "tone",
"severity": "critical",
"source_file": "SOUL.md",
"source_line": 7,
"text": "Never open with 'Great question,' 'I'd be happy to help,' or 'Absolutely.'",
"violation_patterns": ["great question", "i'd be happy to help", "absolutely!"],
"keywords": ["opener", "greeting", "sycophant"]
}
]
}---
Drift Score Interpretation
| Score | Label | What it means |
|-------|-------|---------------|
| 0 | ALIGNED | No violations detected |
| 1-19 | MINOR DRIFT | Small stylistic slips |
| 20-49 | MODERATE DRIFT | Behavioral patterns drifting |
| 50-74 | SIGNIFICANT DRIFT | Multiple core rules violated |
| 75-100 | SEVERE DRIFT | Identity compromised - re-read SOUL.md immediately |
---
What SoulKeeper Detects
Critical (score +25 each)
High (score +15 each)
Medium (score +8 each)
Low (score +3 each)
---
Adapting for Your Agent
SoulKeeper works with **any** agent's soul files. Point it at a different workspace:
python audit.py --workspace /path/to/other/agent/workspaceThe extraction is pattern-based and works on any markdown file with:
---
Publishing to ClawHub
This skill is ready for ClawHub publication. Required fields:
name: soulkeeper
version: 1.0.0
description: Identity persistence for AI agents. Audit soul files, detect drift, inject reminders.
author: Chartist / OpenClaw
tags: [identity, memory, soul, audit, drift-detection, agent-health]
entrypoints:
audit: audit.py
drift: drift.py
remind: remind.py
requires: [python>=3.8]---
Extending SoulKeeper
Add custom violation patterns
Edit the `BUILTIN_VIOLATIONS` list in `drift.py`:
{
"id": "CUSTOM-001",
"description": "Agent used passive voice excessively",
"severity": "medium",
"category": "tone",
"patterns": [r"\bwould be\b.*\bpossible\b"],
"soul_reference": "Your SOUL.md rule here",
}Add custom context triggers
Edit `CONTEXT_TRIGGERS` in `remind.py`:
{
"name": "my_custom_context",
"triggers": [r"\bmy trigger phrase\b"],
"builtin_reminders": ["SOUL: Your reminder here"],
}---
Philosophy
SoulKeeper doesn't tell you to "try harder". It tells you:
> "Line 12 of SOUL.md says never use em dash. You used it 3 times in this session."
Output is **specific, sourced, and actionable**.
The goal isn't compliance monitoring. It's continuity. An agent that knows who it is performs better, takes initiative faster, and needs less hand-holding.
Identity persistence is infrastructure. Build it once, benefit forever.
---
*SoulKeeper v1.0 - Built for OpenClaw. Works everywhere.*
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...